banner
Shell چیست؟ آشنایی کامل با شل در لینوکس و یونیکس

Shell چیست؟ آشنایی کامل با شل در لینوکس و یونیکس

اگر با لینوکس، سرور یا برنامه نویسی کار کرده باشید، احتمالاً نام Shell یا شلرا شنیده اید. اما Shell دقیقاً چیست و چه تفاوتی با Terminal دارد؟

0 5 اکتبر 2026

Shell  یک مفسر خط فرمان است که دستورات کاربر را دریافت، تفسیر و اجرا می کند. به کمک Shell می توان فایل ها و پوشه ها را مدیریت کرد، برنامه ها را اجرا کرد، وضعیت سرور را بررسی کرد، دسترسی کاربران را تغییر داد و بسیاری از کارهای تکراری را به صورت خودکار انجام داد.

Shell  در سیستم های Linux و Unix اهمیت زیادی دارد و یکی از ابزارهای اصلی مدیران سرور، توسعه دهندگان و متخصصان DevOps محسوب می شود.

در این مقاله با مفهوم  Shell، تفاوت آن با  Terminal، انواع Shell در لینوکس، Bash، Shell Scripting  و کاربرد شل در مدیریت سرور آشنا می شویم.

Shell چیست؟

Shell  یک Command-Line Interpreter یا مفسر خط فرمان است که بین کاربر و سیستم عامل قرار می گیرد.

وقتی دستوری مانند زیر را در لینوکس وارد می کنید:

ls -l

Shell  دستور را دریافت و تفسیر می کند و سپس برنامه موردنظر را اجرا می کند. نتیجه نیز از طریق Terminal به کاربر نمایش داده می شود.

به زبان ساده می توان مسیر ارتباط را این گونه در نظر گرفت:

کاربر → Terminal → Shell → برنامه ها و Kernel → سخت افزار

البته همه دستورات مستقیماً به Kernel ارسال نمی شوند؛ Shell می تواند برنامه های مختلف را اجرا کند و این برنامه ها در صورت نیاز از طریق System Call با Kernel ارتباط برقرار می کنند.

Shell  چه کارهایی انجام می دهد؟

مهم ترین وظایف Shell عبارت اند از:

  • دریافت و تفسیر دستورات کاربر
  • اجرای برنامه ها
  • مدیریت ورودی و خروجی
  • اجرای دستورات به صورت زنجیره ای
  • استفاده از Pipe برای انتقال خروجی یک دستور به دستور دیگر
  • مدیریت متغیرهای محیطی
  • اجرای دستورات شرطی
  • اجرای حلقه ها
  • اجرای Scriptها
  • خودکارسازی وظایف مدیریتی

به همین دلیل Shell فقط یک محیط برای تایپ کردن چند دستور ساده نیست و می تواند به ابزاری قدرتمند برای مدیریت سیستم تبدیل شود.

تفاوت  Shell  و Terminal چیست؟

یکی از رایج ترین اشتباهات افراد تازه کار این است که  Shell  و Terminal را یک چیز در نظر می گیرند؛ در حالی که این دو مفهوم متفاوت هستند.

Terminal  چیست؟

Terminal یک برنامه یا محیط متنی است که به کاربر اجازه می دهد دستورات را وارد کرده و خروجی آن ها را مشاهده کند.

برای مثال در Ubuntu می توانید برنامه Terminal را باز کنید و دستور موردنظر خود را وارد کنید.

اما Terminal به تنهایی مسئول تفسیر دستورات نیست.

Shell  چیست؟

Shell  برنامه ای است که دستور واردشده را دریافت و تفسیر می کند.

برای مثال ممکن است در یک Terminal از Bash استفاده کنید. در این حالت:

  • Terminal  محیط ورود دستور است.
  • Bash  دستور را تفسیر می کند.
  • برنامه یا فرمان موردنظر اجرا می شود.
  • خروجی از طریق Terminal نمایش داده می شود.

بنابراین به صورت خلاصه:

