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