~5 min read • Updated Jul 18, 2025
۱. توسعه در Bash چیست؟
Bash قبل از اجرای دستور، عناصر خاصی مثل *، $VAR و $(command) را تجزیه و جایگذاری میکند. این فرآیند به نام توسعه (Expansion) شناخته میشود و قدرت Bash را در ساخت دستورات پویا افزایش میدهد.
مثال با دستور echo:
echo this is a test # خروجی: this is a test
echo * # لیست تمام فایلهای دایرکتوری فعلی
۲. توسعه مسیر (Pathname Expansion)
الگوهای استفادهشده در توسعه مسیر:
echo D* # فایلهایی که با 'D' شروع میشوند
echo *s # فایلهایی که با 's' تمام میشوند
echo [[:upper:]]* # فایلهایی با حرف اول بزرگ
echo /usr/*/share # دایرکتوریهایی در /usr که شامل 'share' هستند
توسعه فایلهای مخفی:
echo .* # نمایش . و .. و سایر فایلهای مخفی
echo .[!.]* # حذف . و .. و هدفگیری دقیقتر فایلهای مخفی
ls -A # لیست فایلها، شامل فایلهای مخفی واقعی
۳. توسعه tilde (~)
echo ~ # /home/me
echo ~foo # /home/foo
برای اشاره سریع به مسیر خانگی کاربر استفاده میشود.
۴. توسعه ریاضی ($((...)))
| عملگر | کاربرد |
|---|---|
| + | جمع |
| - | تفاضل |
| * | ضرب |
| / | تقسیم صحیح |
| % | باقیمانده |
| ** | توان |
نمونهکد:
echo $((2 + 2)) # 4
echo $(((5**2) * 3)) # 75
echo $((5 / 2)) # 2
echo $((5 % 2)) # 1
۵. توسعه brace ({...})
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}
مناسب برای ساخت نام فایلها یا دایرکتوریها بهصورت دستهای
۶. توسعه پارامتر ($VARIABLE)
echo $USER # نمایش نام کاربر
echo $SUER # متغیر تعریفنشده → رشته خالی
printenv | less # لیست متغیرهای محیطی
۷. جایگذاری دستور ($(command) یا `command`)
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
۹. فرار دادن کاراکترها (Escaping)
کاراکترهای خاص با \ غیرفعال میشوند:
echo "The balance is: \$5.00" # نمایش دقیق $
mv bad\&filename good_filename # فرار دادن &
echo "Backslash: \\" # نمایش \
کنترل کاراکتر با escape sequences
| کد | توضیح |
|---|---|
| \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 قدرت و انعطاف زیادی در نوشتن دستورات فراهم میکنند. تسلط بر این مفاهیم باعث نوشتن اسکریپتهایی تمیز، قابلاطمینان و خودکار میشود که در محیطهای یونیکسی ضروریاند.
Written & researched by Dr. Shahin Siami