MGroup

۱۵ مثال برای مدیریت تاریخچه‌ی خط فرمان لینوکس

Posted on: اوت 16, 2008

وقتی با لینوکس کار می‌کنی، خواهی نخواهی باید از خط فرمان هم استفاده کنی، حالا بسته به کاری که می‌کنی این کم و زیاد داره. که این خط فرمان هم از زیباییهای خاص لینوکس است، که تا باهاش کار نکنی، ازش لذت نمی‌بری و معنی این حرف رو متوجه نمی‌شی…

اما یکی از اجزای زیبای این خط فرمان، تاریخچه‌ی اون هست، و اینکه از این تاریخچه استفاده‌های قشنگی می‌شه کرد، وبگاه the geek stuff در این مقاله، ۱۵ تا مثال از استفاده‌های جالب این تاریخچه رو آورده، که چون واسم جالب بود گفتم اینجا لیستشون کنم:

۱- نشون دادن زمان اجرای هر دستور، در دستور history

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

مثال:

# export HISTTIMEFORMAT=’%F %T ‹
# history | more
1 2008-08-05 19:02:39 service network restart
2 2008-08-05 19:02:39 exit
3 2008-08-05 19:02:39 id
4 2008-08-05 19:02:39 cat /etc/redhat-release

۲- گشتن درون تاریخچه، با استفاده از کلید ترکیبی Control+R

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

۳- تکرار کردن دستور قبلی، به چهار روش مختلف

۱) استفاده از کلید بالا (Up Arrow)

۲) تایپ کنید !! و اینتر را فشار دهید.

۳) تایپ کنید 1-! و اینتر…

۴) کلید ترکیبی Ctrl+P هم دستور پیشین را نمایش می‌دهد.

۴- اجرای یک دستور خاص از تاریخچه

برای اجرای دستور شماره‌ی ۴ در تاریخچه از 4! استفاده کنید.

# history | more
1 service network restart
2 exit
3 id
4 cat /etc/redhat-release
# !4
cat /etc/redhat-release
Fedora release 9 (Sulphur)

۵- اجرای دستور قبلی که با عبارت خاصی شروع می‌شود.

علامت ! را تایپ کنید، و در ادامه تعدادی از حروف دستور مورد نظر را تایپ کنید:

# !ps
ps aux | grep yp
root 16947 0.0 0.1 36516 1264 ? Sl 13:10 0:00 ypbind
root 17503 0.0 0.0 4124 740 pts/0 S+ 19:19 0:00 grep yp

۶- تعیین تعداد دستوری که تاریخچه باید نگه‌دارد.

متغییر محلی HISTSIZE این را تعیین می‌کند، با تغییر این مقدار در فایل bashrc. یا bash_profile. مقدار مورد نظر را تعیین کنید، مقدار پیشفرض در سیستم من ۵۰۰ است.

۷- تغییر فایلی که تاریخچه در آن نگهداری می‌شود.

تاریخچه بطور پیشفرض در فایل bash_history. نگهداری می‌شه، با تغییر مقدار متغیر محلی HISTFILE به هر چی که خواستین این رو می‌تونین عوض کنین.

۸- جلوگیری از نگهداری دستورات تکراری پشت سر هم در تاریخچه

با تعیین مقدار متغیر محلی HISTCONTROL به ignoredups می‌تونین از این تکرار جلوگیری کنین.

۹- جلوگیری از تکرار در کل تاریخچه

با تغییر مقدار متغیر محلی HISTCONTROL به erasedups از نگهداری مقادیر تکراری در کل تاریخچه جلوگیری کنید.

۱۰- اجبار حافظه به عدم یادآوری دستوراتی خاص

مقدار متغیر HISTCONTROL رو به ignorespace تغییر بدین، بعد از اون هر دستوری که می‌خواین توی تاریخچه نمونه رو با فاصله شروع کنین!

# export HISTCONTROL=ignorespace
# ls -ltr
# pwd
# service httpd stop [Note that there is a space at the beginning of service,
to ignore this command from history]

# history | tail -3
67 ls -ltr
68 pwd
69 history | tail -3

۱۱- حذف حافظه‌ی تاریخچه

با پاک کردن فایل bash_history. یا اجرای دستور history با سوئیچ c می‌تونین حافظه رو پاک کنین. (تا نفر بعدی نفهمه چه گندی زدین😀 )

# history -c

۱۲- گرفتن عبارات از تاریخچه دستورات (آرگومانهای دستورات)

برای استفاده از آرگومان دستور قبلی در دستور جدید از $:!! استفاده کنید.

# ls anaconda-ks.cfg
anaconda-ks.cfg
# vi !!:$
vi anaconda-ks.cfg

برای استفاده از آرگومان اول یک دستور چند آرگومانی از ^! استفاده کنید.

# cp anaconda-ks.cfg anaconda-ks.cfg.bak
anaconda-ks.cfg
# vi -5 !^
vi anaconda-ks.cfg

۱۳- گرفتن یک آرگومان خاص از یک دستور خاص

در مثال زیر عبارت 2:cp! دستور قبلی که با cp شروع می‌شه رو پیدا می‌کنه و آرگومان دومش رو می‌گیره!

# cp ~/longname.txt /really/a/very/long/path/long-filename.txt
# ls -l !cp:2
ls -l /really/a/very/long/path/long-filename.txt

در مثال زیر عبارت $:cp! به دنبال دستور قبلی که با cp شروع می‌شه می‌گرده، و آخرین آرگومانش رو پس می‌ده (اینجا همون دومیش هست)

# ls -l !cp:$
ls -l /really/a/very/long/path/long-filename.txt

۱۴- غیر فعال کردن تاریخچه

اگر مقدار متغیر HISTSIZE رو صفر تعیین کنیم، تاریخچه‌ی bash غیر فعال خواهد شد.

# export HISTSIZE=0
# history
# [Note that history did not display anything]

۱۵- چشم‌پوشیدن از دستورات خاصی در تاریخچه

با تعیین مقدار متغیر محلی HISTIGNORE می‌شه تعیین کرد که دستورات خاصی توی تاریخچه ذخیره نشن!

توجه کنید که دستور ls با دستور ls -l متفاوت است.

# export HISTIGNORE=”pwd:ls:ls -ltr:”
# pwd
# ls
# ls -ltr
# service httpd stop
# history | tail -3
79 export HISTIGNORE=”pwd:ls:ls -ltr:”
80 service httpd stop
81 history
[Note that history did not record pwd, ls and ls -ltr]

1 Response to "۱۵ مثال برای مدیریت تاریخچه‌ی خط فرمان لینوکس"

پاسخی بگذارید

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

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

عکس گوگل+

شما در حال بیان دیدگاه با حساب کاربری Google+ خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s


توجه: برای رفع مشکلات لینوکسی خود به یکی از انجمنهای اینترنتی مراجعه کنید! اینجا به هیچ وجه برای رفع مشکلات لینوکسی شما مناسب نیست!
تبادل لینک نداریم! لطفا سوال نفرمایید ما به هرکس بخوایم لینک می‌دیم، هرکس هم خواست به اینجا لینک بده! :)

Kategories

بایگانی

وضعیت بلاگ

  • 110,042 بازدید

مجوز انتشار:

تمامی مطالب و مقالات این بلاگ تحت مجوز GNU FDL قرار دارند. بنابراین کپی و ایجاد تغییر در آنها مطابق شرایط این مجوز آزاد می‌باشد.
%d وب‌نوشت‌نویس این را دوست دارند: