دستورات پرکاربرد Terminal مجموعه‌ای از دستورات لینوکسی هستند که برای مدیریت فایل‌ها، جستجو، پردازش متن، کنترل پروسه‌ها، کار با شبکه و مدیریت سرور به‌کار می‌روند و تسلط بر آن‌ها سرعت کار هر توسعه‌دهنده و مدیر سرور را چند برابر می‌کند.

ترمینال در محیط‌هایی مانند سی‌پنل، SSH و سرورهای لینوکسی، رابط اصلی کار با سیستم است و بسیاری از کارهایی که در رابط گرافیکی زمان‌بر به نظر می‌رسند، با یک دستور ساده انجام می‌شوند.

دستوراتی مانند pwd، ls، cd، grep، find، chmod، ps، top، curl و ssh پایه‌های کار حرفه‌ای با سرور محسوب می‌شوند.

در این راهنما، از ساده‌ترین دستورات تا مباحث پیشرفته مانند Piping، Redirection، مدیریت پروسه‌های پس‌زمینه و اتصال SSH، همه چیز با مثال‌های عملی بررسی می‌شود.

در پروژه‌های سرور و وردپرسی، تجربه‌ام این بوده که توسعه‌دهندگانی که بر Terminal مسلط هستند، در حل مشکلات سرور، بهینه‌سازی دیتابیس و مدیریت فایل‌ها چند برابر سریع‌تر از کسانی عمل می‌کنند که تنها به رابط گرافیکی وابسته‌اند. در ادامه، این دستورات را از پایه تا سطح حرفه‌ای بررسی می‌کنیم.

چرا تسلط بر Terminal برای توسعه‌دهندگان حیاتی است؟

Terminal یک رابط خط فرمان (Command Line Interface) است که در آن دستورات به‌صورت متنی وارد و اجرا می‌شوند. برخلاف رابط گرافیکی که هر عملیات نیازمند چندین کلیک است، در Terminal می‌توان همان عملیات را با یک دستور کوتاه انجام داد.

مزیت اول سرعت است. فرض کنید می‌خواهید تمام فایل‌های PHP یک پروژه را برای یک الگوی خاص جستجو کنید. در رابط گرافیکی، باید پوشه‌به‌پوشه بگردید و هر فایل را باز کنید. در Terminal، دستور grep -r "pattern" --include="*.php" این کار را در چند ثانیه انجام می‌دهد.

مزیت دوم، اتوماسیون است. دستورات Terminal را می‌توان در قالب اسکریپت‌های shell نوشت و به‌صورت خودکار اجرا کرد. این ویژگی، در مدیریت سرور و انجام وظایف تکراری بسیار ارزشمند است.

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

برای مطالعه بیشتر درباره محیط Terminal در cPanel، مقاله میان‌برهای صفحه‌کلید سی‌پنل پیشنهاد می‌شود.

جایگاه Terminal در اکوسیستم وردپرس و سی‌پنل

در محیط‌های میزبانی وب مانند cPanel، Terminal در بخش Advanced در دسترس است و به شما اجازه می‌دهد دستورات لینوکسی را مستقیماً در مرورگر اجرا کنید. این ابزار، برای مدیریت وردپرس، بهینه‌سازی دیتابیس و عیب‌یابی بسیار کاربردی است.

همچنین، ابزار WP-CLI (WordPress Command Line Interface) به شما اجازه می‌دهد وردپرس را از طریق Terminal مدیریت کنید. دستوراتی مانند wp plugin update --all یا wp db optimize از پرکاربردترین دستورات WP-CLI هستند.

مبانی Terminal و ساختار دستورات

پیش از ورود به دستورات، درک ساختار پایه آن‌ها ضروری است. هر دستور در Terminal از سه بخش تشکیل می‌شود: نام دستور، گزینه‌ها (Options) و آرگومان‌ها (Arguments).

command -option argument

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

برای مثال، در دستور ls -la /home/user، نام دستور ls است، گزینه‌ها -la هستند (نمایش تمام فایل‌ها با جزئیات) و آرگومان /home/user مسیر موردنظر است.

میان‌برهای ضروری در Terminal

ترکیب کلیدعملکرد
Tabتکمیل خودکار نام فایل یا دستور
Ctrl+Cلغو دستور در حال اجرا
Ctrl+Rجستجو در تاریخچه دستورات
Ctrl+Aپرش به ابتدای خط
Ctrl+Eپرش به انتهای خط
Ctrl+Lپاک کردن صفحه
↑ / ↓مرور دستورات قبلی و بعدی
Ctrl+Zتعلیق پروسه در حال اجرا
Ctrl+Dخروج از نشست Terminal

