52.94117647058824% Complete

کار با خط فرمان

پوسته ی خط فرمان

پوسته ی خط فرمان یا shell یک برنامه ساده بین کاربر و سیستم عامل است که محیطی را فراهم می‌کند تا کاربر با زدن دستورات بتواند با کرنل ارتباط برقرار کند.

پوسته معولا جز سیستم عامل محسوب نمی‌شود ولی کانال ارتباطی کاربر و سیستم عامل است.

پوسته به دو صورت خط فرمانCLI و گرافیکی GUI وجود دارد. معروف ترین پوسته های خط فرمان عبارتند از:

پوسته Bourne-Again shell یاbash

پوسته Korn shellیا ksh

پوسته C shellیاcsh

پوسته Z shell یا zsh

پوسته bash در سال 1987 توسط Brian Fox نگارش شد و از سال 1990 توسط Chet Ramey مدیریت می شود.نگارنده bash سعی کرده ویژگی های برتر پوسته های Born,C,Korn را در این پوسته بوجود آورد.

پوسته bash متداولترین پوسته در سیستم عامل لینوکس و همچنین Mac OSX است.

هر کدام از این خطوط فرمان امکانات خاصی را برای کاربر فراهم می‌کنند که البته bash اکثراً پیش‌فرض است.

پوسته خط فرمان شامل ویژگی‌های شاخص زیر است:

خط فرمان به حروف کوچک و بزرگ حساس است.(casesensitive)

نام هر فایل بیش از 255 کاراکتر نمی‌تواند باشد.

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

کاراکتر پیشنهاد
/ ممنوع
\ بهتر است استفاده نشود یا (scape) شود.
- در اول اسم فایل و پس از فاصله استفاده نشود.
[] {} بهتر است استفاده نشود یا(scape) شود.
? * بهتر است استفاده نشود یا (scape) شود.
' " بهتر است استفاده نشود یا (scape) شود.

انواع دستورات در خط فرمان

دستورات در خط فرمان به سه دسته تقسیم می‌شوند که براساس ترتیب اجرا به صورت زیر هستند:

alias :دستورات مجازی هستند که با تعریف آن‌ها دستورات واقعی اجرا می‌شوند. در‌واقع شبیه shortcut عمل می‌کنند .(نرم افزاری برای اجرای آن‌ها نیست .)

دستورات داخلی یا Builtin command : دستوراتی هستند که در داخل محیط bash قرار دارند و خود bashآن‌ها را اجرا می‌کند .(شامل نرم‌افزار خارجی نیستند .)

دستورات خارجی یا External command : دستورات خارج از bash که با فراخوانی نرم افزارهای خارجی اجرا می‌شوند.این دستورات در واقع برنامه هایی هستند که توسط bash فراخوانی و اجرا می‌شوند.

برای فهمیدن نوع هریک از دستورات ؛ از دستور زیر استفاده می‌شود .

  Type command

مثال:

  $ type cp
  cp is /bin/cp
  $ type alias 
  alias is a shell builtin

در صورتی که خروجی این دستور به صورت مسیر باشد دستور از نوعlexternal است و جز bashنیست.

برای دسترسی به راهنمای دستورات Builtin ؛ از دستور helpاستفاده می‌شود .

  Help command
وبرای دسترسی به راهنمای دستوراتexternal ؛ از دستور man استفاده می‌شود.
  Man command

دستور man

بااستفاده از دستور man می توان راهنماهای موجود در سیستم را مشاهده کرد.این راهنماها ممکن شامل توضیحاتی در مورد برنامه ها ،‌ فایل های پیکربندی ، کتابخانه ها ،‌ توابع و غیره باشند.این راهنما‌ها به ۸ بخش (section) تقسیم شده‌اند.و شما با دانستن بخش مناسب به دنبال راهنما می‌گردید.این بخش ها شامل موارد زیر هستند :‌

نحوه ی استفاده از این دستور به صورت زیر است:

  man [options] [section] name

گزینه های (options) این دستور شامل موارد زیر است :

-a : با این گزینه در صورتی که دستور در چندین section راهنما داشته باشد پس از خروج از هریک؛ راهنمای بعدی باز می‌شود.

-k: با این گزینه یک کلمه را در راهنما جست‌و‌جو می‌کند.

-w: با این گزینه مسیر راهنما مشخص می‌شود.

بخش‌های (sections) این دستور شامل نه بخش مختلف است که البته یک دستور ممکن است در چند بخش دارای راهنما باشد.

