حسین کعبی: وقتی فیگو را در جام جهانی زدم....
نگارش چهارم Bash گزینه جدیدی به globbing اضافه کرده است که globstar نام دارد و الگوی ** را بهترتیب متفاوتی مطابقت میدهد.
بهطور کل، وقتی از گزینه ** در دستور خود استفاده میکنید، بش فرقی میان آن یا * قائل نمیشود. دستور زیر را ببینید:
ls -l $
total 8
-rw-r--r-- 1 mitch users 0 2010-05-05 10:36 a
-rw-r--r-- 1 mitch users 0 2010-05-05 10:36 b
drwxr-xr-x 2 mitch users 4096 2010-05-05 10:36 c
drwxr-xr-x 2 mitch users 4096 2010-05-05 10:36 d
حالا اگر دستورات زیر را وارد کنید:
** for i in $
» do
» echo $i
» done
خروجی زیر را مشاهده خواهید کرد.
a
b
c
d
حالا اگر تنظیمات globstar را با دستور زیر فعال کنید:
$ shopt -s globstar
و حلقه بالا را دوباره تکرار کنید، عبارت زیر را دریافت خواهید کرد:
a
b
c
c/e
d
d/f
اگر globstar روشن باشد، در این حالت بش تمام دایرکتوریها را میگردد. به این توجه بکنید که این کار شامل تمام سطوح یک دایرکتوری میشود و فقط تا یک سطح را بررسی نمیکند. میتوان با دستور shopt متوجه شد که آیا globstar روشن است یا خیر. تنها کافی است عبارت زیر را وارد کنید:
shopt $
force_fignore on
globstar on
gnu_errfmt off
یا اگر میخواهید آن را در اسکریپتی بهکار بگیرید، از گزینه -q برای shopt استفاده کنید. برای مثال کد زیر را ببینید:
if shopt -q globstar; then
حسین کعبی: وقتی فیگو را در جام جهانی زدم....