Bash قبل از اجرای دستور، عناصر خاصی مثل *
، $VAR
و $(command)
را تجزیه و جایگذاری میکند. این فرآیند به نام توسعه (Expansion) شناخته میشود و قدرت Bash را در ساخت دستورات پویا افزایش میدهد.
echo this is a test # خروجی: this is a test
echo * # لیست تمام فایلهای دایرکتوری فعلی
الگوهای استفادهشده در توسعه مسیر:
echo D* # فایلهایی که با 'D' شروع میشوند
echo *s # فایلهایی که با 's' تمام میشوند
echo [[:upper:]]* # فایلهایی با حرف اول بزرگ
echo /usr/*/share # دایرکتوریهایی در /usr که شامل 'share' هستند
echo .* # نمایش . و .. و سایر فایلهای مخفی
echo .[!.]* # حذف . و .. و هدفگیری دقیقتر فایلهای مخفی
ls -A # لیست فایلها، شامل فایلهای مخفی واقعی
echo ~ # /home/me
echo ~foo # /home/foo
برای اشاره سریع به مسیر خانگی کاربر استفاده میشود.
عملگر | کاربرد |
---|---|
+ | جمع |
- | تفاضل |
* | ضرب |
/ | تقسیم صحیح |
% | باقیمانده |
** | توان |
echo $((2 + 2)) # 4
echo $(((5**2) * 3)) # 75
echo $((5 / 2)) # 2
echo $((5 % 2)) # 1
echo Front-{A,B,C}-Back # Front-A-Back Front-B-Back ...
echo {1..5} # 1 2 3 4 5
echo {01..15} # 01 02 03 ... 15
echo {Z..A} # Z Y ... A
echo a{A{1,2},B{3,4}}b # aA1b aA2b aB3b aB4b
mkdir Photos; cd Photos; mkdir {2007..2009}-{01..12}
مناسب برای ساخت نام فایلها یا دایرکتوریها بهصورت دستهای
echo $USER # نمایش نام کاربر
echo $SUER # متغیر تعریفنشده → رشته خالی
printenv | less # لیست متغیرهای محیطی
echo $(ls) # لیست فایلها
ls -l $(which cp) # نمایش جزئیات cp
file $(ls -d /usr/bin/* | grep zip) # بررسی فایلهای zip
ls -l `which cp` # سینتکس قدیمی جایگذاری
نوع نقلقول | رفتار |
---|---|
بدون نقلقول | تمام توسعهها فعال، تقسیم کلمات انجام میشود |
" " | توسعه مسیر و brace غیرفعال، ولی توسعه متغیر و دستور فعال |
' ' | همهٔ توسعهها غیرفعال |
echo "$USER $((2+2)) $(cal)" # حفظ فاصله و سطرها
echo 'text ~/*.txt {a,b} $(...)' # نمایش دقیق رشته واردشده
ls -l "two words.txt"
mv "two words.txt" two_words.txt
کاراکترهای خاص با \
غیرفعال میشوند:
echo "The balance is: \$5.00" # نمایش دقیق $
mv bad\&filename good_filename # فرار دادن &
echo "Backslash: \\" # نمایش \
کد | توضیح |
---|---|
\a | آلارم (بوق) |
\b | بکاسپیس |
\n | خط جدید |
\r | بازگشت به ابتدای خط |
\t | کاراکتر tab |
echo -e "Hello\tWorld\nNew line"
sleep 5; echo -e "Time's up\a"
sleep 5; echo "Alert" $'\a'
توسعهها، نقلقولها، و تکنیکهای فرار در Bash قدرت و انعطاف زیادی در نوشتن دستورات فراهم میکنند. تسلط بر این مفاهیم باعث نوشتن اسکریپتهایی تمیز، قابلاطمینان و خودکار میشود که در محیطهای یونیکسی ضروریاند.