میان‌بر Tab یکی از پرکاربردترین و مفیدترین میان‌برهاست. با فشار دادن آن، Terminal نام فایل یا دستور را به‌طور خودکار تکمیل می‌کند. اگر چند گزینه وجود داشته باشد، با دو بار فشار دادن، همه گزینه‌ها نمایش داده می‌شوند.

راهنمای دستورات با man و --help

هر دستور در لینوکس یک صفحه راهنما (Manual) دارد که با دستور man قابل دسترسی است:

man ls

این دستور، صفحه راهنمای کامل دستور ls را نمایش می‌دهد. همچنین، بسیاری از دستورات از گزینه --help پشتیبانی می‌کنند:

ls --help

استفاده از man و --help برای یادگیری سریع دستورات جدید توصیه می‌شود.

دستورات ناوبری و مدیریت فایل

ناوبری در سیستم فایل و مدیریت فایل‌ها، پرکاربردترین بخش کار با Terminal است. در لینوکس، همه چیز یک فایل محسوب می‌شود و تسلط بر این دستورات، پایه تمام کارهای دیگر است.

pwd: نمایش مسیر جاری

دستور pwd (Print Working Directory) مسیر کامل پوشه‌ای که در آن قرار دارید را نمایش می‌دهد:

pwd

خروجی این دستور، مانند /home/username/public_html است. این دستور زمانی مفید است که در پوشه‌های تودرتو گم شده‌اید.

ls: فهرست کردن فایل‌ها

دستور ls فایل‌ها و پوشه‌های پوشه جاری را فهرست می‌کند. این دستور گزینه‌های متعددی دارد که هر یک اطلاعات خاصی ارائه می‌دهند:

ls                    # فهرست ساده
ls -l                 # نمایش جزئیات (دسترسی‌ها، مالک، حجم، تاریخ)
ls -a                 # نمایش فایل‌های مخفی (شروع با .)
ls -lh                # نمایش حجم به‌صورت خوانا (KB, MB, GB)
ls -la                # ترکیب جزئیات و فایل‌های مخفی
ls -lt                # مرتب‌سازی بر اساس تاریخ تغییر
ls -ltr               # مرتب‌سازی معکوس بر اساس تاریخ (جدیدترین آخر)
ls -R                 # نمایش بازگشتی تمام زیرپوشه‌ها
ls -1                 # نمایش هر فایل در یک خط

ترکیب ls -lah یکی از پرکاربردترین دستورات در کار روزانه است.

cd: تغییر پوشه

دستور cd (Change Directory) بین پوشه‌ها جابه‌جا می‌شود:

cd /home/user/public_html   # رفتن به مسیر مطلق
cd public_html               # رفتن به پوشه نسبی
cd ..                        # بازگشت به پوشه والد
cd ../..                     # بازگشت دو سطح بالاتر
cd ~                         # بازگشت به پوشه خانه کاربر
cd -                         # بازگشت به پوشه قبلی

دستور cd - برای جابه‌جایی سریع بین دو پوشه بسیار کاربردی است.

mkdir: ساخت پوشه جدید

mkdir new_folder               # ساخت یک پوشه
mkdir folder1 folder2         # ساخت چند پوشه
mkdir -p parent/child/grand   # ساخت پوشه‌های تودرتو

گزینه -p به شما اجازه می‌دهد پوشه‌های تودرتو را در یک دستور بسازید.

touch: ساخت فایل خالی

touch newfile.txt             # ساخت فایل خالی
touch file1.txt file2.txt    # ساخت چند فایل

cp: کپی فایل و پوشه

cp file1.txt file2.txt           # کپی فایل
cp file.txt /backup/             # کپی به پوشه دیگر
cp -r source_dir/ dest_dir/      # کپی بازگشتی پوشه
cp -v file.txt /backup/          # نمایش جزئیات کپی

mv: انتقال و تغییر نام

mv oldname.txt newname.txt       # تغییر نام
mv file.txt /backup/              # انتقال به پوشه دیگر
mv -v file.txt /backup/           # نمایش جزئیات انتقال

rm: حذف فایل و پوشه

