درک شل و ترمینال: راهنمای کامل برای مبتدیان و کاربران پیشرفته

با درک شل و ترمینال آشنا شوید، دستورات اساسی، نوشتن اسکریپتهای شل، خودکارسازی وظایف و ویژگیهای پیشرفته شل را بیاموزید. این مقاله برای مبتدیان و کاربران پیشرفتهای که میخواهند مهارتهای خود در خط فرمان را ارتقا دهند، مناسب است.
بخش اول: آشنایی با شل و ترمینال (جزئیات بیشتر)
در دنیای رایانهها، شل (Shell) و ترمینال (Terminal) نقش بسیار مهمی دارند. این ابزارها به کاربران این امکان را میدهند که بتوانند با سیستمعاملهای خود به صورت کارآمدتری تعامل کنند. در این بخش به توضیح دقیقتر شل و ترمینال پرداخته میشود و نحوه استفاده از آنها برای انجام کارهای مختلف بررسی خواهد شد.
1.1 شل چیست؟
شل در واقع یک برنامه نرمافزاری است که وظیفهی فراهم آوردن یک محیط برای وارد کردن دستورات کاربر و پردازش آنها توسط سیستمعامل را بر عهده دارد. به عبارت دیگر، شل نقش یک رابط یا واسط بین کاربر و سیستمعامل را ایفا میکند. در سیستمعاملهای مبتنی بر یونیکس (مثل لینوکس و macOS)، شل ابزار اصلی برای تعامل با سیستم است.
شلها معمولاً به دو صورت در دسترس قرار دارند:
- شلهای تعاملی (Interactive Shells): در این حالت، شل به صورت تعاملی با کاربر ارتباط برقرار میکند و منتظر دریافت دستورات است.
- شلهای غیر تعاملی (Non-Interactive Shells): این نوع شلها معمولاً برای اجرای اسکریپتها (فایلهای متنی شامل مجموعهای از دستورات) استفاده میشوند.
شلهای مختلفی وجود دارند که برخی از محبوبترین آنها عبارتند از:
- Bash (Bourne Again Shell): یکی از محبوبترین شلها که بیشتر در لینوکس و macOS استفاده میشود.
- Zsh (Z Shell): شلی پیشرفتهتر از Bash با امکانات بیشتری که قابلیتهای بیشتری را برای کاربر فراهم میکند.
- Fish (Friendly Interactive Shell): شلی با طراحی کاربرپسند و ویژگیهای پیشرفته.
- Tcsh: یک شل دیگر که بر اساس C Shell ساخته شده است.