Terminal  محیط ارتباط متنی با سیستم است؛ Shell مفسر دستورات داخل این محیط است.

این تفاوت هنگام مدیریت سرور اهمیت بیشتری پیدا می کند. برای مثال هنگام اتصال به یک سرور لینوکس از طریق  SSH، معمولاً وارد یک محیط Shell می شوید و بسیاری از عملیات مدیریتی را از طریق خط فرمان انجام می دهید.

Shell  چگونه با Kernel ارتباط برقرار می کند؟

برای درک بهتر Shell باید با مفهوم Kernel  یا هسته سیستم عامل نیز آشنا شویم.

Kernel  بخش مرکزی سیستم عامل است و وظایفی مانند موارد زیر را بر عهده دارد:

  • مدیریت پردازنده
  • مدیریت حافظه
  • مدیریت فرآیندها
  • مدیریت فایل ها
  • مدیریت دستگاه ها
  • مدیریت ورودی و خروجی

Shell در واقع واسط میان کاربر و سیستم است.

برای مثال وقتی دستور زیر را اجرا می کنید:

ls

Shell  دستور را تفسیر کرده و برنامه ls را اجرا می کند. این برنامه برای دریافت اطلاعات فایل ها و دایرکتوری ها از امکانات سیستم عامل استفاده می کند و نتیجه را در Terminal نمایش می دهد.

انواع Shell در لینوکس

Linux  و سیستم های Unix-like از  Shellهای مختلفی پشتیبانی می کنند. این  Shellها وظیفه اصلی مشابهی دارند اما  Syntax، قابلیت ها و امکانات داخلی آن ها می تواند متفاوت باشد.

مهم ترین  Shellهای لینوکس عبارت اند از:

  • Bash
  • Zsh
  • sh
  • Fish
  • Ksh
  • Csh

Bash  چیست؟

Bash  مخفف Bourne Again Shell  است و یکی از شناخته شده ترین Shellها در محیط Linux و Unix-like محسوب می شود.

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

برای مشاهده Shell فعلی می توانید از دستور زیر استفاده کنید:

echo $SHELL

در بسیاری از سیستم های لینوکسی Bash یکی از گزینه های اصلی برای اجرای دستورات و Shell Scriptها است.

Zsh  چیست؟

Zsh  یا Z Shell یکی دیگر از  Shellهای محبوب در سیستم های Unix-like است.

Zsh قابلیت هایی مانند:

  • تکمیل خودکار دستورات
  • شخصی سازی محیط
  • مدیریت بهتر History
  • Syntax Highlighting در برخی تنظیمات
  • امکانات پیشرفته خط فرمان

را ارائه می دهد.

Sh  چیست؟

sh یکی از نام های شناخته شده در خانواده Shellهای Unix است و از نظر تاریخی با Bourne Shell ارتباط دارد.

بسیاری از Scriptهایی که با هدف سازگاری بیشتر بین سیستم های مختلف Unix و Linux نوشته می شوند، از Syntax سازگار با sh استفاده می کنند.

Ksh  چیست؟

Korn Shell  یا Ksh یکی دیگر از Shellهای قدیمی Unix است که امکانات مناسبی برای اجرای دستورات و Shell Scripting ارائه می کند.

Ksh  همچنین در شکل گیری استانداردهای مرتبط با POSIX Shell نقش داشته است.

Fish  چیست؟

Fish  یا Friendly Interactive Shell با تمرکز بر تجربه کاربری ساده تر طراحی شده است.

از ویژگی های آن می توان به پیشنهاد خودکار دستورات و قابلیت های تعاملی مناسب اشاره کرد.

Shell Script  چیست؟

فرض کنید هر روز باید چندین کار تکراری روی سیستم انجام دهید:

  1. وارد یک پوشه شوید.
  2. فایل های موقت را حذف کنید.
  3. Backup بگیرید.
  4. وضعیت سرویس ها را بررسی کنید.
  5. گزارش سیستم را ذخیره کنید.