rm file.txt                       # حذف فایل
rm -r folder/                     # حذف پوشه (با محتوا)
rm -rf folder/                    # حذف اجباری بدون تأیید
rm -i file.txt                    # حذف با تأیید

هشدار امنیتی: دستور rm -rf یکی از خطرناک‌ترین دستورات در لینوکس است. هرگز این دستور را با مسیرهای نامعتبر یا متغیرهای خالی به‌کار نبرید. برای مثال، rm -rf / می‌تواند کل سیستم را نابود کند. پیش از اجرا، همیشه مسیر را دوباره بررسی کنید. برای اطلاعات بیشتر درباره مدیریت سرور، مقاله مدیریت سرور Linux برای مبتدیان پیشنهاد می‌شود.

rmdir: حذف پوشه خالی

rmdir empty_folder/

دستور rmdir فقط پوشه‌های خالی را حذف می‌کند. برای حذف پوشه‌های با محتوا، باید از rm -r استفاده کنید.

ln: ساخت لینک

ln -s /path/to/original linkname     # لینک نمادین (Symbolic Link)
ln /path/to/original linkname         # لینک سخت (Hard Link)

لینک نمادین مانند یک میان‌بر در ویندوز عمل می‌کند و در پروژه‌های وردپرسی، برای اتصال پوشه‌ها بین دو مکان استفاده می‌شود.

دستورات مشاهده و ویرایش فایل

مشاهده و ویرایش فایل‌ها، یکی دیگر از کارهای روزانه در Terminal است.

cat: نمایش محتوای فایل

cat file.txt                     # نمایش کل محتوا
cat -n file.txt                  # نمایش با شماره خط
cat file1.txt file2.txt          # نمایش چند فایل پشت سر هم

دستور cat برای فایل‌های کوچک مناسب است. برای فایل‌های بزرگ، بهتر است از less استفاده کنید.

less و more: مشاهده صفحه‌به‌صفحه

less largefile.log               # مشاهده صفحه‌به‌صفحه
more largefile.log               # نسخه ساده‌تر less

در less، می‌توانید با کلیدهای جهت‌دار حرکت کنید، با / جستجو کنید و با q خارج شوید.

head و tail: نمایش ابتدا و انتهای فایل

head file.txt                    # ۱۰ خط اول
head -n 20 file.txt              # ۲۰ خط اول
tail file.txt                    # ۱۰ خط آخر
tail -n 20 file.txt              # ۲۰ خط آخر
tail -f log.txt                  # دنبال کردن زنده فایل لاگ

دستور tail -f برای پایش زنده لاگ‌های سرور بسیار کاربردی است. با این دستور، هر خط جدیدی که به فایل اضافه شود، بلافاصله نمایش داده می‌شود. این دستور را می‌توان با Ctrl+C متوقف کرد.

nano و vim: ویرایش فایل

nano file.txt                    # ویرایشگر ساده
vim file.txt                     # ویرایشگر حرفه‌ای

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

wc: شمارش کلمات و خطوط

wc file.txt                      # تعداد خطوط، کلمات و کاراکترها
wc -l file.txt                   # فقط تعداد خطوط
wc -w file.txt                   # فقط تعداد کلمات

دستورات جستجو در فایل‌ها و محتوا

جستجو در فایل‌ها و محتوای آن‌ها، یکی از پرکاربردترین کارها در Terminal است.

find: جستجوی فایل

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

find /path -name "file.txt"           # جستجو با نام دقیق
find /path -iname "file.txt"          # جستجو بدون حساسیت به حروف بزرگ
find /path -type f -name "*.php"      # جستجوی فایل‌های PHP
find /path -type d -name "cache"      # جستجوی پوشه
find /path -mtime -7                  # فایل‌های تغییریافته در ۷ روز اخیر
find /path -size +10M                 # فایل‌های بزرگتر از ۱۰ مگابایت
find /path -name "*.log" -delete      # حذف فایل‌های یافت‌شده
find /path -type f -exec chmod 644 {} \;  # اجرای دستور روی فایل‌ها

دستور find با گزینه -exec می‌تواند دستورات دیگر را روی فایل‌های یافت‌شده اجرا کند. این ویژگی، برای بهینه‌سازی دسترسی‌ها یا پاکسازی فایل‌های قدیمی بسیار مفید است.

locate: جستجوی سریع

locate file.txt                    # جستجوی سریع در پایگاه داده
updatedb                           # به‌روزرسانی پایگاه داده locate

