dir - لیست گرفتن از محتویات مسیر

dir - از این دستور برای خروجی گرفتن از محتویات مسیر استفاده می‌شود.

شکل کلی دستور:

$ dir [options]

از این دستور برای گرفتن اطلاعات فایل‌های موجود در مسیر استفاده می‌شود. اگر مسیری برای این دستور مشخص نکنید به صورت پیش‌فرض فایل‌های مسیرجاری را نشان می‌دهد.

در ابتدا از دستور pwd استفاده کرده‌ایم که نشان دهیم در کدام مسیر هستیم:

$ pwd
/home/name
$ dir
Desktop    examples.desktop   Music        Public
Documents  glassfish-3.1.2.2  NetBeansProjects    Templates
Downloads  Login          Pictures        Videos

که در دستور بالا، محتویات پوشه‌ی خانگی من را نشان می‌دهد.

نکته‌ای که هست، اطلاعات به صورت مرتب شده هستند. برای مثال من ۶ فایل به اسم‌های 0،a،b،d،100 و c ایجاد کرده‌ام در خروجی نحوه‌ی ترتیب آن‌را دقت کنید:

$ dir
0    a    c  
100  b    d  

که در به ترتیب 0 100 d c b a در خروجی به صورت ستون درآمده دیده می‌شود (در ادامه با نحوه‌ی غیرفعال کردن آن آشنا خواهید شد).

از این دستور هم همانند بقیه دستورات در برنامه‌نویسی به شما بسیار کمک خواهد کرد. در مثال ساده زیر، من ابتدا پوشه‌ی مد نظر خودم را با دستور find پیدا کرده، و خروجی حاصل از آن دستور را در یک متغیر قرارمی‌دهم و با استفاده از دستور echo خروجی حاصل از دستور find را به نمایش می‌گذارم و سپس با استفاده از دستور dir محتویات آن را در خروجی چاپ می‌کنم:

# var=$(find /home/name/Desktop | egrep "(myfolder)")
# echo $var
/home/name/Desktop/myfolder
# dir $var
/home/name/Desktop/myfolder:
a  b

این یک مثال ساده برای نحوه‌ی بکار بردن این دستور در اسکریپت‌های روزانه‌ی شما بود. همین‌طور که در خروجی مشاهده می‌کنید، محتویات پوشه‌ی myfolder دو فایل a و b است.

این دستور برخلاف ساده بودن آن، گزینه‌های اختیاری فراوانی دارد که می‌توانید آن‌را در کارهای روزمره خود به وفور استفاده کنید.

گزینه‌های اختیاری:

a-: فایل‌هایی که پنهان هستند را در خروجی نمایش می‌دهد. در مثال زیر فایل a. در myfolder مخفی است که در خروجی اول در خروجی نمایش داده نمی‌شود ولی با اضافه کردن این گزینه‌ی اختیاری این فایل پنهان شده را می‌توانید ببینید.

$ dir /home/name/Desktop/myfolder
b
$ dir -a /home/name/Desktop/myfolder
.  ..  .a  b

d-: مسیر را به جای محتویات نشان می‌دهد:

$ dir -d /home/name/Desktop/myfolder
/home/name/Desktop/myfolder

f-: گفته شد که به‌صورت پیش‌فرض فایل‌ها مرتب شده در خروجی نشان داده می‌شوند. با استفاده از این گزینه‌ی اختیاری می‌توان این عمل را غیرفعال کرد.

$ dir -f /home/name/Desktop/myfolder
..  b  .a  .
$ dir -a /home/name/Desktop/myfolder
.  ..  .a  b

نکته: اگر توجه کرده باشید در گزینه‌ی اختیاری f-فایل پنهان هم در خروجی نمایش داده شده است. به این منظور است که این گزینه‌ی اختیاری به صورت داخلی از گزینه‌ی اختیاری a-استفاده می‌کند.

l-: این گزینه مخفف long بوده و اطلاعات مفیدی در اختیاری شما می‌دهد. (شبیه دستور ls با گزینه‌ی اختیاری l-می‌ماند.)

$ dir -l /home/name/Desktop/myfolder
total 4
-rw-rw-r-- 1 Owner Group 3 May 31 22:03 b

