linux basic

1405/04/12

به دنیای شگفت‌انگیز لینوکس خوش آمدید! اگر تازه قدم به این سیستم‌عامل قدرتمند و متن‌باز گذاشته‌اید، شاید در نگاه اول همه چیز کمی گنگ یا پیچیده به نظر برسد. اما نگران نباشید؛ ساختار لینوکس بسیار منطقی و منظم طراحی شده است.

در این مقاله جامع آموزشی، ابتدا ساختار درختواره‌ای پوشه‌ها (Filesystem Hierarchy) را بررسی می‌کنیم تا بدانید هر چیزی در کجا قرار دارد، و سپس به سراغ جعبه‌ابزار اصلی هر متخصص لینوکس، یعنی دستورات پایه و کاربردی ترمینال به همراه مهم‌ترین سوییچ‌ها و مثال‌های واقعی می‌رویم.


بخش اول: کالبدشکافی ساختار پوشه‌بندی لینوکس (FHS)

برخلاف ویندوز که هر درایو (C: یا D:) ساختار مجزایی دارد، در لینوکس همه چیز از یک ریشه واحد به نام Root شروع می‌شود که با علامت اسلش / نشان داده می‌شود. تمام فایل‌ها، پوشه‌ها و حتی سخت‌افزارها به این ریشه متصل هستند.

My Image

در ادامه، وظیفه مهم‌ترین دایرکتوری‌های زیرمجموعه / را بررسی می‌کنیم:

  • /bin (Binaries): حاوی دستورات و برنامه‌های اجرایی پایه‌ای سیستم است که برای همه کاربران (حتی در حالت اضطراری) در دسترس است (مثل ls، cd، cp).
  • /sbin (System Binaries): مشابه /bin است، اما برنامه‌های اجرایی این پوشه مخصوص مدیر سیستم (Root) هستند و برای کارهای مدیریتی و نگهداری سیستم استفاده می‌شوند (مثل ifconfig، reboot).
  • /etc (Etcetera): قلب تپنده تنظیمات سیستم. تمام فایل‌های کانفیگ سیستم‌عامل و برنامه‌های نصب‌شده (مثل تنظیمات شبکه، وب‌سرور و...) در این پوشه قرار دارند.
  • /home: خانه کاربران عادی. هر کاربر یک پوشه اختصاصی در این مسیر دارد (مثلاً /home/saleh) که فایل‌های شخصی، دسکتاپ و تنظیمات برنامه‌هایش در آن ذخیره می‌شود.
  • /root: پوشه شخصی کاربر لینوکس (Superuser). این پوشه از دایرکتوری /home جدا است تا امنیت آن حفظ شود.
  • /var (Variable): حاوی فایل‌هایی است که حجم یا محتوای آن‌ها به مرور زمان تغییر می‌کند؛ مانند فایل‌های لاگ سیستم (/var/log)، ایمیل‌ها و پایگاه‌های داده.
  • /tmp (Temporary): محل ذخیره فایل‌های موقتی که توسط سیستم یا برنامه‌ها ایجاد می‌شوند. معمولاً با هر بار ری‌استارت شدن سیستم، محتوای این پوشه پاک می‌شود.
  • /dev (Devices): در لینوکس «همه چیز یک فایل است»، حتی سخت‌افزارها! این پوشه شامل فایل‌های رابط برای دسترسی به سخت‌افزارها مثل هارد دیسک‌ها (sda)، پورت‌های یو‌اس‌بی و ترمینال‌هاست.
  • /usr (User System Resources): شامل برنامه‌ها، کتابخانه‌ها و مستنداتی است که توسط کاربران استفاده می‌شود. برنامه‌هایی که بعداً نصب می‌کنید معمولاً در /usr/bin یا /usr/local/bin قرار می‌گیرند.
  • /opt (Optional): محل نصب برنامه‌های جانبی و تجاری که خارج از مخازن رسمی لینوکس هستند (مثل Google Chrome یا Discord).
  • /boot: حاوی فایل‌های حیاتی برای بوت شدن و راه‌اندازی لینوکس، از جمله هسته لینوکس (Kernel) و منوی گراب (GRUB) است.
  • /media & /mnt: مسیرهایی برای متصل کردن (Mount) موقت حافظه‌های خارجی مثل فلش مموری، هارد اکسترنال یا پارتیشن‌های دیگر.