اجرای دستی این دستورات هم زمان بر است و هم می تواند باعث خطای انسانی شود.

در این شرایط می توان دستورات را در یک فایل قرار داد و آن فایل را به عنوان یک Shell Script اجرا کرد.

Shell Script در ساده ترین تعریف، یک فایل متنی شامل مجموعه ای از دستورات است که توسط Shell اجرا می شوند.

برای مثال:

#!/bin/bash

echo “Current Directory:”

pwd

echo “Files:”

ls -l

این Script ابتدا مسیر فعلی را نمایش داده و سپس فایل ها و پوشه های موجود در آن را فهرست می کند.

Shebang  در Shell Script چیست؟

در بسیاری از Shell Scriptها، خط اول به شکل زیر نوشته می شود:

#!/bin/bash

به این خط Shebang  گفته می شود.

Shebang  مشخص می کند که Script باید با چه  Interpreterای اجرا شود.

برای مثال:

#!/bin/bash

یعنی Script با Bash اجرا شود.

یا:

#!/bin/sh

برای اجرای Script با sh استفاده می شود.

 

چگونه یک Shell Script اجرا کنیم؟

فرض کنید فایلی به نام backup.sh ساخته اید.

ابتدا می توانید مجوز اجرای آن را فعال کنید:

chmod +x backup.sh

سپس Script را اجرا کنید:

./backup.sh

یا مستقیماً آن را با Bash اجرا کنید:

bash backup.sh

متغیرها در  Shell Script

Shell Script  از متغیرها نیز پشتیبانی می کند.

برای مثال:

NAME=”Linux”

و برای استفاده از مقدار آن:

echo $NAME

خروجی:

Linux

متغیرها برای ذخیره مسیر فایل ها، نام کاربران، تنظیمات و نتایج دستورات کاربرد زیادی دارند.

 

شرط ها در  Shell Script

با استفاده از ساختارهای شرطی می توان رفتار Script را بر اساس شرایط مختلف تغییر داد.

برای مثال:

#!/bin/bash

if   -f “/var/log/syslog”  ; then

    echo “File exists”

else

    echo “File does not exist”

fi

در این مثال بررسی می شود که آیا فایل مشخص شده وجود دارد یا خیر.

حلقه ها در  Shell Script

Shell Script از حلقه هایی مانند for، while و until پشتیبانی می کند.

برای مثال:

#!/bin/bash

for file in *.txt

do

    echo “$file”

done

این Script فایل های دارای پسوند .txt را در مسیر فعلی پیدا کرده و نام آن ها را نمایش می دهد.

Pipe در Shell چیست؟

یکی از قابلیت های بسیار مهم Shell، Pipe است.

Pipe با علامت | مشخص می شود و امکان انتقال خروجی یک دستور به ورودی دستور دیگر را فراهم می کند.

برای مثال:

ls -l | grep “.txt”

در اینجا خروجی ls -l به grep منتقل می شود تا موارد مرتبط با .txt فیلتر شوند.

این قابلیت باعث می شود بتوان چندین ابزار ساده را در کنار یکدیگر قرار داد و عملیات پیچیده تری انجام داد.

Redirection در Shell چیست؟

Shell امکان تغییر مسیر ورودی و خروجی دستورات را نیز فراهم می کند.

برای مثال:

ls -l > files.txt

خروجی دستور ls -l را داخل فایل files.txt ذخیره می کند.

همچنین با استفاده از >> می توان اطلاعات جدیدی را به انتهای فایل اضافه کرد:

echo “New log” >> files.txt

Redirection در ایجاد Log، گزارش گیری و خودکارسازی عملیات مختلف کاربرد زیادی دارد.

کاربرد Shell در لینوکس چیست؟

Shell در بسیاری از فعالیت های مرتبط با Linux کاربرد دارد.

۱. مدیریت فایل ها

ایجاد، حذف، کپی، جابه جایی و تغییر نام فایل ها از طریق Shell امکان پذیر است.