1.2 ترمینال چیست؟
ترمینال به عنوان یک برنامه گرافیکی، محیطی را برای کاربران فراهم میکند تا بتوانند دستورات شل را وارد کنند. در واقع، ترمینال یک رابط کاربری است که به کاربر این امکان را میدهد که با شل تعامل داشته باشد. شما میتوانید ترمینال را به عنوان یک پنجرهی متنی در نظر بگیرید که در آن شل اجرا میشود و شما میتوانید دستورات خود را تایپ کرده و نتایج را مشاهده کنید.
در سیستمعاملهای لینوکس، ترمینال معمولا به عنوان یک برنامه با نام “Terminal” یا “Konsole” در دسترس است. در macOS، ترمینال به صورت پیشفرض با نام “Terminal” در پوشهی “Applications/Utilities” قرار دارد. در ویندوز، برنامههایی مانند “PowerShell” یا “Command Prompt” برای اجرای دستورات مشابه استفاده میشوند، هرچند که این ابزارها دقیقاً مشابه ترمینالهای یونیکس نیستند.
1.3 تفاوت شل و ترمینال
در حالی که شل و ترمینال هر دو برای تعامل با سیستمعامل از طریق دستورات متنی استفاده میشوند، اما تفاوتهایی دارند:
- شل یک برنامه است که وظیفهی پردازش دستورات وارد شده را بر عهده دارد. شل از کاربر دستورات را دریافت کرده و آنها را به سیستم عامل ارسال میکند تا اجرا شوند. همچنین شل میتواند اسکریپتهایی را برای انجام مجموعهای از دستورات به صورت خودکار اجرا کند.
- ترمینال یک برنامه گرافیکی است که شل را اجرا میکند و محیطی را برای تایپ دستورات فراهم میآورد. ترمینال در واقع به شل دسترسی میدهد.
در واقع، شما میتوانید یک شل را بدون ترمینال اجرا کنید، ولی برای تعامل با شل از طریق محیط گرافیکی معمولاً به ترمینال نیاز دارید. به همین دلیل، ترمینال به عنوان “پنجره” یا “محیط” شل شناخته میشود.
1.4 نحوه کار با ترمینال
برای شروع کار با ترمینال، کافی است برنامهی ترمینال را باز کرده و دستورات خود را وارد کنید. به عنوان مثال، اگر در ترمینال عبارت pwd
را تایپ کنید، سیستم شما را به شما نشان میدهد که در کدام دایرکتوری قرار دارید (این دستور برای نمایش مسیر جاری استفاده میشود). به همین ترتیب، دستوراتی مانند ls
(برای نمایش فهرست فایلها) و cd
(برای تغییر دایرکتوری) به شما کمک میکنند تا با سیستم خود به راحتی کار کنید.
1.5 مزایای استفاده از شل و ترمینال
- کنترل بیشتر: شل به شما امکان میدهد که به سطح عمیقتری از سیستمعامل دسترسی پیدا کنید و اقداماتی را انجام دهید که در محیط گرافیکی معمولاً نمیتوانید آنها را انجام دهید.
- اتوماتیکسازی کارها: شما میتوانید اسکریپتهایی بنویسید که مجموعهای از دستورات را به صورت خودکار اجرا کنند.
- کارایی بیشتر: با استفاده از دستورات متنی، بسیاری از کارها به سرعت انجام میشوند و زمان زیادی را صرف انجام کارهای تکراری نخواهید کرد.
- مدیریت سیستم: مدیران سیستم معمولاً از شل و ترمینال برای انجام کارهای مدیریتی، نصب نرمافزارها، پیکربندی سرورها و … استفاده میکنند.
بخش دوم: عملکرد شل و نحوه تعامل با آن
در بخش اول، توضیح دادیم که شل برنامهای است که دستورات وارد شده در ترمینال را پردازش میکند و ارتباط میان کاربر و سیستم را فراهم میآورد. در این بخش، قصد داریم نحوه عملکرد شل را بررسی کرده و نشان دهیم که کاربران چگونه میتوانند با آن تعامل داشته باشند.
نحوه عملکرد شل
شل به طور کلی دو وظیفه اصلی دارد:
- تفسیر دستورات: زمانی که شما یک دستور را وارد میکنید، شل آن را تفسیر کرده و آن را به دستور قابل فهم برای سیستمعامل تبدیل میکند. این شامل شناسایی دستورات خاص، متغیرهای محیطی، فایلها و پارامترهایی است که ممکن است با دستور همراه باشند.
- اجرای دستورات: پس از تفسیر دستور، شل آن را اجرا میکند. این میتواند شامل اجرای یک برنامه، دسترسی به فایلها، یا انجام هرگونه عملیات دیگری باشد. در برخی موارد، شل ممکن است چندین دستور را پشت سر هم اجرا کرده و نتایج آنها را به ترتیب نشان دهد.
به عنوان مثال، هنگامی که شما دستور ls
را در یک سیستم لینوکسی وارد میکنید، شل این دستور را شناسایی کرده و فهرستی از فایلها و دایرکتوریها در مسیر فعلی را نمایش میدهد.
اجزای شل
شل از چندین جزء مختلف برای انجام وظایف خود استفاده میکند:
- پارتیشن ورودی (Input Parsing): شل ابتدا ورودی شما را تجزیه میکند تا دستور اصلی و پارامترهای آن را استخراج کند. برای مثال، دستور
ls -l /home/user
را میگیرد و دستورls
را شناسایی میکند و پارامتر-l
را برای نمایش جزئیات فایلها تشخیص میدهد. - تحلیل و اجرا: شل سپس دستور را اجرا کرده و نتیجه آن را به شما نشان میدهد. این ممکن است به معنی فراخوانی یک برنامه خاص یا انجام یک دستور داخلی باشد.
- بازگشت نتایج: پس از اجرای دستور، شل نتایج را به شما باز میگرداند. این نتایج ممکن است شامل متنی باشد که به شما اطلاعاتی درباره وضعیت سیستم، خطاها، یا خروجی دستورات میدهد.
تعامل با شل
تعامل با شل میتواند به دو روش اصلی انجام شود:
- دستورات دستی (Interactive Commands): این حالت زمانی است که شما دستورات را به طور مستقیم در ترمینال وارد میکنید و شل بلافاصله آنها را اجرا میکند. این روش بیشتر در محیطهای خط فرمان برای انجام وظایف فوری و ساده استفاده میشود.
- اسکریپتها (Scripting): در این حالت، کاربران دستورات را در قالب یک فایل متنی (اسکریپت) ذخیره میکنند و شل آن فایل را به ترتیب اجرا میکند. این روش برای انجام کارهای پیچیده یا خودکارسازی وظایف مفید است.
ویژگیهای شل
شلها معمولاً ویژگیهای اضافی دارند که تعامل با آنها را سادهتر و کارآمدتر میکند. برخی از ویژگیهای معمول در شلها عبارتند از:
- تکمیل خودکار (Auto-completion): بسیاری از شلها از تکمیل خودکار پشتیبانی میکنند، که به شما این امکان را میدهد تا با تایپ اولین حروف دستور یا نام فایل، شل خودکار بقیه را تکمیل کند.
- تاریخچه دستورات (Command History): شلها معمولاً یک تاریخچه از دستورات قبلی شما نگه میدارند که میتوانید به راحتی از آنها برای اجرای دوباره دستورات استفاده کنید.
- توابع و متغیرهای محیطی: شلها به شما این امکان را میدهند که متغیرهایی مانند مسیرهای فایل یا تنظیمات سیستم را تنظیم کرده و به طور موقت یا دائم در شل استفاده کنید.
بخش سوم: دستورات اصلی شل و نحوه استفاده از آنها
در این بخش، به معرفی برخی از دستورات اصلی شل خواهیم پرداخت که برای هر کاربر در تعامل با سیستم از طریق ترمینال ضروری هستند. این دستورات به شما کمک میکنند تا بتوانید به راحتی با سیستم خود ارتباط برقرار کرده و آن را مدیریت کنید.
دستورات پایه برای مدیریت فایلها و دایرکتوریها
ls
(List): این دستور برای نمایش لیست فایلها و دایرکتوریها در یک مسیر خاص استفاده میشود. به طور پیشفرض،ls
محتویات دایرکتوری جاری را نشان میدهد.- مثال:
ls
- برای نمایش جزئیات بیشتر:
ls -l
- برای نمایش فایلهای مخفی:
ls -a
- مثال:
cd
(Change Directory): این دستور برای تغییر دایرکتوری جاری استفاده میشود. شما میتوانید به دایرکتوری دیگری بروید یا حتی به دایرکتوری والد (یک سطح بالاتر) بازگردید.- مثال:
cd Documents
- برای برگشت به دایرکتوری قبلی:
cd ..
- مثال:
pwd
(Print Working Directory): دستورpwd
مسیر کامل دایرکتوری جاری شما را نمایش میدهد. این دستور زمانی مفید است که بخواهید مطمئن شوید در کدام دایرکتوری قرار دارید.- مثال:
pwd
- مثال:
mkdir
(Make Directory): با استفاده از این دستور میتوانید یک دایرکتوری جدید ایجاد کنید.- مثال:
mkdir new_folder
- مثال:
rmdir
(Remove Directory): این دستور برای حذف دایرکتوریها استفاده میشود، اما فقط دایرکتوریهایی که خالی هستند را میتوان با این دستور حذف کرد.- مثال:
rmdir old_folder
- مثال:
rm
(Remove): برای حذف فایلها یا دایرکتوریها از این دستور استفاده میشود. توجه داشته باشید که اگر ازrm -r
استفاده کنید، میتوانید دایرکتوریها را همراه با محتویاتشان حذف کنید.- مثال برای حذف فایل:
rm file.txt
- مثال برای حذف دایرکتوری و محتویاتش:
rm -r folder_name
- مثال برای حذف فایل:
دستورات مدیریت فایل
cp
(Copy): دستور cp
برای کپی کردن فایلها و دایرکتوریها استفاده میشود.
مثال:
cp file.txt /path/to/destination/
mv
(Move): با استفاده از دستور mv
میتوانید فایلها یا دایرکتوریها را جابهجا کنید یا نام آنها را تغییر دهید.
مثال:
mv old_name.txt new_name.txt
برای جابهجایی فایل به دایرکتوری دیگر:
mv file.txt /path/to/destination/
cat
(Concatenate): این دستور برای نمایش محتوای یک فایل متنی در ترمینال استفاده میشود.
مثال:
cat file.txt
echo
: دستور echo
برای چاپ یک پیام یا محتویات یک متغیر به خروجی استفاده میشود. این دستور یکی از دستورات پرکاربرد در اسکریپتها است.
مثال:
echo "Hello, World!"
دستورات مرتبط با فرآیندها
ps
(Process Status): دستورps
برای نمایش لیستی از فرآیندهای در حال اجرا استفاده میشود. این دستور به شما کمک میکند تا وضعیت برنامهها و فرآیندهای مختلف سیستم خود را بررسی کنید.- مثال:
ps
- مثال:
top
: دستورtop
اطلاعات دقیقی درباره استفاده منابع سیستم (CPU، حافظه، پردازشها و …) به صورت زنده نمایش میدهد. این دستور به شما کمک میکند تا از وضعیت فعلی سیستم خود آگاه شوید.- مثال:
top
- مثال:
kill
: دستورkill
برای خاتمه دادن به یک فرآیند استفاده میشود. این دستور با شناسه (PID) فرآیند مورد نظر کار میکند.- مثال:
kill 1234
(که در آن 1234 شماره شناسه فرآیند است)
- مثال:
دستورات جستجو و فیلتر کردن
grep
: دستورgrep
برای جستجو در فایلها و نمایش خطوطی که با یک الگوی خاص تطابق دارند، استفاده میشود. این دستور برای فیلتر کردن دادهها و یافتن اطلاعات خاص در میان حجم زیادی از دادهها بسیار مفید است.- مثال:
grep "error" log.txt
(این دستور تمامی خطوطی که کلمه “error” در آنها وجود دارد را نمایش میدهد.)
- مثال:
find
: دستورfind
برای جستجوی فایلها و دایرکتوریها بر اساس معیارهای مختلف (مانند نام، اندازه، تاریخ ایجاد و …) استفاده میشود.- مثال:
find /home/user -name "*.txt"
(این دستور تمامی فایلهای با پسوند.txt
در دایرکتوری/home/user
را جستجو میکند.)
- مثال:
بخش چهارم: نوشتن اسکریپتهای شل و خودکارسازی کارها
در بخشهای قبلی، با دستورات اصلی شل آشنا شدیم و فهمیدیم که چگونه میتوان با استفاده از ترمینال و شل به انجام وظایف مختلف پرداخت. در این بخش، به یکی از کاربردهای پیشرفتهتر شل خواهیم پرداخت: نوشتن اسکریپتهای شل و خودکارسازی کارها. اسکریپتهای شل به شما این امکان را میدهند که مجموعهای از دستورات را در یک فایل ذخیره کرده و آنها را به صورت خودکار اجرا کنید.
اسکریپت شل چیست؟
یک اسکریپت شل یک فایل متنی است که شامل مجموعهای از دستورات شل میباشد. این دستورات میتوانند همان دستورات معمولیای باشند که در ترمینال وارد میکنید، اما به جای وارد کردن تک تک دستورات، میتوانید همه آنها را در یک فایل قرار داده و به راحتی اجرا کنید. اسکریپتها به ویژه زمانی مفید هستند که بخواهید کارهای تکراری را خودکار کنید.
نحوه نوشتن اسکریپت شل
برای نوشتن یک اسکریپت شل، مراحل زیر را دنبال کنید:
ایجاد فایل اسکریپت: ابتدا یک فایل متنی ایجاد کنید. به طور معمول، پسوند .sh
برای اسکریپتهای شل استفاده میشود.
برای ایجاد یک فایل جدید به نام script.sh
، از دستور touch
استفاده کنید:
touch script.sh
ویرایش فایل: برای ویرایش فایل، میتوانید از هر ویرایشگر متنی مانند nano
یا vim
استفاده کنید:
nano script.sh
اضافه کردن شل هش (Shebang): اولین خط در هر اسکریپت شل باید شامل شل هش باشد تا به سیستم بگوید که این فایل با چه شلی اجرا شود. برای شل bash، اولین خط باید به صورت زیر باشد:
#!/bin/bash
نوشتن دستورات: حالا میتوانید دستورات شل خود را در فایل بنویسید. به عنوان مثال، یک اسکریپت ساده که پیامی را چاپ میکند، به این صورت خواهد بود:
#!/bin/bash echo "Hello, World!"
ذخیره و بستن فایل: پس از نوشتن دستورات، فایل را ذخیره کرده و ویرایشگر را ببندید.
اجرای اسکریپت شل
برای اجرای اسکریپت شل، ابتدا باید به آن مجوز اجرا بدهید. این کار را میتوانید با استفاده از دستور chmod
انجام دهید:
chmod +x script.sh
پس از این که مجوز اجرا به اسکریپت داده شد، میتوانید آن را به راحتی اجرا کنید:
./script.sh
استفاده از متغیرها در اسکریپتها
یکی از قابلیتهای مفید اسکریپتهای شل، استفاده از متغیرها است. شما میتوانید مقادیری را در متغیرها ذخیره کرده و سپس از آنها در دستورات مختلف استفاده کنید.
تعریف متغیرها: متغیرها بدون علامت $
تعریف میشوند، اما برای ارجاع به آنها باید از $
استفاده کرد.
مثال:
name="Alice" echo "Hello, $name!"
ورود متغیر از کاربر: شما میتوانید از دستور read
برای دریافت ورودی از کاربر استفاده کنید.
مثال:
echo "Enter your name: " read name echo "Hello, $name!"
استفاده از دستورات شرطی
در اسکریپتهای شل، شما میتوانید از دستورات شرطی مانند if
، else
و elif
برای کنترل جریان اسکریپت استفاده کنید. این امکان به شما میدهد که تصمیم بگیرید بر اساس شرایط خاص چه دستوری اجرا شود.
دستور if:
مثال:
if [ "$name" == "Alice" ]; then echo "Welcome Alice!" else echo "You are not Alice!" fi
استفاده از حلقهها
حلقهها در اسکریپتهای شل به شما این امکان را میدهند که یک سری دستورات را به طور مکرر اجرا کنید.
حلقه for: حلقه for
برای تکرار یک دستور برای هر عنصر در یک لیست استفاده میشود.
مثال:
for i in 1 2 3 4 5 do echo "Number $i" done
حلقه while: حلقه while
تا زمانی که یک شرط برقرار باشد، دستورات را تکرار میکند.
مثال:
count=1 while [ $count -le 5 ] do echo "Count is $count" ((count++)) done
خودکارسازی کارها با cron jobs
برای خودکارسازی اجرای اسکریپتهای شل در زمانهای خاص، میتوانید از cron jobs استفاده کنید. Cron یک برنامه زمانبندی است که به شما این امکان را میدهد که دستورات یا اسکریپتها را به طور خودکار در زمانهای مشخص شده اجرا کنید.
برای ویرایش لیست وظایف cron، دستور زیر را وارد کنید:
crontab -e
سپس زمانبندی مورد نظر خود را وارد کنید. برای مثال، برای اجرای اسکریپت هر روز ساعت 3 صبح:
0 3 * * * /path/to/script.sh
بخش پنجم: ویژگیهای پیشرفته شل و ابزارهای مفید
در این بخش، به بررسی ویژگیهای پیشرفته شل و برخی ابزارهایی خواهیم پرداخت که میتوانند به شما در مدیریت بهتر سیستم و انجام کارهای پیچیدهتر کمک کنند. علاوه بر این، در انتهای این بخش، نتیجهگیری از تمامی بخشها و مرور مطالبی که آموختیم، خواهیم داشت.
1. استفاده از توابع (Functions)
در شل، شما میتوانید توابعی برای بستهبندی دستورات و افزایش انعطافپذیری اسکریپتها تعریف کنید. این توابع میتوانند مانند یک دستور مستقل عمل کنند و به شما این امکان را میدهند که کد خود را سازماندهی کرده و آن را مجدداً استفاده کنید.
- مثال تعریف یک تابع ساده:
my_function() { echo "This is my function" } # فراخوانی تابع my_function
توابع میتوانند پارامترهایی دریافت کرده و بر اساس آنها رفتار متفاوتی داشته باشند:
greet() {
echo "Hello, $1!"
}
# فراخوانی تابع با پارامتر
greet "Alice"
2. مدیریت ورودی و خروجی با لولهها (Pipes)
در شل، شما میتوانید خروجی یک دستور را به ورودی دستور دیگری ارسال کنید. این فرآیند با استفاده از لولهها (|
) انجام میشود. این قابلیت امکان انجام کارهای پیچیدهتر و پردازش دادهها را به شما میدهد.
- مثال: استفاده از
grep
برای فیلتر کردن خروجی یک دستور:ps aux | grep "apache"
در اینجا، خروجی دستور ps aux
(که تمامی فرآیندهای در حال اجرا را نمایش میدهد) به دستور grep
ارسال میشود تا تنها خطوطی که شامل کلمه “apache” هستند، نمایش داده شوند.
3. ورودی و خروجی از فایلها
شما میتوانید ورودی و خروجی دستورات را به فایلها هدایت کنید تا دادهها را ذخیره یا پردازش کنید. این کار با استفاده از ریدایرکتها (>
, >>
, <
) انجام میشود.
- استفاده از
>
برای ذخیره خروجی در یک فایل (این دستور فایل را بازنویسی میکند):echo "Hello, World!" > output.txt
- استفاده از
>>
برای اضافه کردن خروجی به انتهای یک فایل موجود:echo "This is an additional line" >> output.txt
- استفاده از
<
برای ارسال ورودی از یک فایل:cat < input.txt
4. مدیریت فرآیندها با bg
, fg
, و jobs
شما میتوانید فرآیندهای در حال اجرا را در پسزمینه یا پیشزمینه قرار دهید. این ویژگی به شما کمک میکند که از منابع سیستم بهینهتر استفاده کنید.
- برای ارسال یک فرآیند به پسزمینه، از دستور
bg
استفاده میشود:sleep 60 & # این دستور فرآیند را به پسزمینه میفرستد
- برای برگرداندن یک فرآیند از پسزمینه به پیشزمینه، از دستور
fg
استفاده میشود:fg %1
- دستور
jobs
برای مشاهده تمامی فرآیندهای در حال اجرا در پسزمینه است:jobs
5. ابزارهای شل پیشرفته
در شل ابزارهای پیشرفته دیگری نیز برای تسهیل مدیریت سیستم و کار با دادهها وجود دارند. برخی از این ابزارها عبارتند از:
awk
: ابزاری برای پردازش و تحلیل متون و دادهها است. این ابزار به ویژه برای پردازش فایلهای متنی بزرگ مفید است.
مثال:
awk '{print $1}' file.txt
sed
: یک ابزار قدرتمند برای انجام تغییرات روی فایلهای متنی است.
مثال:
sed 's/old/new/g' file.txt
tar
: برای فشردهسازی و استخراج فایلها استفاده میشود.
مثال:
tar -czvf archive.tar.gz folder/
curl
: ابزاری برای ارسال درخواستهای HTTP است و برای تعامل با APIها و وبسایتها بسیار مفید است.
مثال:
curl https://example.com
نتیجهگیری
در این مجموعه مقالهها، به مفاهیم و ویژگیهای اساسی شل و ترمینال پرداختیم. در بخش اول، شل و ترمینال را معرفی کرده و تفاوت آنها را توضیح دادیم. در بخش دوم، نحوه عملکرد شل و نحوه تعامل با آن را بررسی کردیم. در بخش سوم، برخی از دستورات اصلی شل و نحوه استفاده از آنها را معرفی کردیم. سپس در بخش چهارم، نحوه نوشتن اسکریپتهای شل و خودکارسازی وظایف را بررسی کردیم.
در این بخش پنجم، به ویژگیهای پیشرفته شل و ابزارهایی که میتوانند در مدیریت سیستم و انجام کارهای پیچیدهتر مفید باشند، پرداختیم. با استفاده از توابع، لولهها، ریدایرکتها و ابزارهای مختلف، میتوان کارهایی پیچیده را در شل انجام داد.
در مجموع، شل و ترمینال ابزارهایی قدرتمند برای مدیریت سیستم، انجام وظایف خودکار و تحلیل دادهها هستند. تسلط بر دستورات شل و قابلیتهای آن میتواند به شما کمک کند تا کارهای خود را به صورت سریعتر و کارآمدتر انجام دهید. با یادگیری و استفاده از ویژگیهای پیشرفته شل، میتوانید تواناییهای خود را در استفاده از سیستمعاملهای مختلف گسترش دهید و به کارایی بیشتری دست یابید.
ممنون که تا اینجای کار همراه راپیدوسرور بوده اید