بخش دوم: دانشنامه دستورات پایه و حیاتی لینوکس

حالا که با نقشه لینوکس آشنا شدید، وقت آن است که یاد بگیرید چگونه با ترمینال حرکت کنید و سیستم را کنترل کنید. در ادامه، دستورات را دسته‌بندی کرده‌ایم تا یادگیری آن‌ها آسان‌تر شود.

دستورات ناوبری و مدیریت مسیر (Navigation)


دستور pwd (Print Working Directory)

نشان می‌دهد که دقیقاً در کدام دایرکتوری قرار دارید.

مثال:

pwd

خروجی: /home/user/projects

دستور cd (Change Directory)

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

سوییچ‌ها/نشانه‌های مهم:

  • cd ~ یا فقط cd: رفتن مستقیم به پوشه Home کاربر.
  • cd ..: برگشتن به یک پوشه عقب‌تر (پوشه والد).
  • cd -: برگشتن به آخرین پوشه‌ای که در آن بودید.

مثال:

cd /var/log
cd ..


دستورات مدیریت فایل و پوشه (File Management)


دستور ls (List)

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

سوییچ‌های مهم:

  • -l: نمایش لیست به صورت تفصیلی (همراه با حجم، دسترسی‌ها و تاریخ).
  • -a: نمایش همه فایل‌ها، حتی فایل‌های مخفی (آن‌هایی که با نقطه . شروع می‌شوند).
  • -h: نمایش حجم فایل‌ها به صورت خوانا برای انسان (KB, MB, GB).

مثال:

ls -lah /etc

دستور mkdir (Make Directory)

ساختن پوشه جدید.

سوییچ‌های مهم:

  • -p: ساختن پوشه‌های تودرتو به صورت خودکار (اگر پوشه‌های والد وجود نداشته باشند، آن‌ها را می‌سازد).

مثال:

mkdir -p project/src/components

دستور touch

ساخت یک فایل خالی جدید یا به‌روزرسانی تاریخچه دسترسی به فایل.

مثال:

touch index.html script.js

دستور cp (Copy)

کپی کردن فایل‌ها و پوشه‌ها.

سوییچ‌های مهم:

  • -r: کپی کردن به صورت بازگشتی (Recursive)؛ برای کپی کردن پوشه‌ها الزامی است.
  • -i: قبل از جایگزین کردن فایل هم‌نام، سوال می‌پرسد.

مثال:

cp -r /home/user/documents /backup/

دستور mv (Move / Rename)

انتقال دادن فایل/پوشه یا تغییر نام آن.

سوییچ‌های مهم:

  • -f: انتقال اجباری بدون پرسش (Force).

مثال:

mv old_name.txt new_name.txt  # تغییر نام
mv file.txt /tmp/             # انتقال

دستور rm (Remove)

حذف فایل‌ها و پوشه‌ها (مراقب باشید، لینوکس سطل آشغال ندارد!).

سوییچ‌های مهم:

  • -r: حذف پوشه‌ها و محتویات درون آن‌ها به صورت بازگشتی.
  • -f: حذف اجباری بدون پرسش و نادیده گرفتن خطاها.

مثال:

rm -rf /path/to/dangerous_folder


دستورات مشاهده و پردازش متن (Text Processing)


دستور cat (Concatenate)

نمایش کل محتوای یک فایل متنی در ترمینال.

سوییچ‌های مهم:

  • -n: شماره‌گذاری خطوط متنی.

مثال:

cat -n /etc/hostname

دستورات less و more

برای خواندن فایل‌های متنی طولانی به صورت صفحه‌به‌صفحه (با کلید Space جلو می‌رود و در less با کلیدهای جهت‌نما بالا و پایین می‌رود؛ خروج با کلید q).

مثال:

less /var/log/syslog

دستورات head و tail

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

سوییچ‌های مهم:

  • -n: تعداد خطوط مورد نظر برای نمایش.
  • -f (فقط در tail): نمایش آنلاین و زنده خطوط جدیدی که به فایل اضافه می‌شوند (فوق‌العاده برای مانیتور کردن لاگ‌ها).

مثال:

head -n 5 /etc/passwd
tail -f /var/log/nginx/access.log

دستور grep (Global Regular Expression Print)

جستجوی یک متن یا الگوی خاص درون فایل‌ها.