برای مثال:

mkdir backup

cp website.zip backup/

۲. مدیریت سرور

مدیران سیستم می توانند بسیاری از عملیات مربوط به سرور را از طریق Shell انجام دهند؛ از مدیریت سرویس ها و کاربران گرفته تا بررسی فایل های Log و منابع سیستم.

این موضوع در هاست لینوکس اهمیت زیادی دارد، زیرا بخش مهمی از زیرساخت های میزبانی وب بر پایه Linux اجرا می شوند.

هاست لینوکس برای شروع طراحی سایت

اگر برای سایت خود به یک محیط میزبانی مبتنی بر Linux نیاز دارید،
هاست لینوکس راست‌چین کلود با منابع متنوع، SSL رایگان،
مانیتورینگ و آپتایم 99.99٪ ارائه می‌شود.

مشاهده پلن‌های هاست لینوکس ←

۳. Backup و پشتیبان گیری

یکی از کاربردهای مهم Shell Script، خودکارسازی فرآیند Backup است.

برای مثال می توان Scriptی ایجاد کرد که در یک زمان مشخص:

  • از فایل های سایت Backup بگیرد.
  • از دیتابیس نسخه پشتیبان تهیه کند.
  • فایل Backup را فشرده کند.
  • آن را در یک مسیر مشخص ذخیره کند.

با ترکیب Shell Script و ابزارهایی مانند cron می توان چنین فرآیندهایی را به صورت زمان بندی شده اجرا کرد.

۴. مانیتورینگ سرور

Shell برای بررسی منابع سیستم نیز کاربرد دارد.

برای مشاهده فضای دیسک:

df -h

برای مشاهده وضعیت حافظه:

free -h

و برای مشاهده فرآیندهای در حال اجرا:

ps aux

می توان از این دستورات استفاده کرد.

در محیط های حرفه ای حتی می توان Scriptهایی نوشت که وضعیت منابع را بررسی کرده و در صورت عبور مصرف از یک حد مشخص، هشدار ایجاد کنند.

۵. اجرای وظایف زمان بندی شده

یکی دیگر از کاربردهای Shell، اجرای خودکار دستورات در زمان مشخص است.

در Linux ابزار Cron برای زمان بندی وظایف استفاده می شود.

برای مثال می توان یک Shell Script مربوط به Backup را طوری تنظیم کرد که هر شب به صورت خودکار اجرا شود.

اگر می خواهید درباره زمان بندی وظایف در محیط میزبانی بیشتر بدانید، مقاله آموزش ایجاد Cron Job در سی پنل نیز می تواند مکمل این بخش باشد.

۶. مدیریت VPS و سرور لینوکس

کاربرد Shell در VPS حتی پررنگ تر است. در یک سرور مجازی لینوکس معمولاً از طریق SSH به سرور متصل می شوید و بسیاری از عملیات مدیریتی را از طریق Shell انجام می دهید.

برای مثال:

cd

ls

mkdir

cp

mv

rm

chmod

chown

systemctl

journalctl

از جمله دستورات و ابزارهایی هستند که می توانند برای مدیریت فایل ها، دسترسی ها، سرویس ها و Logهای سیستم مورد استفاده قرار گیرند.

اگر می خواهید بیشتر با این موضوع آشنا شوید، راهنمای راه اندازی و اتصال به سرور مجازی لینوکس راست چین کلود می تواند ادامه مناسبی برای این مقاله باشد.

برای پروژه های حرفه ای تر به کنترل بیشتری نیاز دارید؟

اگر هاست اشتراکی پاسخگوی نیاز پروژه شما نیست و می خواهید به سیستم عامل، منابع و تنظیمات سرور کنترل بیشتری داشته باشید، یک سرور مجازی لینوکس می تواند انتخاب مناسبی باشد.

مشاهده سرورهای مجازی راست‌چین کلود ←

Shell در مدیریت سرور چه اهمیتی دارد؟

