منبع اصلی نوشتار زیر در این لینک قرار دارد

از دستور history بهتر استفاده کنیم

مقدمه

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

فهرست دستورات اجرا شده

در زیر خروجی پیش‌فرض دستور history را مشاهده می‌نمایید:

$ history
 1008  ll
 1009  ifconfig
 1010  sudo iptables -nL
 1011  sudo psad -S
 1012  aptitude update
 1013  aptitude full-upgrade
 1014  history

فهرست دستورات اجرا شده همراه با تاریخ و ساعت

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

$ export HISTTIMEFORMAT='%F %T  '
$ history
 1008  2014-05-07 09:09:11  ll
 1009  2014-05-07 09:09:14  ifconfig
 1010  2014-05-07 09:09:25  sudo iptables -nL
 1011  2014-05-07 09:09:37  sudo psad -S
 1012  2014-05-07 09:09:47  aptitude update
 1013  2014-05-07 09:09:55  aptitude full-upgrade
 1014  2014-05-07 09:10:01  history
 1015  2014-05-07 09:11:05  export HISTTIMEFORMAT='%F %T  '
 1016  2014-05-07 09:11:16  history

* در مقداردهی متغیر HISTTIMEFORMAT مقادیر زیر معادل یکدیگر هستند:

%F Equivalent to %Y - %m - %d
%T Replaced by the time ( %H : %M : %S )

فیلتر کردن برخی دستورات در تاریخچه دستور history

شما می‌توانید با مقداردهی متغیر HISTIGNORE دستوراتی را که مکرر استفاده می‌کنید را فیلتر نمایید:

$ export HISTIGNORE='pwd:history:ll:'
$ pwd
/home/saeid
$ history 3
 1040  2014-05-07 09:22:58  history
 1041  2014-05-07 09:32:48  export HISTIGNORE='pwd:history:ll:'
 1042  2014-05-07 09:32:57  history 3

نادیده گرفتن تکرار دستورات

دستوراتی که قصد دارید تکرار دستورات را در history نادیده بگیرید، از متغیر HISTCONTROL به شکل زیر استفاده نمایید:

$ export HISTCONTROL=ignoredups

در نظر داشته باشید که در صورت نیاز می‌توانید تنظیمات HISTCONTROL را توسط دستور unset به حالت پیش‌فرض تغییر دهید:

$ unset HISTCONTROL

تنظیم حداکثر تعداد ذخیره‌سازی دستورات اجرا شده

متغیر HISTSIZE حداکثر تعداد ذخیره‌سازی دستورات اجرا شده را مشخص می‌نماید. مقدار پیش‌فرض این متغیر 1000 است.

$ export HISTSIZE=1000

* برای غیرفعال کردن ذخیره‌سازی دستورات اجرا شده، کافیست مقدار متغیر HISTSIZE را صفر قرار دهید:

$ export HISTSIZE=0

مشاهده دستورات اجرا شده توسط سایر کاربران

به صورت پیش‌فرض، فهرست دستورات اجرا شده توسط هر کاربر در فایلی با نام .bash_history داخل پوشه خانگی وی ذخیره می‌شود. به عنوان مثال دستورات اجرا شده توسط کاربر saeid در فایل زیر قابل مشاهده و دستیابی است:

root@Saeid-Dev:/home/saeid# ll ~saeid/.bash_history
-rw------- 1 saeid saeid 40324 May  7 08:05 /home/saeid/.bash_history

* برای تغییر نام و آدرس فایل تاریخچه دستورات از متغیر HISTFILE استفاده نمایید.
* در نظر داشته باشید که برای مشاهده محتوای فایل تاریخچه سایر کاربران، باید دسترسی کاربر ریشه (root) را داشته باشید.

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

شما می‌توانید به منظور جستجو در تاریخچه دستورات اجرا شده، از ترکیب دستورات history و grep به صورت زیر استفاده نمایید:

$ history | grep export
  872  export HISTTIMEFORMAT='%F %T  '
  874  export HISTTIMEFORMAT='%T  '
  878  export HISTTIMEFORMAT='%Y - %m - %d %T  '
 1017  export HISTTIMEFORMAT=''
 1019  export HISTTIMEFORMAT='%F %T  '
 1021  export HISTIGNORE='ll:history'
 1024  export HISTIGNORE='ls -l:history:ll'
 1026  export HISTIGNORE='ll'
 1028  export HISTIGNORE='ls -l'
 1041  export HISTIGNORE='pwd:history:ll:'
 1043  export HISTCONTROL=ignoredups
 1051  unset HISTCONTROL
 1053  echo "export HISTCONTROL=ignoredups" >> ~/.bash_profile
 1062  export HISTSIZE=1000
 1074  history | grep export

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

(reverse-i-search)`source ': source .bash_profile

ذخیره دائمی تنظیمات دستور history

برای ذخیره نمودن دائمی تنظیمات دستور history (و سایر دستورات) می‌توانید مقادیر مورد نظر را در فایل .bash_profile ذخیره نمایید.

$ vi ~/.bash_profile

یا به صورت خودکار، مانند:

$ echo "export HISTCONTROL=ignoredups" >> ~/.bash_profile

پاک کردن تاریخچه دستورات اجرا شده

به منظور پاک کردن تاریخچه تمامی دستورات اجرا شده میتوانید، از دستورات زیر را استفاده نمایید:

$ history -c

یا

$ > $HISTFILE

در نهایت اینکه اگر قصد دارید دستوری را بدون ذخیره شدن آن در تاریخچه دستورات اجرا نمایید، کافیست در ابتدای دستور یک فاصله (space) قرار دهید ;)



برچسب ها : , , , ,