سوییچ‌های مهم:

  • -i: نادیده گرفتن کوچک یا بزرگ بودن حروف (Case-insensitive).
  • -r: جستجوی بازگشتی درون تمام فایل‌های یک پوشه.
  • -n: نمایش شماره خطی که کلمه در آن پیدا شده است.

مثال:

grep -rn "error" /var/log/


دستورات مدیریت دسترسی‌ها (Permissions & Ownership)

در لینوکس، دسترسی‌ها به سه دسته User (u)، Group (g) و Others (o) تقسیم می‌شوند و شامل سه حالت Read (r=4)، Write (w=2) و Execute (x=1) هستند.

دستور chmod (Change Mode)

تغییر سطح دسترسی فایل یا پوشه.

مثال (روش عددی):

chmod 755 script.sh  # کاربر کامل، بقیه فقط خواندن و اجرا
chmod 644 file.txt   # کاربر خواندن و نوشتن، بقیه فقط خواندن

مثال (روش حروفی):

chmod +x script.sh   # اضافه کردن قابلیت اجرا به فایل

دستور chown (Change Owner)

تغییر مالک (Owner) یا گروه فایل و پوشه.

مثال:

chown saleh:developers document.pdf
chown -R www-data:www-data /var/www/html  # تغییر مالکیت پوشه وب‌سرور به صورت بازگشتی


دستورات سیستم و مدیریت فرآیندها (System & Processes)


دستور sudo (Superuser Do)

اجرای دستورات با دسترسی بالاترین کاربر سیستم (Root یا مدیر).

مثال:

sudo apt update

دستورات ps و top / htop

نمایش فرآیندها (Process) در حال اجرا در سیستم.

  • ps aux: لیستی از تمام فرآیندهای در حال اجرا در آن لحظه نشان می‌دهد.
  • top یا htop: ابزار گرافیکی و زنده برای مانیتورینگ مصرف CPU، رم و فرآیندها. مثال:
ps aux | grep mysql

دستور kill

پایان دادن به یک فرآیند با استفاده از شناسه آن (PID).

سوییچ‌های مهم:

  • -9: بستن اجباری و فوری فرآیند (Force Kill).

مثال:

kill -9 1234

دستورات df و du (Disk Usage)

  • df -h: نمایش فضای کل، پر شده و خالی پارتیشن‌های هارد دیسک به صورت خوانا.
  • du -sh *: نمایش حجم هر کدام از پوشه‌ها و فایل‌های موجود در دایرکتوری فعلی به صورت خلاصه. مثال:
df -h
du -sh /var/log/


دستورات شبکه و دانلود (Networking & Download)


دستور ping

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

سوییچ‌های مهم:

  • -c: تعیین تعداد پکت‌های ارسالی (در لینوکس پینگ تا زمان توقف دستی ادامه دارد).

مثال:

ping -c 4 8.8.8.8

دستورات curl و wget

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

  • wget: عمدتاً برای دانلود فایل استفاده می‌شود.

  • -c: ادامه‌ دادن دانلود قطع شده (Resume).

  • curl: برای تعامل با پروتکل‌های شبکه استفاده می‌شود.

  • -O: ذخیره فایل با نام اصلی خودش.

  • -I: فقط دریافت هدرهای پروتکل HTTP.

مثال:

wget -c https://example.com/file.zip
curl -O https://example.com/image.png


دستورات پیشرفته جستجو (Advanced Search)


دستور find

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

سوییچ‌های مهم:

  • -name: جستجو بر اساس نام فایل (حساس به حروف کوچک و بزرگ).
  • -iname: جستجو بر اساس نام فایل (غیرحساس به حروف بزرگ و کوچک).
  • -type: تعیین نوع جستجو؛ f برای فایل و d برای پوشه (Directory).
  • -size: جستجو بر اساس حجم فایل (مثلاً +50M برای فایل‌های بزرگتر از ۵۰ مگابایت).

مثال:

find /home/user/ -iname "*.pdf"
find /var/log/ -type f -size +100M

دستور locate

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

  • نکته: برای به‌روزرسانی دیتابیس آن باید ابتدا دستور sudo updatedb را بزنید. مثال:
locate nginx.conf


دستورات فشرده‌سازی و آرشیو (Compression & Archiving)


دستور tar (Tape Archive)

استانداردترین ابزار در لینوکس برای چسباندن چندین فایل به یکدیگر (آرشیو) و فشرده‌سازی آن‌ها.