بخش توضیحات
۱ برنامه‌های اجرا شونده یا shell commands
۲ دستوراتی که توسط سیستم فراخوانی می شوند
۳ دستوراتی که در خلال اجرای کتابخانه‌ها اجرا می‌شوند
۴ فایل‌های خاصی که معمولاً در مسیر dev قرار دارند
۵ ساختار فایل‌ها مانند: eg /etc/passwd
۶ بازی‌ها
۷ دستورات مختلفی شامل ساختار بسته ها
۸ دستورات مخصوص کاربر ریشه
۹ دستورات معمولی کرنل
  $ man -wa ip
  /usr/share/man/man8/ip.8.gz
  /usr/share/man/man7/ip.7.gz

حال برای فراخوانی تنها یک بخش خاص به صورت زیر عمل می‌شود:

  $ man 8 ip

تعیین اولویت های دستور man از طریق یک متغیر به نام MANSECT انجام می‌شود که ترتریب اولویت ها با : از هم جدا می‌شوند.

مقدار پیش‌فرض این متغیر به صورت زیر است:

  $ echo $MANSECT
  1:8:2:3:4:5:6:7:9:tcl:n:l:p:o

مثالی برای جست وجو در یک موضوع خاص با استفاده از این دستور:

  $ man -k player
  smplayer(1)        -The best GUI fronted for mplayer 
  ffplay(1)        -FFplay media player
  gmplayer(1)        -movie player
  gnash(1)        -GNU Flash (SWF) Player
  gtk-gnash(1)        -GNU Flash (SWF) Player
  totem(1)        -GNOME desktop movie player based on GStreamer
  vlc(1)            -The VLC media player

دستور info نیز برای دستورات خارجی استفاده می‌شود که تفاوت آن با دستور man این است که چون دستور info ساختاری صفحه به صفحه دارد راهنماهای طولانی در info قرار می گیرند.

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

پوسته خط فرمان یک محیط تعاملی است به این معنا که قابلیت برنامه نویسی و خودکارسازی را برای کاربر فراهم می کند.

متغیرها

به مثال زیر توجه کنید:

  $ lpi=test

مقدار متغیر lpi را برابر با test قرار می‌دهد.

برای دیدن محتوای هر متغیر میتوان از دستور echo استفاده کرد:

  $ echo $lpi

که علامت $ در ابتدای نام متغیر؛معرف محتویات آن متغیر است.

متغیرهای محیطی (Enviroment variable)

متغیر PATH : مسیر دستورات خارجی را مشخص می‌کند.

  $ echo $PATH
  /sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

در صورتی که بخواهیم به مسیرهای بالا مسیری اضافه کنیم؛به صورت زیر عمل می‌کنیم:

  $ echo $PATH:/home/user/bin

به یاد داشته باشید مسیر فایل‌های اجرایی شامل چهار مورد زیر است:

  /bin 
  /sbin 
  /usr/bin
  /usr/sbin

متغیر PS1 :شکل prompt خط فرمان را مشخص می‌کند.

  $ echo $PS1
  \u@\h:\w\$

که کارکتر u \ به معنی نمایش نام کاربر؛h \ به معنی نام کامپیوتر؛ w \ نمایش شاخه جاری و $ \ زمانی که کاربر ریشه (root) باشد علامت# و در غیر این صورت علامت $ را نمایش می‌دهد.

در جدول زیر لیست چند کارکتر ویژه که همراه با این متغیر استفاده می‌شوند نمایش داده شده است :

کاراکتر ویژه توضیحات
w \ مسیر شاخه جاری
W \ نام شاخه جاری
$ \ کاربر ریشه را با # و مابقی را با $ نشان می‌دهد
! \ شماره دستور در این پوشه را نشان می‌دهد
t \ زمان را با فرمتHH:MM:SS در 24 ساعت نشان می‌دهد
T \ زمان را با فرمتHH:MM:SS در12 ساعت نشان می‌دهد
n \ خط بعدی
d \ نمایش تاریخ

متغیر PS2 : مربوط به زمانی است که bash ورودی ها را در چند خط دریافت کند.

متغیر های تعریف شده در یک شل تنها تنها در همان شل در دسترس هستند و برای اینکه دیگر پروسه هایی که توسط این شل اجرا می‌شوند نیز به متغیر ها دسترسی داشته باشند از دستور export استفاده می‌کنیم.

  Export variabale

پس از اجرای این دستور ؛ این متغیر یک متغییر محیطی است و در برنامه‌های اجرا شده وsubshell ها نیز قابل دسترسی می‌باشد .

دستور set و unset

با زدن دستور set در خط فرمان ؛لیست تمامی متغیر های محیطی قابل رویت می‌باشد. همچنین از دستور unset برای پاک کردن متغیر ها استفاده می‌شود.

ساختار دستورات در لینوکس

