概述討論shell命令查詢以前的事件
學習shell命令行時,你可能會遇到執行問題,這里將介紹執shell命令問題的解決方法,在這里拿出來和大家分享一下。利用history命令能夠查詢以前的事件,并可把它們顯示到shell命令行上執行這一事件。最簡便的方法就是利用上下箭頭鍵,把先前的事件逐次顯示到命令行。這個操作不需要運行history命令就可以執行。按動一下上箭頭鍵,那么上一次執行的一個事件就將出現在命令行上,再按一下,上一次的前一事件又會出現在命令行上;按動一下下箭頭鍵,將會使當前事件的下一事件出現在命令行上。
Bash也可以通過鍵入Esc、Tab鍵來完成對歷史事件的字符擴展。和標準shell命令行擴展特性一樣,鍵入歷史事件的部分字符串,然后鍵入Esc,再鍵入Tab鍵,與剛才鍵入的字符串相匹配的歷史事件將自動擴展并回顯到命令行處。如果不止一個事件與輸入的字符串相匹配,就會聽到一聲響鈴,繼續鍵入字符或字符串,shell命令將會唯一確定用戶所要鍵入的歷史事件。
還有一個查詢和執行歷史事件的命令——!shell命令。在!命令后鍵入與歷史事件相關聯的字符,這個關聯字符可以是歷史事件的歷史事件號,也可以是該事件的前幾個字符。在下面的例子中,查詢到歷史事件號為3的事件,然后又用其開頭的幾個字符去匹配,也查詢到該shell命令。
$ !3 mv mydata reports
$ !mv mv mydata reports
也可以用一個偏移量(相對于歷史事件列表中***一個事件)來查詢歷史事件。負的偏移量將從歷史事件列表表尾向前偏移。在下面的例子中,歷史事件號為2的事件“vi mydata”就是用一個負的偏移量查詢到的。必須注意的是,這個偏移量是相對于歷史事件列表中的***一個事件的。在本例中,歷史事件列表中***一個事件是事件5,歷史事件列表中***個事件為1。從歷史事件號為5的事件,往前偏移4,即是歷史事件號為2的事件。
$ !-4 vi mydata
如果鍵入!!,則系統默認為上一事件。下面的例子中,用戶在shell命行上鍵入!!命令,系統將執行上一事件:“ls”命令。
$ !! ls mydata today reports
shell命令行也可以用“模式”來搜索一個歷史事件。搜索的“模式”必須用符號“?”括起來。下例是用“模式”“?myd?”來搜索歷史事件號為3的歷史事件“vi mydata”。 $ !?myd? vi mydata
【編輯推薦】