سوییچ‌های مهم:

  • -c: ساخت یک فایل آرشیو جدید (Create).
  • -x: استخراج و باز کردن فایل آرشیو (Extract).
  • -v: نمایش لیست فایل‌ها در حال پردازش (Verbose).
  • -f: تعیین نام فایل آرشیو (File) - این سوییچ همیشه باید آخرین سوییچ باشد.
  • -z: فشرده‌سازی با الگوریتم gzip (پسوند .tar.gz).
  • -j: فشرده‌سازی با الگوریتم bzip2 (پسوند .tar.bz2).

مثال‌ها:

tar -cvzf backup.tar.gz /home/user/documents  # فشرده‌سازی پوشه
tar -xvzf backup.tar.gz -C /tmp/              # استخراج فایل در یک مسیر خاص

دستورات zip و unzip

برای کار با فرمت محبوب zip (که در ویندوز هم رایج است).

سوییچ‌های مهم:

  • -r: فشرده‌سازی پوشه‌ها به صورت بازگشتی (در دستور zip).
  • -d: تعیین مسیر خروجی برای استخراج (در دستور unzip).

مثال‌ها:

zip -r project.zip /path/to/project
unzip project.zip -d /home/user/extracted/


دستورات پیشرفته مدیریت شبکه (Network Management)


دستور ip

ابزار مدرن و جایگزین دستور قدیمی ifconfig برای مدیریت کارت‌های شبکه، آدرس‌های IP و مسیریابی.

سوییچ‌ها/زیردستورهای مهم:

  • ip a یا ip address: نمایش تمام کارت‌های شبکه و آدرس‌های IP متصل به آن‌ها.
  • ip route: نمایش جدول مسیریابی (Routing Table) و گیت‌وی (Gateway) سیستم.

مثال:

ip a

دستور ss (Socket Statistics)

ابزار مدرن و بسیار سریع که جایگزین دستور قدیمی netstat شده است؛ برای مشاهده پورت‌های باز و اتصالات شبکه به کار می‌رود.

سوییچ‌های مهم:

  • -t: نمایش اتصالات TCP.
  • -u: نمایش اتصالات UDP.
  • -l: نمایش پورت‌های در حال گوش‌به‌زنگ (Listening).
  • -n: نمایش شماره پورت‌ها به صورت عددی (به جای نام سرویس).
  • -p: نمایش نام برنامه‌ای که از آن پورت استفاده می‌کند (نیاز به sudo).

مثال:

sudo ss -tulnp

دستور nslookup / dig

برای پرس‌وجو از سرورهای DNS و پیدا کردن IP یک دامنه یا برعکس.

مثال:

dig google.com
nslookup yahoo.com


ترفندها و دستورات کاربردی دیگر (Bonus Utils)


دستور history

نمایش لیستی از تمام دستوراتی که قبلاً در ترمینال تایپ کرده‌اید.

  • ترفند: ترکیب این دستور با grep به شما کمک می‌کند دستوری که هفته پیش زدید را پیدا کنید. مثال:
history | grep "ssh"

دستور alias

برای ساختن نام مستعار یا میانبر برای دستورات طولانی و سخت.

مثال:

alias ll="ls -lah"
# حالا با تایپ ll در ترمینال، همان دستور ls -lah اجرا می‌شود.

دستور ln (Link)

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

سوییچ مهم:

  • -s: ساخت یک لینک نرم یا مجازی (Symbolic Link / Soft Link).

مثال:

ln -s /var/www/html/index.html /home/user/Desktop/shortcut.html

دستور clear

تمیز کردن محیط ترمینال و پاک کردن متن‌های قبلی از روی صفحه (کلید میانبر چشمی آن Ctrl + L است).

مثال:

clear


دستورات مدیریت کاربران و گروه‌ها (User & Group Management)


دستور useradd و userdel

برای ساختن کاربر جدید یا حذف کاربران موجود در سیستم.

سوییچ‌های مهم:

  • -m: ساختن پوشه Home اختصاصی برای کاربر جدید به صورت خودکار (در useradd).
  • -r: حذف پوشه Home و تمام فایل‌های کاربر هنگام پاک کردن او (در userdel).

مثال‌ها:

sudo useradd -m newuser
sudo userdel -r olduser

دستور passwd

تغییر دادن رمز عبور یک کاربر (اگر بدون نام کاربر زده شود، رمز کاربر فعلی را تغییر می‌دهد).

