~2 min read • Updated Jul 18, 2025

Bash امکان توسعه الگوها و کاراکترها را فراهم می‌کند تا قبل از اجرای دستورات به مقادیر واقعی تبدیل شوند. کاربران می‌توانند با کمک این مکانیزم‌ها مسیرها، متغیرها، محاسبات، خروجی دستورها و نحوه نمایش متن را کنترل کنند. این مقاله مراحل مختلف توسعه در Bash را بررسی می‌کند.


توسعه مسیر (Pathname Expansion)


echo *

تمام فایل‌های دایرکتوری جاری را نمایش می‌دهد.


echo D*

فایل‌هایی که با D شروع می‌شوند را لیست می‌کند.


مدیریت فایل‌های مخفی


echo .[!.]*

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


ls -A

توسعه Tilde (~)


echo ~

دایرکتوری خانگی کاربر فعلی را نمایش می‌دهد.


echo ~username

دایرکتوری خانگی کاربر دیگر را نمایش می‌دهد.


توسعه ریاضی


echo $((2 + 2))

محاسبه عددی ساده.


echo $(((5**2) * 3))

نمایش حاصل توان و ضرب: ۷۵


توسعه Brace


echo Front-{A,B,C}-Back

خروجی: Front-A-Back Front-B-Back Front-C-Back


ساخت پوشه با توالی عددی:


mkdir {2007..2009}-{01..12}

ایجاد پوشه‌هایی مانند 2007-01 تا 2009-12


توسعه متغیر ($VAR)


echo $USER

نمایش نام کاربر فعلی.


printenv | less

نمایش لیست تمام متغیرهای محیطی.


جایگزینی دستور ($(COMMAND))


echo $(ls)

قرار دادن خروجی دستور داخل دستور دیگر.


ls -l $(which cp)

نمایش جزئیات cp


نقل‌قول و مدیریت متن


بدون نقل‌قول:


echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER

با نقل‌قول دوگانه:


echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER"

برخی توسعه‌ها حفظ می‌شوند اما brace و مسیر فعال نمی‌شوند.


با نقل‌قول تکی:


echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER'

همهٔ توسعه‌ها غیرفعال شده و متن دقیقاً همان‌طور نمایش داده می‌شود.


فرار دادن کاراکترها با (\)


echo "Your balance is: \$5.00"

جلوگیری از تفسیر نادرست $5 به عنوان متغیر.


کاراکترهای خاص در نام فایل:


mv bad\&filename good_filename

استفاده از \ برای جلوگیری از رفتار خاص &


کاراکترهای کنترلی با کدهای escape


کدکاربرد
\aبوق
\nسطر جدید
\tتب
\rبازگشت به ابتدای سطر
\bبک‌اسپیس

مثال استفاده در echo:


sleep 10; echo -e "Time's up\a"

sleep 10; echo "Time's up" $'\a'

نتیجه‌گیری


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


Written & researched by Dr. Shahin Siami