دستور locate سریع‌تر از find عمل می‌کند، زیرا از یک پایگاه داده از پیش ساخته‌شده استفاده می‌کند. برای به‌روزرسانی این پایگاه داده، از updatedb استفاده می‌شود.

which و whereis: پیدا کردن مسیر دستور

which php                          # مسیر اجرایی PHP
whereis php                        # مسیر اجرایی و مستندات

پردازش متن با grep، awk و sed

پردازش متن یکی از قوی‌ترین قابلیت‌های Terminal است. ابزارهایی مانند grep، awk و sed به شما اجازه می‌دهند متن‌ها را جستجو، فیلتر و تغییر دهید.

grep: جستجوی الگو در متن

دستور grep (Global Regular Expression Print) متن را بر اساس الگو جستجو می‌کند:

grep "pattern" file.txt              # جستجو در یک فایل
grep -r "pattern" /path/             # جستجوی بازگشتی در پوشه
grep -i "pattern" file.txt           # جستجو بدون حساسیت به حروف
grep -n "pattern" file.txt           # نمایش شماره خط
grep -v "pattern" file.txt           # نمایش خطوطی که مطابقت ندارند
grep -c "pattern" file.txt           # شمارش خطوط مطابق
grep -E "pattern1|pattern2" file.txt # جستجو با Regular Expression
grep -w "word" file.txt              # جستجوی کلمه کامل
grep -l "pattern" *.txt              # نمایش نام فایل‌های حاوی الگو
grep -r "pattern" --include="*.php"  # جستجو فقط در فایل‌های PHP

دستور grep -r "pattern" --include="*.php" یکی از پرکاربردترین دستورات در عیب‌یابی پروژه‌های وردپرسی است. با این دستور، می‌توان یک تابع یا متغیر خاص را در تمام فایل‌های PHP پروژه جستجو کرد.

awk: پردازش ستونی متن

دستور awk برای پردازش متن‌های ستونی بسیار قدرتمند است:

awk '{print $1}' file.txt          # نمایش ستون اول
awk '{print $1, $3}' file.txt      # نمایش ستون‌های ۱ و ۳
awk -F: '{print $1}' /etc/passwd   # تعیین جداکننده (اینجا :)
awk '/pattern/ {print $2}' file.txt # فیلتر و نمایش ستون

دستور awk معمولاً در ترکیب با سایر دستورات و در تحلیل لاگ‌های سرور استفاده می‌شود.

sed: ویرایش جریانی متن

دستور sed (Stream Editor) برای جستجو و جایگزینی در متن استفاده می‌شود:

sed 's/old/new/' file.txt          # جایگزینی اولین رخداد در هر خط
sed 's/old/new/g' file.txt         # جایگزینی همه رخدادها
sed -i 's/old/new/g' file.txt      # جایگزینی مستقیم در فایل
sed -n '5,10p' file.txt             # نمایش خطوط ۵ تا ۱۰

گزینه -i تغییرات را مستقیماً در فایل اعمال می‌کند. هشدار: پیش از استفاده از sed -i، از فایل پشتیبان تهیه کنید.

Piping و Redirection در Terminal

Piping و Redirection دو مکانیزم قدرتمند در Terminal هستند که به شما اجازه می‌دهند خروجی یک دستور را به ورودی دستور دیگر متصل کنید یا آن را در فایل ذخیره کنید.

Piping با |

نشان | (پایپ) خروجی دستور اول را به ورودی دستور دوم می‌فرستد:

ls -la | grep ".log"                # فیلتر خروجی ls
ps aux | grep "php"                 # جستجو در پروسه‌ها
cat file.txt | wc -l                # شمارش خطوط
history | grep "wp"                 # جستجو در تاریخچه دستورات

Redirection با > و >>

command > file.txt                  # ذخیره خروجی (بازنویسی)
command >> file.txt                 # افزودن به انتهای فایل
command 2> error.txt                # ذخیره خطاها
command > output.txt 2>&1           # ذخیره خروجی و خطاها

نشان > فایل را بازنویسی می‌کند و >> محتوا را به انتهای فایل اضافه می‌کند.

ترکیب Piping و Redirection

ps aux | grep "php" | awk '{print $2}' > pids.txt
cat access.log | grep "404" | wc -l

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

مدیریت دسترسی و مالکیت فایل‌ها