هر دستور در لینوکس شامل چهاربخش زیر است که با فاصله (space) از یکدیگر جدا می‌شوند :

خود دستور(داخلی یا خارجی)

گزینه های (option) آن دستور که معمولاً با - یا-- شروع می‌شوند.(البته می‌تواند بدون آن‌ها نیز باشد.)

ورودی های (argument) دستور

کلید Enter

برای اجرای پشت سر هم چند دستور از علامت “;” و برای اجرای یک دستور در چندین خط از علامت “< “ استفاده می‌شود.

  $ ls ; ps    
  $ echo “This is test for multiple-line
  > command interactively
  >”
  This is test for multiple-line
  command interactively

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

لیست دستورات استفاده شده یاتاریخچه دستورات شل با دستور history قابل رویت است.با استفاده گزینه c- می‌توان تاریخچه دستورات را حذف کرد.لیست دستورات در‌واقع فایل bash_history./‍‍‍‍~ نگهداری می‌شود.با استفاده از دو متغیر HISTFILESIZE و HISTSIZE می‌توانید اندازه این فایل (بر حسب بایت) و تعداد خطوط دستورات را مشخص کنید

با استفاده از بعضی کاراکترهای یا کلیدهای ترکیبی خاص می‌توان دستوراتی را در history جست‌وجو یا اجرا کرد.در جدول زیر چند نمونه از این کاراکترها و کلیدها آورده شده اند:

دستور توضیحات
!! تکرار آخرین دستور
n! دستور شماره n در history را اجرا می‌کند
!-n شماره دستور جاری منهای n را اجرا می‌کند
String! آخرین دستوری که با string شروع می‌شود
String?! آخرین دستوری که \lr{string} در آن استفاده شده است
string1^string2 در آخرین دستور string1 را با string2 جایگزین می‌کند .
Arrow key حرکت بین دستورات
ctrl+r جست‌و‌جو در history
ctrl+s جست‌و‌جو از اول به آخر history (زمانی جواب می‌دهد که stty -ixon اجرا شده باشد)جست‌و‌جو در history

کلیدهای ترکیبی خط فرمان

استفاده از برخی کلید های ترکیبی می‌تواند کارکردن با شل را برای شما بسیار آسان تر کند.برخی از این کلید ها در جدول زیر آمده :

دستور توضیحات
ctrl+l پاک کردن صفحه
ctrl+k cut کردن از محل مکان نما تا آخر خط
Ctrl+ u cut کردن از محل مکان نما تا ابتدای خط
ctrl+y چسباندن یا همان paste
_ +ctrl undo
ctrl+e رفتن به انتهای دستور
ctrl+a رفتن به ابتدای دستور
ctrl+d cut کردن کلمه به سمت انتهای خط
ctrl+w cut کردن کلمه به سمت ‌ابتدای خط
ctrl+t جا به جایی کاراکتر زیر مکان نما با کاراکتر قبلی
52.94117647058824% Complete

کامپیوترها، نرم افزارها و سیستم عامل ها کامپیوتر چیست؟ بخش‌های مختلف یک کامپیوتر نرم افزار سیستم عامل‌های مهم لینوکس و نرم افزار آزاد لینوکس: داستان یک موفقیت آزاد یا متن باز نرم افزارهای آزاد مهم توزیع های لینوکس مهم نصب یک توزیع معماری سیستم استخراج و پیکربندی تنظیمات سخت افزار روند بوت سیستم مدیریت Runlevelها و shutdown و reboot نصب لینوکس و مدیریت بسته ها طراحی ساختار دیسک نصب یک مدیر بوت مدیریت Share library ها مدیریت بسته‌های نرم افزاری در دبیان استفاده از RPM و YUM دستورات گنو و یونیکس

کار با خط فرمان

پردازش جریان‌های داده باکمک فیلتر ها مدیریت فایل‌ها - مقدماتی استفاده از stream‌ها, pipe‌ها و redirect ایجاد، رصد و حذف یک فرایند ویرایش اولویت اجرای فرایندها جستجوی فایل‌های متنی توسط regular expressionها ویرایش فایل با کمک vi تجهیزات، فایل سیستم های لینوکسی و فایل سیستم سلسله مراتبی ساخت پارتیشن و فایل سیستم نگهداری از یکپارچگی فایل سیستم کنترل mount و unmount شدن فایل سیستم سهمیه بندی فضای دیسک یا quota مدیریت مجوزهاو مالکیت‌ فایل ساخت و تغییر hard و symbolic link جستجوی فایل سیستم و محل درست فایل‌ها راهنمای استفاده از Docpad نصب و راه اندازی اولیه نحوه تهیه مستندات