اگر سایت یا اپلیکیشن شما روی یک سرور لینوکسی اجرا شود، Shell یکی از ابزارهای اصلی مدیریت آن خواهد بود.

برای مثال هنگام اتصال به سرور از طریق SSH می توانید:

  • فایل های سایت را مدیریت کنید.
  • Permissionها را تغییر دهید.
  • سرویس ها را Restart کنید.
  • Logها را بررسی کنید.
  • نرم افزار نصب کنید.
  • فرآیندهای در حال اجرا را بررسی کنید.
  • Backup  بگیرید.
  • Scriptهای مدیریتی اجرا کنید.

برای آشنایی با یکی از روش های اتصال به سرور لینوکس می توانید مقاله آموزش اتصال به سرور لینوکس با PuTTY را نیز مطالعه کنید.

آیا Shell فقط برای سرورها استفاده می شود؟

خیر. Shell را می توان روی کامپیوتر شخصی دارای Linux، macOS و بسیاری از سیستم های Unix-like نیز استفاده کرد.

با این حال، اهمیت Shell در محیط Server بیشتر احساس می شود؛ زیرا بسیاری از سرورهای Linux بدون محیط گرافیکی اجرا می شوند و مدیریت آن ها از طریق SSH و خط فرمان انجام می شود.

به همین دلیل افرادی که در زمینه های زیر فعالیت می کنند معمولاً باید با Shell آشنایی داشته باشند:

  • مدیریت سرور
  • Linux Administration
  • DevOps
  • توسعه نرم افزار
  • Cloud Computing
  • Docker
  • CI/CD
  • امنیت
  • مانیتورینگ

Shell Script چه مزایایی دارد؟

Shell Scripting  به دلایل مختلفی در Linux و Unix محبوب است.

خودکارسازی کارهای تکراری

وظایفی که مرتباً تکرار می شوند را می توان در قالب Script قرار داد.

کاهش خطای انسانی

وقتی فرآیند یک بار نوشته و تست شود، اجرای مجدد آن طبق همان مراحل انجام می شود.

سرعت بالا

به جای اجرای دستی ده ها دستور، می توان همه آن ها را در یک Script قرار داد.

سبک و سریع برای کارهای سیستمی

برای بسیاری از عملیات ساده مدیریتی نیازی به استفاده از یک زبان برنامه نویسی سنگین نیست.

دسترسی به ابزارهای  Linux

Shell  می تواند دستورات و ابزارهای مختلف سیستم را با یکدیگر ترکیب کند.

Shell Script  یا زبان برنامه نویسی؟

Shell  دارای ویژگی هایی مانند:

  • متغیر
  • شرط
  • حلقه
  • تابع
  • ورودی و خروجی
  • کنترل جریان

است و می توان با آن برنامه هایی در قالب Script نوشت. اما Shell معمولاً برای ساخت نرم افزارهای بزرگ و پیچیده جایگزین زبان هایی مانند Python، Java یا C++ نمی شود. Shell  بیشتر برای مدیریت سیستم، اتوماسیون، Deployment، پردازش فایل ها و عملیات DevOps کاربرد دارد.

تفاوت Shell Script و Bash Script چیست؟

Shell Script یک اصطلاح کلی است و به Scriptهایی گفته می شود که توسط یک Shell اجرا می شوند.

اما Bash Script مشخصاً برای Bash نوشته شده است.

برای مثال:

#!/bin/bash

نشان می دهد که Script برای اجرا با Bash طراحی شده است.

اگر Script از قابلیت های اختصاصی Bash استفاده کند، ممکن است اجرای آن با Shellهای دیگر امکان پذیر نباشد.

Shell  در Linux و  Unix

Shell بخش مهمی از تاریخ Unix و سیستم های Unix-like است و Linux نیز بسیاری از ابزارهای خط فرمان خود را از همین سنت به ارث برده است.

دستوراتی مانند:

ls

cd

cp

mv

rm

grep

cat

find