مدیریت دسترسی‌ها (Permissions) و مالکیت (Ownership) فایل‌ها، بخش مهمی از امنیت سرور است.

chmod: تغییر دسترسی‌ها

دستور chmod (Change Mode) دسترسی‌های فایل را تغییر می‌دهد. دسترسی‌ها در لینوکس به سه گروه تقسیم می‌شوند: مالک (Owner)، گروه (Group) و دیگران (Others). هر گروه سه نوع دسترسی دارد: خواندن (r=4)، نوشتن (w=2) و اجرا (x=1).

chmod 755 file.txt                  # rwxr-xr-x
chmod 644 file.txt                  # rw-r--r--
chmod 600 file.txt                  # rw-------
chmod 777 file.txt                  # rwxrwxrwx (ناامن)
chmod +x script.sh                  # افزودن دسترسی اجرا
chmod -R 755 /path/folder/          # تغییر بازگشتی

نکته امنیتی: دسترسی ۷۷۷ یعنی همه کاربران می‌توانند فایل را بخوانند، بنویسند و اجرا کنند. این دسترسی در محیط Production توصیه نمی‌شود. برای فایل‌های وردپرس، معمولاً دسترسی ۶۴۴ برای فایل‌ها و ۷۵۵ برای پوشه‌ها مناسب است.

chown: تغییر مالکیت

chown user:group file.txt           # تغییر مالک و گروه
chown -R user:group /path/          # تغییر بازگشتی
chown user file.txt                 # تغییر فقط مالک

chgrp: تغییر گروه

chgrp group file.txt                # تغییر گروه
chgrp -R group /path/               # تغییر بازگشتی

umask: تنظیم دسترسی پیش‌فرض

umask                               # نمایش مقدار فعلی
umask 022                           # تنظیم دسترسی پیش‌فرض

مقدار umask تعیین می‌کند که دسترسی‌های پیش‌فرض برای فایل‌های جدید چه باشد. مقدار پیش‌فرض معمولاً ۰۲۲ است.

مدیریت پروسه‌ها و منابع سیستم

مدیریت پروسه‌ها (Processes) یکی از کارهای روزانه مدیران سرور است.

ps: نمایش پروسه‌های در حال اجرا

ps aux                              # نمایش همه پروسه‌ها با جزئیات
ps -ef                              # نمایش همه پروسه‌ها (فرمت متفاوت)
ps aux | grep "php"                 # جستجوی پروسه PHP
ps -u username                      # پروسه‌های یک کاربر خاص

top و htop: پایش زنده منابع

top                                 # پایش زنده پروسه‌ها
htop                                # نسخه تعاملی top

در top، می‌توانید با کلید q خارج شوید، با M بر اساس مصرف حافظه مرتب کنید و با P بر اساس مصرف CPU مرتب کنید.

kill: پایان دادن به پروسه

kill 1234                           # پایان با سیگنال پیش‌فرض (SIGTERM)
kill -9 1234                        # پایان اجباری (SIGKILL)
killall php                         # پایان همه پروسه‌های PHP
pkill -f "php-fpm"                  # پایان با الگوی نام

سیگنال SIGTERM (پیش‌فرض) به پروسه اجازه می‌دهد به‌صورت تمیز خارج شود. سیگنال SIGKILL (-9) پروسه را به‌طور اجباری و بدون فرصت خروج نابود می‌کند.

bg، fg و jobs: مدیریت پروسه‌های پس‌زمینه

command &                            # اجرا در پس‌زمینه
Ctrl+Z                               # تعلیق پروسه جاری
bg                                   # ادامه در پس‌زمینه
fg                                   # بازگشت به پیش‌زمینه
jobs                                 # نمایش پروسه‌های پس‌زمینه

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

nice و renice: اولویت پروسه‌ها

nice -n 10 command                   # اجرا با اولویت پایین‌تر
renice -n -5 -p 1234                # تغییر اولویت پروسه موجود

مقدار nice از ۱۹- (بالاترین اولویت) تا ۱۹ (پایین‌ترین اولویت) متغیر است. استفاده از nice برای پروسه‌های سنگین در سرورهای پرترافیک توصیه می‌شود.

دستورات شبکه و اتصالات

دستورات شبکه برای عیب‌یابی اتصالات و بررسی وضعیت شبکه ضروری هستند.

ping: تست اتصال

ping google.com                      # تست اتصال
ping -c 5 google.com                 # ارسال ۵ بسته و توقف

curl و wget: دریافت داده از اینترنت

