$ history ... 62 rm 092210.sql 63 mysqldump 64 mysqldump -u root -p dev_gamenomad_com > 092210.sql 65 more 092210.sql 66 rm 092210.sql ... 9991 mkdir chapter05 9992 cd chapter05 9993 dir 9994 npm install websocket-server 9995 node hello.js 9996 exit 9997 history
與每條命令相關的順序號服務於重要目的,允許用戶通過提供直接跟著感歎號的順序號來重新執行相關命令,如下:
$ !10000 sudo /etc/init.d/apache2 start * Starting web server apache2
但這並不是全部。Linux歷史命令能做到更多,本文後續部分也將提及。
掌控歷史擴展
敲擊向上箭頭鍵會顯示之前執行的命令,敲擊Enter鍵會再次執行該命令。但是還可以使用另一個可能更快的包括歷史擴展功能的選擇:
$ !!
如果你重復執行同樣兩條或三條命令的不同排列組合,你還可以選擇通過識別其位移負指數來執行出現在上一命令出現處的命令。例如,執行之前命令的前一命令(回退兩條命令),運用以下序列:
$ !-2
執行早期命令的另一方式是輸入緊跟著感歎號的命令序列號的開頭。符合字符對象的第一條命令會執行。舉例來說,假設最後三條命令如下:
$ history ... 9876 build-book /home/wjgilmore/easy_php 9877 mkdir chapter05 9878 cd chapter05 9879 touch chapter05.md
你可以只通過運行以下命令來再次執行構書腳本:
$ !b
用兩步過程創建一個確認它的新目錄和導航和以運用歷史擴展縮短。在本例中,我創建了一個叫做easy_bash的新目錄,位置在/home/wjgilmore/books。要確認該目錄,運用!$來獲得在前一命令中發現在最後“字符”:
$ mkdir /home/wjgilmore/books/easy_bash $ cd !$
搜索命令歷史
雖然可以翻閱命令歷史(或使用grep命令),但在使用Ctrl+R開放選擇搜索它之後也可以調用該命令的片段,提示的命令行將如下所示:
(reverse-i-search)`':
開始輸入命令片段,命令行會實時更新反映出最符合的一條。輸入apa後會出現類似於這樣的命令:
(reverse-i-search)`apa': sudo /etc/init.d/apache2 start
當你看到想要的命令,敲擊Enter執行它,或者敲擊向上箭頭鍵在重新執行前修改它。
調整歷史行為
你可以做很多有趣的設置更改來控制命令歷史的行為方式。例如,Bash shell設置的默認歷史大小是500條記錄,這個限制很快就達到了,即使是很小的命令行相互作用。你可以通過設置在Bash配置文件(.bashrc,位於主目錄中)上發現的HISTSIZE變量提高限制數。
HISTSIZE=10000
你在命名為HISTCONTROL的.bashrc中通常還會遇到另一個與歷史有關的變量。該變量幫助明確規定歷史文件中的存放內容(位於.bash_history,也可見於主目錄中)。例如,你也許在檢查最新的日志文件附件時重復執行了尾命令,就在運行tail的幾分鐘裡。通過重復來集群歷史文件不太實際,通過設置它為ignoredups來讓HISTCONTROL變量忽視復制行。
HISTCONTROL=ignoredups
可疑效用的另一個HISTCONTROL設置是忽略空格。該HISTCONTROL設置的結果是所有前面有空格的執行命令都從歷史文件中刪除。這對於不跟蹤每條命令似乎起了反作用,但是如果你除了ignoredups之外還想實現該功能,你可以將兩者設置成:
HISTCONTROL=ignoreboth
我最後要談及的一個功能是命令替換。假設你想基於一個虛擬主機配置文件模板快速配置一群虛擬主機。這些命令序列可能非常長,就像下面所示:
$ cp vhost.template /etc/apache2/sites-available/dev.example.com $ cp vhost.template /etc/apache2/sites-available/forum.example.com $ cp vhost.template /etc/apache2/sites-available/staging.example.com
通常你執行該一列命令的方法會是首先輸入和執行,接著向上滾動、刪除尾行片段(dev.example.com),然後輸入下一片段(forum.example.com),然後重新執行。另一種方法,你可以運用命令替換來快速地用一行字符串替換另一相關字符串,如下所示:
$ !!:s/dev/forum
該命令行在指向-點擊界面中已為用戶帶來了大量好處,讓任務執行和操作系統導航可以快速且優雅地完成。最大程度上地利用Linux歷史命令只能增加這些功能,促進生產力會走得更遠。
Linux歷史命令全面掌控的內容介紹完了,希望通過Linux歷史命令內容的學習能對你有所幫助。不知道你學會了嗎?