که در ابتدا مجوزها را نشان می‌دهد، دومین آن نشان دهنده‌ی تعداد لینک ها خواهد بود که در اینجا یک می‌باشد، سپس نام کاربری مالک، و بعد نام گروه و در آخر، آخرین زمان اصلاح شده را نشان می‌دهد (برای آشنایی با زمان اصلاح، زمان تغییر، زمان دسترسی به دستور stat مراجعه کنید).

g-: شبیه گزینه‌ی اختیاری l-است با این تفاوت که مالک را نشان نمی‌دهد و فقط نام گروه را نشان می‌دهد :

$ dir -l /home/name/Desktop/myfolder
total 8
-rw-rw-r-- 1 Owner Group 0 May 31 22:56 a
-rw-rw-r-- 1 Owner Group 3 May 31 22:03 b
$ dir -g /home/name/Desktop/myfolder
total 8
-rw-rw-r-- 1 Group 0 May 31 22:56 a
-rw-rw-r-- 1 Group 3 May 31 22:03 b

i-: شماره‌ شاخص برای هر فایل را نشان می‌دهد:

$ dir -i /home/name/Desktop/myfolder/b
281764 /home/name/Desktop/myfolder/b

m-: محتویات حاصل در خروجی را با یک کاما جدا می‌کند:

$ dir -m /home/name/Desktop/myfolder
a, b

نکته: این عمل شاید در ظاهر بی‌فایده به نظر برسد اما برای عبارات منظمی که در اسکریپت‌های خود به کار می‌برید بسیار سودمند خواهد بود.

n-: همانند گزینه‌ی اختیاری l-است با این تفاوت که شماره‌های منحصر به فرد گروه و کاربر را نشان می‌دهد:

$ dir -n /home/name/Desktop/myfolder
total 4
-rw-rw-r-- 1 1000 1000 3 May 31 22:03 b

Q-: نام‌های حاصل از لیست را در یک جفت کوتیشن نمایش می‌دهد:

$ dir -Q /home/name/Desktop/myfolder
"a"  "b"

r-: مرتب کردن را عکس می‌کند:

$ dir /home/name/Desktop/myfolder
a  b
$ dir -r /home/name/Desktop/myfolder
b  a

R-: گزینه‌ی اختیاری قدرتمند که به صورت بازگشتی زیرمسیرها را نشان می‌دهد. در مثال زیر به علت طولانی بودن خروجی از more استفاده کرده‌ایم:

$ dir -R /etc | more
/etc:
acpi            grub.d              pcmcia
adduser.conf    gshadow             perl
adjtime         gshadow-            pkcs11
alternatives    gtk-2.0             pm
anacrontab      gtk-3.0             pnm2ppa.conf
anthy           hdparm.conf         polkit-1
apg.conf        host.conf           popularity-contest.conf
apm             hostname            ppp
apparmor        hosts               printcap
apparmor.d      hosts.allow         profile
apport          hosts.deny          profile.d
apt             hp                  protocols
at.deny         icedtea-web         pulse
at-spi2         ifplugd             python
avahi           ImageMagick         python2.7
--More--

نکته: ازآن‌جایی که این دستور به صورت بازگشتی عمل می‌کند ممکن است با خطای زیر روبه‌رو بشوید که نشان دهنده‌ی عدم دسترسی است:

dir: cannot open directory /etc/cups/ssl: Permission denied

S-: از این گزینه‌ی اختیاری برای مرتب کردن براساس سایز استفاده می‌شود. در دستور زیر ابتدا یک خروجی با استفاده از دستور ls می‌گیریم و سپس با استفاده از این گزینه‌ی اختیاری با توجه به سایز آن‌ها مرتب‌سازی را انجام می‌دهیم:

$ ls -lh /home/name/Pictures
total 884K
-rw-rw-r-- 1 name name 9.7K May 29 21:03 0.png
-rwxrwx--x 1 name name  41K Sep 11  2011 1.jpg
-rw------- 1 name name  51K Sep 11  2011 2.jpg
-rw------- 1 name name  54K Sep 11  2011 3.jpg
-rw------- 1 name name 717K Sep 25  2012 4.jpg

 

$ dir -S /home/name/Pictures
4.jpg  3.jpg  2.jpg  1.jpg  0.png