curl https://example.com             # دریافت محتوای URL
curl -I https://example.com          # دریافت فقط هدرها
curl -o file.txt https://example.com/file.txt  # ذخیره در فایل
wget https://example.com/file.zip    # دانلود فایل
wget -r https://example.com          # دانلود بازگشتی

دستور curl برای تست APIها و بررسی پاسخ سرور بسیار کاربردی است. برای مثال، curl -I https://example.com هدرهای HTTP را نمایش می‌دهد و می‌تواند در عیب‌یابی مشکلات SSL و Redirect مفید باشد.

ss و netstat: نمایش اتصالات شبکه

ss -tuln                             # نمایش پورت‌های باز
ss -tulpn                            # نمایش پورت‌ها با نام پروسه
netstat -tuln                        # نسخه قدیمی‌تر ss

ip و ifconfig: نمایش اطلاعات شبکه

ip addr show                         # نمایش آدرس‌های IP
ip link show                         # نمایش وضعیت اینترفیس‌ها
ifconfig                             # نسخه قدیمی‌تر ip

traceroute: ردیابی مسیر

traceroute google.com                # ردیابی مسیر بسته‌ها

آرشیو و فشرده‌سازی فایل‌ها

آرشیو و فشرده‌سازی، بخش مهمی از مدیریت فایل‌هاست.

tar: آرشیو و استخراج

tar -czvf archive.tar.gz folder/     # ساخت آرشیو gzip
tar -xzvf archive.tar.gz             # استخراج آرشیو gzip
tar -cjvf archive.tar.bz2 folder/    # ساخت آرشیو bzip2
tar -xjvf archive.tar.bz2            # استخراج آرشیو bzip2
tar -tzvf archive.tar.gz             # مشاهده محتوای آرشیو

در دستور tar -czvf، حروف به‌معنای زیر هستند: c ایجاد، z فشرده‌سازی gzip، v نمایش جزئیات، f نام فایل.

zip و unzip

zip -r archive.zip folder/           # ساخت آرشیو zip
unzip archive.zip                    # استخراج آرشیو zip
unzip -l archive.zip                 # مشاهده محتوای آرشیو

gzip و gunzip

gzip file.txt                        # فشرده‌سازی
gunzip file.txt.gz                   # استخراج

اطلاعات سیستم و منابع سخت‌افزاری

بررسی اطلاعات سیستم و منابع سخت‌افزاری، بخش مهمی از مدیریت سرور است.

uname: اطلاعات سیستم

uname -a                             # اطلاعات کامل سیستم
uname -r                             # نسخه کرنل

df و du: فضای دیسک

df -h                                # فضای دیسک (خوانا)
df -i                                # فضای inode
du -sh /path/                        # حجم پوشه
du -sh * | sort -rh | head -10       # ۱۰ پوشه بزرگ

دستور du -sh * | sort -rh | head -10 یکی از پرکاربردترین دستورات برای پیدا کردن پوشه‌های بزرگ و آزادسازی فضا است.

free: حافظه

free -h                              # نمایش حافظه (خوانا)
free -m                              # نمایش حافظه به مگابایت

lscpu و cat /proc/cpuinfo: اطلاعات CPU

lscpu                                # اطلاعات CPU
cat /proc/cpuinfo                    # جزئیات CPU

uptime و w: زمان فعالیت و کاربران

uptime                               # زمان فعالیت و بار سیستم
w                                    # کاربران آنلاین

کار با SSH و اتصال از راه دور

SSH (Secure Shell) پروتکل استاندارد برای اتصال امن به سرورهای راه دور است.

اتصال به سرور

ssh username@hostname                # اتصال ساده
ssh -p 2222 username@hostname        # اتصال با پورت غیرپیش‌فرض
ssh -i ~/.ssh/key.pem username@host  # اتصال با کلید خصوصی

انتقال فایل با scp و rsync

scp file.txt username@host:/path/    # کپی فایل به سرور
scp -r folder/ username@host:/path/  # کپی بازگشتی
rsync -avz folder/ username@host:/path/  # همگام‌سازی سریع

دستور rsync برای همگام‌سازی پوشه‌های بزرگ بسیار کارآمدتر از scp است، زیرا فقط فایل‌های تغییریافته را منتقل می‌کند.

تولید و مدیریت کلید SSH

