در سیستمعاملهای لینوکس و مبتنی بر یونیکس، ترمینال فقط یک ابزار ساده نیست؛ دروازهای است به کنترل کامل سیستم، انجام کارهای قدرتمند و خودکارسازی هوشمند. در قلب این تجربه، Bash قرار دارد؛ مخفف Bourne Again Shell. Bash شل پیشفرض بسیاری از توزیعهای لینوکس است، تا قبل از macOS Catalina شل پیشفرض مک بود و حتی روی ویندوز نیز از طریق WSL اجرا میشود.
چه یک کاربر تازهکار باشید که میخواهد مفاهیم خط فرمان را بفهمد، چه یک مهندس DevOps که پایپلاینهای production را مدیریت میکند، Bash یک ابزار غیرقابلجایگزین است. Bash هم یک رابط خط فرمان است، هم یک زبان اسکریپتنویسی، و هم بخش اصلی مدیریت سیستم.
در این مقاله به سؤال «Bash چیست؟» پاسخ میدهیم و با تاریخچه، قابلیتها، کاربردها و جایگاه آن در دنیای مدرن آشنا میشویم. همچنین تفاوت Bash با سایر شلها و استفاده عملی آن از کارهای ساده تا خودکارسازی CI/CD را بررسی میکنیم.
Bash چیست؟
Bash یک مفسر خط فرمان و زبان اسکریپتنویسی است که بهعنوان جایگزین آزاد شل قدیمی یونیکس یعنی sh (Bourne Shell) توسعه داده شد. Bash در سال ۱۹۸۹ توسط Brian Fox برای پروژه GNU ساخته شد و امکان تعامل مستقیم با سیستمعامل از طریق دستورات متنی را فراهم میکند.
برخلاف رابطهای گرافیکی که به کلیک و آیکن متکی هستند، Bash کاملاً مبتنی بر کیبورد است و اجازه میدهد کارها سریع، دقیق و قابل تکرار انجام شوند. اگرچه در ابتدا ممکن است سینتکس آن پیچیده به نظر برسد، اما با درک منطق Bash، کار با آن بسیار روان خواهد شد.
Bash در دو نقش اصلی استفاده میشود:
-
شل تعاملی: دستور مینویسید و بلافاصله خروجی میگیرید
-
زبان اسکریپتنویسی: نوشتن فایلهای
.shبرای خودکارسازی وظایف
برخی از قابلیتهای کلیدی Bash:
-
تاریخچه دستورات و aliasها
-
حلقهها (for، while) و شرطها (if، case)
-
متغیرها و آرایهها
-
محاسبات داخلی
-
مدیریت پردازشها
-
ریدایرکت ورودی و خروجی
مقایسه Bash با سایر شلها
لینوکس و یونیکس از شلهای مختلفی پشتیبانی میکنند. Bash رایجترین آنهاست، اما گزینههای دیگری نیز وجود دارند:
| شل | توضیح | استفاده تعاملی | اسکریپتنویسی |
|---|---|---|---|
| sh | شل اصلی یونیکس | سازگاری قدیمی | اسکریپتهای POSIX ساده |
| bash | نسخه پیشرفته sh | استفاده عمومی | اتوماسیون و اسکریپتهای production |
| zsh | شل پیشرفته و قابل شخصیسازی | کاربران حرفهای | اسکریپتهای پیچیده |
| fish | شل مدرن و کاربرپسند | مبتدیها | محدود و غیر POSIX |
| dash | شل سبک و سریع | حداقلی | اسکریپتهای راهاندازی سیستم |
آیا Bash همان ترمینال است؟
خیر. Bash و ترمینال یکی نیستند، اما با هم کار میکنند.
-
ترمینال: محیط متنی مثل GNOME Terminal یا Windows Terminal
-
شل: برنامهای که داخل ترمینال اجرا میشود (مثل Bash)
بهصورت ساده:
ترمینال صحنه است و Bash بازیگری که دستورات را اجرا میکند.
قابلیتهای کلیدی Bash
۱. تاریخچه دستورات
history | grep apt۲. تکمیل خودکار (Tab Completion)
با فشردن کلید Tab مسیرها و دستورات کامل میشوند.
۳. متغیرها
greeting="Hello"
echo "$greeting, world!"۴. حلقهها و شرطها
for file in *.log; do
echo "Processing $file"
done۵. اسکریپتنویسی
#!/bin/bash
echo "System uptime:"
uptime۶. مدیریت سیگنالها
trap "echo 'Script terminated!'" SIGINTچرا از Bash استفاده کنیم؟
-
قابلحمل: اجرا روی لینوکس، macOS، WSL
-
سریع و سبک
-
خودکارسازی: حذف کارهای تکراری
-
مناسب DevOps: پایپلاینها و deployment
-
خوانا و قابل نگهداری
نمونه کاربردهای سریع Bash
بهروزرسانی سیستم
sudo apt update && sudo apt upgrade -yبکاپ زمانبندیشده
tar -czvf /backup/home_$(date +%F).tar.gz /home/userفشردهسازی لاگها
find /var/log -type f -name "*.log" -mtime +7 -exec gzip {} \;دیپلوی از راه دور
rsync -avz /app user@remote:/var/www/appاولین اسکریپت Bash شما
#!/bin/bash
echo "Welcome to Bash!"chmod +x hello.sh
./hello.shبرای امنیت بیشتر اسکریپتها از
set -euo pipefailاستفاده کنید.
Bash در DevOps و اتوماسیون
Bash ستون فقرات بسیاری از فرآیندهای CI/CD است:
-
Build و تست
-
Deployment از طریق SSH یا Docker
-
مدیریت زیرساخت با ابزارهای Cloud
نمونه در GitHub Actions:
- run: |
chmod +x deploy.sh
./deploy.shخطاهای رایج Bash و راهحلها
| خطا | علت | راهحل |
|---|---|---|
| command not found | دستور وجود ندارد | نصب یا بررسی PATH |
| permission denied | فایل اجرایی نیست | chmod +x |
| bad interpreter | line ending ویندوزی | تبدیل به Unix |
| infinite loop | خطای منطقی | افزودن شرط خروج |
| unbound variable | متغیر تعریف نشده | مقدار پیشفرض |
جمعبندی
Bash همچنان یکی از مهمترین مهارتها در دنیای لینوکس، مدیریت سرور و DevOps است. ترکیب قدرت، سادگی و قابلیت حمل، آن را به ابزاری ایدهآل برای مدیریت سیستم، خودکارسازی و استقرار تبدیل کرده است.
اگر میخواهید Bash را جدی یاد بگیرید، تمرین مداوم، نوشتن اسکریپتهای واقعی و شخصیسازی محیط کاری بهترین مسیر پیشرفت است.
این آموزش برای استفاده در وبسایت دیدگاه بازنویسی و بومیسازی شده است.