از جمله ابزارهای رایج محیط های Linux و Unix-like هستند. البته ممکن است رفتار یا امکانات برخی ابزارها در توزیع ها و سیستم های مختلف متفاوت باشد.

مهم ترین دستورات Shell برای شروع

اگر به تازگی یادگیری Shell را شروع کرده اید، آشنایی با دستورات زیر نقطه شروع خوبی است:

دستور کاربرد
pwd نمایش مسیر فعلی
ls نمایش فایل ها و پوشه ها
cd تغییر مسیر
mkdir ایجاد پوشه
touch ایجاد فایل
cp کپی فایل یا پوشه
mv جابه جایی یا تغییر نام
rm حذف فایل یا پوشه
cat نمایش محتوای فایل
grep جست وجو در متن
find پیدا کردن فایل ها
chmod تغییر Permission
chown تغییر مالک فایل
ps نمایش Processها
df نمایش فضای دیسک
free نمایش وضعیت RAM

آیا برای استفاده از لینوکس باید Shell بلد باشیم؟

خیر. بسیاری از توزیع های Linux دارای محیط گرافیکی هستند و می توان بخش زیادی از کارهای روزمره را بدون استفاده مستقیم از Shell انجام داد.

اما اگر قصد دارید با سرور لینوکس، VPS، Docker، DevOps یا مدیریت سیستم کار کنید، یادگیری Shell یک مهارت بسیار کاربردی است.

به خصوص در سرورهایی که محیط گرافیکی ندارند، خط فرمان مهم ترین روش تعامل با سیستم محسوب می شود.

Shell برای چه کسانی ضروری تر است؟

یادگیری Shell برای همه کاربران Linux اجباری نیست، اما برای گروه های زیر اهمیت بیشتری دارد:

مدیران سرور

برای مدیریت سرویس ها، فایل ها، کاربران، Permissionها و منابع سیستم.

توسعه دهندگان

برای اجرای ابزارهای توسعه، مدیریت پروژه ها و خودکارسازی فرآیندهای مختلف.

متخصصان DevOps

برای Deployment، مدیریت Infrastructure، اجرای Scriptها و کار با ابزارهای CI/CD.

مدیران VPS

برای مدیریت مستقیم سرور، بررسی منابع، نصب نرم افزار و عیب یابی.

کاربران حرفه ای Linux

برای انجام سریع تر و دقیق تر کارهایی که در محیط گرافیکی زمان بیشتری نیاز دارند.

مطالعه بیشتر:

 

سوالات متداول

Shell چیست؟

Shell یک مفسر خط فرمان است که دستورات کاربر را دریافت و تفسیر کرده و برنامه ها یا دستورات موردنظر را اجرا می کند.

تفاوت Shell و Terminal چیست؟

Terminal محیطی برای ورود و مشاهده دستورات است، در حالی که Shell برنامه ای است که این دستورات را تفسیر و اجرا می کند.

Bash چیست؟

Bash مخفف Bourne Again Shell و یکی از رایج ترین Shellهای مورد استفاده در سیستم های Linux و Unix-like است.

Shell Script چیست؟

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

آیا Shell برای مدیریت VPS لازم است؟

برای مدیریت حرفه ای VPS لینوکس، آشنایی با Shell بسیار کاربردی است؛ زیرا بسیاری از عملیات مدیریت سرور از طریق SSH و خط فرمان انجام می شوند.

آیا هاست لینوکس به Shell نیاز دارد؟

کاربر هاست لینوکس الزاماً نیازی به دانش عمیق Shell ندارد. بسیاری از وظایف را می توان از طریق کنترل پنل انجام داد؛ اما آشنایی با دستورات Linux و Shell برای کاربران فنی و توسعه دهندگان مفید است.

نظر شما چیست؟
سهیل دهقانی
سهیل دهقانی

کاوش در دنیای وب، از هاست و سرور تا وردپرس و امنیت. 🍀

شبکه های اجتماعی
به جواب سوالت رسیدی؟

ثبت دیدگاه ها

100days
×