ssh-keygen -t rsa -b 4096            # تولید کلید SSH
ssh-copy-id username@host            # کپی کلید عمومی به سرور
cat ~/.ssh/id_rsa.pub                # نمایش کلید عمومی

دستورات خطرناک و نکات امنیتی

در Terminal، برخی دستورات در صورت استفاده نادرست می‌توانند خسارت جبران‌ناپذیری وارد کنند. شناخت این دستورات و رعایت اصول امنیتی، ضروری است.

دستورات پرخطر

دستورخطرتوصیه
rm -rf /حذف کل سیستمهرگز اجرا نکنید
rm -rf *حذف همه فایل‌های پوشه جاریمسیر را دوباره بررسی کنید
dd if=/dev/zero of=/dev/sdaپاک کردن کل دیسکهرگز اجرا نکنید
chmod -R 777 /دسترسی کامل به همه فایل‌هادسترسی محدود اعمال کنید
mkfs.ext4 /dev/sda1فرمت کردن پارتیشنپیش از اجرا مطمئن شوید
> file.txtپاک کردن محتوای فایلاز فایل پشتیبان تهیه کنید

اصول امنیتی کار با Terminal

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

اصل دوم، تست دستورات در محیط Staging است. هرگز دستورات آزمایشی را مستقیماً روی سرور Production اجرا نکنید.

اصل سوم، استفاده از دسترسی محدود است. به‌جای کار با کاربر root، از یک کاربر با دسترسی‌های محدود استفاده کنید و فقط در زمان نیاز از sudo استفاده کنید.

اصل چهارم، تأیید مسیرها پیش از اجرای دستورات است. برای دستوراتی مانند rm -rf، ابتدا با pwd مسیر جاری را بررسی کنید و سپس دستور را اجرا کنید.

برای مطالعه بیشتر درباره امنیت سرور، مقاله امنیت سرور (Server Security) دقیقاً بر چه اصولی استوار است؟ پیشنهاد می‌شود.

اشتباهات رایج در کار با Terminal

نادیده گرفتن تفاوت حروف بزرگ و کوچک

در لینوکس، نام فایل‌ها و دستورات به حروف بزرگ و کوچک حساس هستند. File.txt با file.txt متفاوت است. این موضوع در ویندوز وجود ندارد و کاربران تازه‌وارد اغلب به آن دچار می‌شوند.

فراموش کردن مسیر جاری

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

استفاده از rm -rf بدون تأیید

دستور rm -rf بدون تأیید و بازگشت‌ناپذیر است. همیشه از گزینه -i برای تأیید استفاده کنید یا مسیر را با ls بررسی کنید.

نادیده گرفتن Redirection

استفاده از > به‌جای >> باعث بازنویسی فایل می‌شود و محتوای قبلی از دست می‌رود. دقت کنید که از کدام Redirection استفاده می‌کنید.

نداشتن نسخه پشتیبان

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

اجرای دستورات کپی‌شده از اینترنت بدون بررسی

هرگز دستوراتی که از اینترنت کپی می‌کنید را بدون بررسی مستقیم اجرا نکنید. دستوراتی مانند curl | bash می‌توانند مخرب باشند. همیشه دستور را قبل از اجرا تحلیل کنید.

نادیده گرفتن خطاها

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

پرسش‌های پرتکرار درباره دستورات Terminal

چطور در Terminal مسیر جاری را ببینیم؟

با دستور pwd می‌توانید مسیر کامل پوشه جاری را مشاهده کنید.

چطور یک پوشه جدید بسازیم؟

با دستور mkdir folder_name می‌توانید پوشه جدید بسازید. برای ساخت پوشه‌های تودرتو، از mkdir -p parent/child استفاده کنید.

چطور یک فایل را کپی کنیم؟

با دستور cp source destination می‌توانید فایل را کپی کنید. برای کپی پوشه، از cp -r source/ dest/ استفاده کنید.

چطور یک فایل را حذف کنیم؟

با دستور rm file.txt فایل حذف می‌شود. برای حذف پوشه با محتوا، از rm -r folder/ استفاده کنید.

چطور محتوای یک فایل را ببینیم؟

با دستور cat file.txt می‌توانید محتوای فایل را ببینید. برای فایل‌های بزرگ، از less file.txt استفاده کنید.

چطور در فایل‌ها جستجو کنیم؟

با دستور grep "pattern" file.txt در یک فایل جستجو کنید. برای جستجوی بازگشتی در پوشه، از grep -r "pattern" /path/ استفاده کنید.