مثال:

sudo passwd saleh


دستورات مانیتورینگ سخت‌افزار و اطلاعات سیستم (System Info)


دستور free

نمایش میزان کل، مصرف‌شده و خالی حافظه رم (RAM) و حافظه مجازی (Swap).

سوییچ مهم:

  • -m: نمایش اطلاعات بر حسب مگابایت.
  • -h: نمایش اطلاعات به صورت کاملاً خوانا (گیگابایت و مگابایت).

مثال:

free -h

دستور uname (Unix Name)

نمایش اطلاعات هسته (Kernel) لینوکس و معماری سیستم.

سوییچ مهم:

  • -a: نمایش تمامی اطلاعات سیستم شامل نسخه کرنل، نام هاست، معماری پردازنده (مثلاً x86_64) و تاریخ انتشار.

مثال:

uname -a

دستور lscpu

نمایش مشخصات دقیق و فنی پردازنده (CPU) سیستم از جمله تعداد هسته‌ها، رشته‌ها (Threads)، معماری و میزان حافظه کش.

مثال:

lscpu


اپراتورهای ورودی/خروجی و دستورات ترکیبی (I/O Redirection & Pipes)

یکی از بزرگترین قدرت‌های لینوکس، امکان ترکیب دستورات با یکدیگر است. این علائم دستور نیستند، اما ابزارهای حیاتی ترمینال هستند.

علامت پایپ | (Pipe)

خروجی دستور اول را می‌گیرد و آن را به عنوان ورودی به دستور دوم تحویل می‌دهد.

مثال:

# نمایش تمام فرآیندها و فیلتر کردن آن‌ها برای پیدا کردن nginx
ps aux | grep nginx

علائم جهت‌دهی > و >> (Redirection)

  • >: خروجی یک دستور را داخل یک فایل می‌ریزد (اگر فایل وجود داشته باشد، محتوای قبلی را کاملاً پاک می‌کند).
  • >>: خروجی را به انتهای یک فایل متنی اضافه می‌کند (بدون پاک کردن محتوای قبلی). مثال‌ها:
echo "Hello World" > test.txt
date >> test.txt  # اضافه کردن تاریخ فعلی به انتهای فایل


دستورات کاربردی مدیریت زمان و زمان‌بندی (Time & Scheduling)


دستور date و uptime

  • date: نمایش زمان و تاریخ فعلی سیستم.
  • uptime: نشان می‌دهد که سرور یا سیستم شما دقیقاً چند روز، ساعت و دقیقه است که بدون وقفه روشن مانده است. مثال:
uptime
# خروجی نمونه: 12:10:00 up 45 days,  3:14,  1 user...

دستور sleep

ایجاد تاخیر یا وقفه زمانی بر حسب ثانیه در اجرای دستور بعدی (بسیار کاربردی در اسکریپت‌نویسی).

مثال:

echo "Wait for 5 seconds..."; sleep 5; echo "Done!"


ترفندهای میانبر ترمینال (Terminal Shortcuts)

علاوه بر دستورات، دانستن این کلیدهای ترکیبی سرعت کار در لینوکس را چند برابر می‌کند:

  • Tab: تکمیل خودکار (Autocomplete) نام دستورات، فایل‌ها یا مسیرها. (دوبار زدن آن تمام گزینه‌های ممکن را نشان می‌دهد).
  • Ctrl + C: متوقف کردن و کشتن فوری دستوری که در حال اجراست (مثلاً متوقف کردن یک پینگ طولانی).
  • Ctrl + Z: فرستادن دستور در حال اجرا به پس‌زمینه (Background) به صورت تعلیق درآمده.
  • Ctrl + R: جستجوی پیشرفته و هوشمند در تاریخچه (History) دستورات قبلی با تایپ چند حرف از آن.

یک ترفند طلایی!

یادگیری دستورات لینوکس نیاز به تمرین مداوم دارد. هر زمان که نام دستوری را شنیدید اما سوییچ‌های آن را فراموش کردید، نیازی به اینترنت ندارید! کافیست از دستور man (Manual) استفاده کنید تا دفترچه راهنمای کامل آن دستور در ترمینال برای شما باز شود:

man grep

(برای خروج از محیط راهنما، کلید q را فشار دهید).

saleh askari
saleh askari

خیلی ممنونم بابت مطالعه این وبلاگ

EN