پرش به محتویات

103.1 - کار بر روی خط فرمان

اهداف یادگیری

در این فصل با موارد زیر آشنا می‌شوید:

  • استفاده از دستورات پوسته تک و دنباله‌های دستور یک خطی برای انجام وظایف پایه‌ای بر روی خط فرمان
  • استفاده و تغییر محیط پوسته شامل تعریف، ارجاع و صدور متغیرهای محیطی
  • استفاده و ویرایش تاریخچه دستورات
  • فراخوانی دستورات داخل و خارج مسیر تعریف شده

کلیدواژه‌ها

bash, echo, env, export, pwd, set, unset, type, which, man, uname, history, .bash_history, Quoting


پوسته‌ها و Bash

شما دستورات خود را در یک پوسته صادر می‌کنید؛ این رابط خط فرمان شما است و گزینه‌های مختلفی برای آن دارید. برای دسترسی به پوسته خود، باید به سیستم در حالت متنی وارد شوید یا یکی از شبیه‌سازهای ترمینال مختلف را در GUI خود اجرا کنید. برخی نمونه‌ها gnome-terminal, konsole, xterm و غیره هستند.

پس از اجرای شبیه‌ساز ترمینال یا ورود به حالت متنی، در پوسته هستید و می‌توانید دستورات را صادر کنید. اگرچه bash (GNU Bourne Again shell) رایج‌ترین است، ممکن است از zsh, dash, ksh, csh و دیگران استفاده کنید.

می‌توانید بررسی کنید که دستور عمومی sh شما به کجا لینک شده است:

$ readlink /bin/sh

یا متغیر $SHELL خود را با استفاده از:

echo $SHELL

چک کنید.

Bash شما برخی دستورات داخلی دارد که بدون هیچ وابستگی خارجی آنها را درک می‌کند (مانند cd, break, exec, ...) اما اگر چیزی را داخلی درک نکند، سعی می‌کند آن را به عنوان یک اجرایی خارجی اجرا کند.

می‌توانید از دستور type برای تعیین این استفاده کنید:

[jadi@fedora ~]$ type cd
cd is a shell builtin
[jadi@fedora ~]$ type ls
ls is aliased to `ls --color=auto'
[jadi@fedora ~]$ type ping
ping is /usr/bin/ping

cd, pwd & uname

cd

شما قبلاً دستورات زیادی از cd دیده‌اید :) آن دایرکتوری را تغییر می‌دهد، شامل . (دایرکتوری فعلی) و .. (دایرکتوری والد).

می‌توانید به دایرکتوری‌ها به دو طریق اشاره کنید:

  1. مسیرهای مطلق: مانند /home/jadi/lpic1/lesson3.1
  2. مسیرهای نسبی: مانند lpic1/lesson3.1. در این حالت، / را در ابتدای آن اضافه نمی‌کنیم بنابراین bash سعی می‌کند دایرکتوری lpic1 را جایی که هستیم پیدا کند (محلی / نسبی)

کاراکتر ~ به معنای دایرکتوری خانه کاربر صادرکننده دستور است

همچنین امکان‌پذیر است که cd را بدون هیچ پارامتری صادر کنید. شما را به دایرکتوری خانه خود منتقل می‌کند. بنابراین این 3 دستور همه برابر هستند:

cd
cd ~
cd $HOME

pwd

دایرکتوری فعلی شما را نشان می‌دهد:

[jadi@fedora lesson3.1]$ pwd
/home/jadi/lpic1/lesson3.1

uname

داده‌هایی درباره سیستم به شما می‌دهد. سوئیچ‌های رایج عبارتند از:

گزینه توضیح
-s نام کرنل را چاپ می‌کند. این پیش‌فرض است اگر گزینه‌ای مشخص نشده باشد.
-n نام نود یا hostname را چاپ می‌کند.
-r انتشار کرنل را چاپ می‌کند. این گزینه اغلب با دستورات مدیریت ماژول استفاده می‌شود.
-v نسخه کرنل را چاپ می‌کند.
-m نام سخت‌افزار (CPU) ماشین را چاپ می‌کند.
-o نام سیستم عامل را چاپ می‌کند.
-a همه اطلاعات بالا را چاپ می‌کند.

مثال:

$ uname -a
Linux fedora 5.8.15-301.fc33.x86_64 #1 SMP Mon Oct 19 13:19:37 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

متغیرهای محیطی

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

$ env

برای تعریف یک متغیر محیطی جدید:

$ MYVAR="Hello World"

برای ارجاع به یک متغیر، از $ استفاده کنید:

$ echo $MYVAR
Hello World

برای صدور یک متغیر به محیط، از export استفاده کنید:

$ export MYVAR

متغیرهای محیطی رایج شامل PATH, HOME, USER, SHELL و غیره هستند.

تاریخچه دستورات

Bash تاریخچه دستورات شما را نگهداری می‌کند. برای نمایش تاریخچه:

$ history

برای ویرایش تاریخچه، می‌توانید از کلیدهای جهت‌دار بالا و پایین استفاده کنید. فایل تاریخچه در ~/.bash_history ذخیره می‌شود.

برای پاک کردن تاریخچه:

$ history -c

نقل قول‌ها

برای جلوگیری از تفسیر کاراکترهای خاص توسط پوسته، از نقل قول استفاده کنید. نقل قول تک (') تفسیر را متوقف می‌کند، نقل قول دوگانه (") اجازه تفسیر متغیرها را می‌دهد.

مثال:

$ echo 'Hello $USER'
Hello $USER

$ echo "Hello $USER"
Hello jadi

man و help

برای دریافت کمک درباره دستورات، از man استفاده کنید:

$ man ls

برای دستورات داخلی bash، از help استفاده کنید:

$ help cd

which و whereis

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

$ which ls
/bin/ls

$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz

تمرین‌ها

  1. پوسته فعلی خود را بررسی کنید و ببینید آیا bash است یا نه.
  2. با استفاده از cd به دایرکتوری خانه خود بروید و سپس به /tmp بروید.
  3. اطلاعات سیستم خود را با uname -a نمایش دهید.
  4. یک متغیر محیطی جدید تعریف کنید و آن را export کنید.
  5. تاریخچه دستورات خود را نمایش دهید و یکی از دستورات قبلی را دوباره اجرا کنید.
  6. تفاوت بین نقل قول تک و دوگانه را با مثال نشان دهید.
  7. کمک دستور ls را با man ببینید.
  8. محل دستور ping را با which و whereis پیدا کنید.

خلاصه

در این فصل با کار بر روی خط فرمان آشنا شدیم. یاد گرفتیم چگونه از پوسته bash استفاده کنیم، دستورات پایه‌ای مانند cd, pwd, uname را اجرا کنیم، متغیرهای محیطی را مدیریت کنیم، تاریخچه دستورات را ویرایش کنیم، از نقل قول‌ها استفاده کنیم و کمک دستورات را ببینیم. همچنین ابزارهایی مانند which و whereis برای یافتن محل دستورات را آموختیم. این مهارت‌ها پایه‌ای برای کار موثر با سیستم لینوکس هستند.

نکات کلیدی برای آزمون

  • استفاده از cd, pwd و uname برای کار روی مسیرها و اطلاعات سیستم
  • مدیریت متغیرهای محیطی (env, export) و درک متغیر PATH
  • ویرایش و مشاهده تاریخچه دستورات (history, ~/.bash_history)
  • تفاوت بین نقل‌قول تک و دوتایی (' vs ") و تاثیر آن روی تفسیر متغیرها
  • پیدا کردن مکان دستورات با which و whereis