چطور فایل‌های PHP را در پوشه جستجو کنیم؟

با دستور find /path -type f -name "*.php" می‌توانید تمام فایل‌های PHP را پیدا کنید.

چطور دسترسی یک فایل را تغییر دهیم؟

با دستور chmod 644 file.txt دسترسی فایل را تغییر دهید. برای پوشه‌ها معمولاً از chmod 755 folder/ استفاده می‌شود.

چطور مالک یک فایل را تغییر دهیم؟

با دستور chown user:group file.txt مالک و گروه فایل را تغییر دهید.

چطور پروسه‌های در حال اجرا را ببینیم؟

با دستور ps aux همه پروسه‌ها را ببینید. برای جستجوی پروسه خاص، از ps aux | grep "php" استفاده کنید.

چطور یک پروسه را متوقف کنیم؟

با دستور kill PID پروسه را متوقف کنید. برای توقف اجباری، از kill -9 PID استفاده کنید.

چطور فضای دیسک را بررسی کنیم؟

با دستور df -h فضای دیسک را ببینید. برای پیدا کردن پوشه‌های بزرگ، از du -sh * | sort -rh | head -10 استفاده کنید.

چطور یک فایل را از سرور دانلود کنیم؟

با دستور wget https://example.com/file.zip فایل را دانلود کنید. برای دانلود با curl، از curl -O https://example.com/file.zip استفاده کنید.

چطور به یک سرور SSH بزنیم؟

با دستور ssh username@hostname به سرور متصل شوید. برای اتصال با پورت غیرپیش‌فرض، از ssh -p 2222 username@hostname استفاده کنید.

چطور یک فایل را از یک سرور به سرور دیگر منتقل کنیم؟

با دستور scp file.txt username@host:/path/ فایل را منتقل کنید. برای پوشه، از scp -r folder/ username@host:/path/ استفاده کنید.

چطور یک آرشیو tar.gz بسازیم؟

با دستور tar -czvf archive.tar.gz folder/ آرشیو gzip بسازید. برای استخراج، از tar -xzvf archive.tar.gz استفاده کنید.

چطور یک فایل zip را استخراج کنیم؟

با دستور unzip archive.zip فایل zip را استخراج کنید.

چطور در تاریخچه دستورات جستجو کنیم؟

با Ctrl+R در Terminal، می‌توانید در تاریخچه دستورات جستجو کنید. بخشی از دستور را تایپ کنید تا آخرین دستور مطابق نمایش داده شود.

چطور یک اسکریپت را در پس‌زمینه اجرا کنیم؟

با قرار دادن & در انتهای دستور، آن را در پس‌زمینه اجرا کنید: script.sh &.

چطور یک پروسه پس‌زمینه را به پیش‌زمینه بیاوریم؟

با دستور fg می‌توانید آخرین پروسه پس‌زمینه را به پیش‌زمینه بیاورید.

چطور همه فایل‌های یک پوشه را حذف کنیم؟

با دستور rm -rf /path/folder/* همه فایل‌های داخل پوشه را حذف کنید. هشدار: این دستور بازگشت‌ناپذیر است.

چطور یک پورت باز را بررسی کنیم؟

با دستور ss -tuln تمام پورت‌های باز را ببینید. برای پیدا کردن پروسه یک پورت خاص، از ss -tulpn | grep ":80" استفاده کنید.

چطور محتوای یک فایل را جستجو و جایگزین کنیم؟

با دستور sed -i 's/old/new/g' file.txt محتوای فایل را جستجو و جایگزین کنید. هشدار: پیش از اجرا نسخه پشتیبان تهیه کنید.

چطور یک فایل را بدون باز کردن ویرایشگر تغییر دهیم؟

با دستور echo "new content" > file.txt می‌توانید محتوای فایل را جایگزین کنید. برای افزودن، از echo "more content" >> file.txt استفاده کنید.

اگر این موضوع را در پروژه‌ای پیاده کردید، برایم جالب است بدانم کدام دستور Terminal بیشترین تأثیر را بر سرعت کار شما داشت — مدیریت فایل با find و grep، پردازش متن با awk و sed، یا مدیریت پروسه‌ها با ps و kill. تجربه خودتان را در دیدگاه‌ها بنویسید؛ به‌خصوص اگر دستور کاربردی دیگری می‌شناسید که می‌تواند برای خواننده بعدی مفید باشد.