آموزش خط فرمان لینوکس مهارتی است که دنیای جدیدی از قدرت و کنترل را پیش روی شما باز میکند. اگر تازه یک سرور مجازی تهیه کردهاید یا میخواهید بهصورت حرفهای وارد دنیای لینوکس شوید، تسلط بر ترمینال و دستورهای پایه، نخستین و مهمترین قدم است. برخلاف تصور بسیاری از مبتدیان، کار با خط فرمان نهتنها ترسناک نیست، بلکه پس از یادگیری چند دستور کلیدی، بسیاری از کارها را سریعتر و دقیقتر از محیط گرافیکی انجام میدهید. در این آموزش گامبهگام از رپیدو سرور، از صفر با مفاهیم ترمینال، پیمایش فایلها، مدیریت مجوزها و ابزارهای کاربردی آشنا میشوید.
خط فرمان لینوکس چیست و چرا باید آن را یاد بگیریم؟
خط فرمان یا Command Line Interface (CLI) یک رابط متنی است که در آن دستورها را تایپ میکنید و سیستم آنها را اجرا میکند. برنامهای که این تعامل را ممکن میسازد «پوسته» یا Shell نام دارد و رایجترین آن در لینوکس، پوسته Bash است. وقتی به یک سرور از راه دور متصل میشوید، معمولاً هیچ محیط گرافیکی وجود ندارد و تنها راه مدیریت سرور، همین خط فرمان است.
یادگیری آموزش خط فرمان لینوکس مزایای فراوانی دارد:
- سرعت. بسیاری از کارها با یک دستور کوتاه، سریعتر از کلیکهای متعدد در محیط گرافیکی انجام میشوند.
- قدرت. با ترکیب دستورها میتوانید عملیات پیچیدهای را که در محیط گرافیکی ممکن نیست، انجام دهید.
- اتوماسیون. میتوانید دستورها را در قالب اسکریپت ذخیره و بهصورت خودکار اجرا کنید.
- مدیریت از راه دور. برای مدیریت سرورهای بدون رابط گرافیکی، خط فرمان تنها گزینه شماست.
نکته: برای تمرین این دستورها بهترین گزینه یک سرور واقعی است. میتوانید از صفحه خرید سرور مجازی یک VPS لینوکسی ارزان تهیه کنید و بدون ترس از خراب کردن سیستم اصلی، تمرین کنید.
پیمایش در سیستم فایل با دستورهای پایه
نخستین چیزی که در آموزش خط فرمان لینوکس باید بیاموزید، حرکت میان پوشهها و مشاهده محتوای آنهاست. برای دیدن اینکه در حال حاضر در کدام پوشه هستید، از دستور pwd (مخفف print working directory) استفاده کنید:
pwd
برای مشاهده فهرست فایلها و پوشههای داخل مسیر فعلی، از ls استفاده میکنید. با افزودن سوییچها میتوانید اطلاعات بیشتری ببینید:
ls
ls -l
ls -lah
سوییچ -l اطلاعات کامل مانند مجوزها و اندازه را نشان میدهد، -a فایلهای مخفی را نیز نمایش میدهد و -h اندازهها را به شکل خوانا (مثلاً KB و MB) نشان میدهد. برای جابهجایی میان پوشهها از cd (مخفف change directory) استفاده میکنید:
cd /var/www
cd ..
cd ~
در این مثال، دستور اول به مسیر مشخصی میرود، cd .. یک پوشه به عقب برمیگردد و cd ~ شما را به پوشه خانگی کاربر بازمیگرداند. درک تفاوت مسیر مطلق (که از ریشه / شروع میشود) و مسیر نسبی (که از موقعیت فعلی شروع میشود) در اینجا بسیار مهم است.
مدیریت فایلها و پوشهها
پس از یادگیری پیمایش، نوبت به ساخت، کپی، جابهجایی و حذف فایلها میرسد. جدول زیر مهمترین دستورهای مدیریت فایل را خلاصه میکند:
| دستور | کاربرد | مثال |
|---|---|---|
| touch | ساخت فایل خالی | touch note.txt |
| mkdir | ساخت پوشه | mkdir project |
| cp | کپی فایل یا پوشه | cp a.txt b.txt |
| mv | جابهجایی یا تغییر نام | mv old.txt new.txt |
| rm | حذف فایل | rm note.txt |
| cat | نمایش محتوای فایل | cat note.txt |
برای ساخت یک پوشه به همراه پوشههای والد آن بهصورت یکجا، از سوییچ -p استفاده کنید:
mkdir -p projects/website/assets
برای حذف یک پوشه به همراه تمام محتوای آن، از سوییچ ترکیبی استفاده میشود، اما در استفاده از آن نهایت دقت را داشته باشید:
rm -r old_project
هشدار جدی: دستور rm -rf / کل سیستم فایل را پاک میکند و بازگشتی وجود ندارد. هرگز دستورهای rm را بدون بررسی دقیق مسیر اجرا نکنید. برخلاف محیط گرافیکی، در خط فرمان سطل بازیافتی وجود ندارد و فایل حذفشده معمولاً برای همیشه از بین میرود.
مشاهده و ویرایش محتوای فایلها
بخش مهمی از آموزش خط فرمان لینوکس، کار با محتوای فایلهاست. برای فایلهای کوتاه، cat کافی است، اما برای فایلهای طولانی از less استفاده کنید که امکان اسکرول و جستجو میدهد:
less /var/log/syslog
برای دیدن ابتدا یا انتهای یک فایل، از head و tail استفاده میکنید. دستور tail بهویژه برای بررسی لاگهای زنده بسیار کاربردی است:
head -n 20 access.log
tail -f access.log
سوییچ -f در tail فایل را بهصورت زنده دنبال میکند و هر خط جدیدی که به آن اضافه شود را بلافاصله نمایش میدهد. برای ویرایش فایلها در ترمینال، ویرایشگر nano سادهترین گزینه برای مبتدیان است:
nano config.txt
در nano با کلیدهای میانبر پایین صفحه کار میکنید؛ برای مثال Ctrl+O برای ذخیره و Ctrl+X برای خروج. ویرایشگرهای پیشرفتهتری مانند vim نیز وجود دارند که قدرت بیشتری دارند اما منحنی یادگیری تندتری دارند.
درک و مدیریت مجوزهای فایل
یکی از مفاهیم کلیدی در لینوکس، سیستم مجوزهاست. هر فایل و پوشه سه سطح دسترسی دارد: خواندن (r)، نوشتن (w) و اجرا (x) که برای سه گروه مالک (owner)، گروه (group) و سایرین (others) تعریف میشوند. وقتی دستور ls -l را اجرا میکنید، این مجوزها را در ابتدای هر خط میبینید، مثلاً -rwxr-xr--. برای تغییر مجوزها از chmod استفاده میشود:
chmod 755 script.sh
chmod +x script.sh
در حالت عددی، هر رقم مجموع مقادیر خواندن (۴)، نوشتن (۲) و اجرا (۱) است. بنابراین ۷ یعنی دسترسی کامل و ۵ یعنی خواندن و اجرا. برای تغییر مالکیت یک فایل از chown استفاده میکنید:
chown www-data:www-data index.html
بسیاری از دستورهای مدیریتی به دسترسی root نیاز دارند. برای اجرای موقت یک دستور با سطح دسترسی مدیر، از sudo در ابتدای آن استفاده میکنید:
sudo systemctl restart nginx
ابزارهای جستجو و مدیریت پردازهها
هرچه بیشتر با لینوکس کار کنید، به ابزارهای جستجو بیشتر نیاز پیدا میکنید. دستور find برای یافتن فایلها بر اساس نام، اندازه یا تاریخ استفاده میشود:
find /var/www -name "*.log"
دستور بسیار قدرتمند grep برای جستجوی یک الگوی متنی درون فایلها به کار میرود. برای مثال، پیدا کردن خطوطی که کلمه error در آنهاست:
grep -i "error" /var/log/syslog
یکی از مفاهیم زیبای لینوکس، لوله یا Pipe است که با علامت | نمایش داده میشود و خروجی یک دستور را به ورودی دستور بعدی میفرستد. برای مثال، شمارش تعداد خطوطی که واژه error دارند:
cat syslog | grep "error" | wc -l
برای مدیریت پردازههای در حال اجرا نیز چند دستور مهم وجود دارد. دستور top یا نسخه مدرنتر آن htop مصرف منابع را بهصورت زنده نشان میدهد، و با ps میتوانید فهرست پردازهها را ببینید:
ps aux
kill 1234
دستور kill یک پردازه را با شناسه (PID) آن متوقف میکند. اگر میخواهید مهارتهای خود را عمیقتر کنید، بخش مقالات رپیدو سرور منبع خوبی برای ادامه مسیر یادگیری شماست.
هدایت خروجی و ترکیب دستورها
یکی از مفاهیمی که آموزش خط فرمان لینوکس را از یک ابزار ساده به یک محیط قدرتمند تبدیل میکند، هدایت ورودی و خروجی (Redirection) است. بهطور پیشفرض، خروجی دستورها روی صفحه نمایش داده میشود، اما میتوانید آن را به یک فایل هدایت کنید. علامت > خروجی را در فایل مینویسد (و محتوای قبلی را پاک میکند) و علامت >> خروجی را به انتهای فایل اضافه میکند:
ls -l > files.txt
echo "خط جدید" >> files.txt
در مقابل، علامت < محتوای یک فایل را بهعنوان ورودی به دستور میدهد. ترکیب این قابلیتها با لوله (pipe)، امکانات فراوانی ایجاد میکند. برای مثال، مرتبسازی محتوای یک فایل و ذخیره نتیجه در فایل دیگر:
sort names.txt | uniq > sorted_unique.txt
این توانایی زنجیر کردن دستورها یکی از فلسفههای اصلی یونیکس است: هر ابزار یک کار را بهخوبی انجام دهد و بتوان آنها را با هم ترکیب کرد تا کارهای پیچیده حل شوند.
کار با متغیرها و مسیر PATH
پوسته Bash از متغیرها برای ذخیره اطلاعات استفاده میکند. متغیرهای محیطی (Environment Variables) اطلاعاتی هستند که برنامهها از آنها استفاده میکنند. برای دیدن همه متغیرهای محیطی:
printenv
یکی از مهمترین متغیرها، PATH است که فهرست پوشههایی را نگه میدارد که پوسته در آنها به دنبال دستورها میگردد. برای مشاهده آن:
echo $PATH
برای ساخت یک متغیر و استفاده از آن:
NAME="RapidoServer"
echo "سلام $NAME"
اگر میخواهید متغیری بهصورت دائمی و در هر بار ورود به سیستم در دسترس باشد، آن را در فایل ~/.bashrc اضافه کنید. این فایل هر بار که یک نشست جدید Bash باز میشود اجرا میگردد و محل مناسبی برای تنظیمات شخصی، متغیرها و نامهای مستعار (alias) است. برای مثال، ساخت یک alias برای دستور طولانی:
alias ll='ls -lah'
فشردهسازی و آرشیو فایلها
در مدیریت سرور، اغلب نیاز دارید چند فایل را در یک بسته جمع کنید یا حجم آنها را کاهش دهید. ابزار استاندارد برای این کار tar است. برای ساخت یک آرشیو فشرده از یک پوشه:
tar -czvf backup.tar.gz /var/www/mysite
در این دستور، سوییچ c برای ساخت، z برای فشردهسازی با gzip، v برای نمایش جزئیات و f برای مشخص کردن نام فایل است. برای استخراج یک آرشیو:
tar -xzvf backup.tar.gz
این دستورها برای گرفتن نسخه پشتیبان از فایلهای مهم سرور بسیار کاربردی هستند و پایه بسیاری از اسکریپتهای خودکار پشتیبانگیری را تشکیل میدهند. با ترکیب tar و دستور scp که پیشتر آموختید، میتوانید نسخه پشتیبان را بهسادگی به سرور دیگری منتقل کنید.
دستورهای شبکه و بررسی اتصال
بخشی جداییناپذیر از مدیریت سرور، کار با شبکه است. چند دستور پایه در این زمینه به شما کمک میکند وضعیت اتصال را بررسی کنید. برای آزمایش دسترسی به یک میزبان:
ping -c 4 google.com
برای دانلود یک فایل از اینترنت مستقیماً در ترمینال، از curl یا wget استفاده میشود:
curl -O https://example.com/file.zip
wget https://example.com/file.zip
برای مشاهده پورتهایی که روی سرور باز هستند و سرویسهایی که به آنها گوش میدهند:
ss -tulpn
این دستور فهرست پورتهای در حال گوش دادن را نشان میدهد و برای عیبیابی مشکلات اتصال یا بررسی امنیتی سرور بسیار مفید است. آشنایی با این ابزارهای شبکه به شما کمک میکند مشکلات دسترسی به سرویسها را سریعتر تشخیص دهید.
مدیریت بستهها و بهروزرسانی سیستم
یکی از کارهای روزمره در مدیریت سرور، نصب و بهروزرسانی نرمافزارهاست. در توزیعهای مبتنی بر دبیان مانند Ubuntu از مدیر بسته apt استفاده میشود. ابتدا فهرست بستهها را بهروز و سپس بستههای نصبشده را ارتقا دهید:
apt update
apt upgrade -y
برای نصب یک بسته جدید، مثلاً ابزار مانیتورینگ htop:
apt install htop -y
و برای حذف یک بسته:
apt remove htop -y
در توزیعهای مبتنی بر ردهت مانند AlmaLinux و CentOS بهجای apt از dnf استفاده میشود، اما منطق کلی یکسان است. عادت بهروزرسانی منظم سیستم یکی از مهمترین اقدامات امنیتی است، زیرا وصلههای امنیتی از این طریق منتشر میشوند و سرور شما را در برابر آسیبپذیریهای شناختهشده محافظت میکنند.
سوالات متداول
آیا برای یادگیری آموزش خط فرمان لینوکس باید برنامهنویسی بلد باشم؟
خیر، برای شروع نیازی به دانش برنامهنویسی ندارید. کار با خط فرمان بیشتر به حفظ و تمرین چند دستور پایه بستگی دارد. با تمرین منظم، بهتدریج مفاهیم پیشرفتهتر مانند اسکریپتنویسی را نیز خواهید آموخت که در آن آشنایی مقدماتی با منطق برنامهنویسی مفید است.
اگر دستور اشتباهی وارد کنم چه اتفاقی میافتد؟
بیشتر دستورها در صورت اشتباه بودن، تنها یک پیام خطا نمایش میدهند و کاری انجام نمیدهند. با این حال، دستورهای مخرب مانند rm -rf میتوانند دادهها را برای همیشه پاک کنند. به همین دلیل توصیه میشود ابتدا روی یک سرور آزمایشی تمرین کنید و پیش از اجرای دستورهای حذف، مسیر را با دقت بررسی نمایید.
تفاوت sudo و root چیست؟
root کاربر اصلی و دارای بالاترین سطح دسترسی در سیستم است. sudo ابزاری است که به یک کاربر معمولی اجازه میدهد یک دستور خاص را با دسترسی root اجرا کند، بدون اینکه لازم باشد کامل وارد حساب root شود. استفاده از sudo امنتر است چون دسترسی مدیریتی را محدود و قابل ردیابی میکند.
چطور میتوانم دستورهای بیشتری یاد بگیرم؟
تقریباً هر دستور در لینوکس یک راهنمای داخلی دارد. با تایپ man و سپس نام دستور، مانند man ls، مستندات کامل آن را میبینید. همچنین بسیاری از دستورها با سوییچ --help خلاصهای از گزینههای خود را نمایش میدهند. تمرین مداوم روی یک سرور واقعی بهترین راه یادگیری است.



