13.12. 指令歷史與 Tab 鍵的自動完成

在不斷地輸入相同的指令時,不久將會覺得麻煩。 只要一個輸入錯誤可能會毀掉一系列的指令。

一個解決的方法是使用命令列的歷史。 藉由使用 『[向上]』 與 [向下] 方向鍵來捲動,您可以找出很多您之前輸入過的指令。

再以 sneakers.txt 檔案(在 菴 13.9.1 節 所建立的) 來試著操作這個功能。 然而,第一次在 shell 提示符號下輸入:

cat sneakrs.txt

當然沒有發生任何事,因為並沒有 sneakrs.txt 這個檔案。 不用擔心,我們只要使用向上方向鍵來找回這個指令,然後使用向左方向鍵來找到我們遺漏掉 "e" 的地方。 將這個字母輸入,再按下 [Enter] 鍵。

現在我們就可看到 sneakers.txt 的內容了。

預設可以儲存 500 個指令在 bash 命令列的歷史檔案。

提示建議
 

在 shell 提示符號下輸入 env 指令,我們可以看到控制命令列歷史大小的環境變數。 顯示 HISTFILESIZE=500 的這一行表示 bash 將儲存的指令數量。

命令列歷史實際上是儲存在一個檔案中,就在我們登入目錄中的 .bash_history 檔案。 我們可以使用許多種方法來讀取它: 使用 vi, cat, less 以及 more 等等。

請注意這個檔案可能很長。 如要使用 more 指令來讀取它,請在您的家目錄輸入:

more .bash_history

可按下 [空白鍵] 來向下捲動一個畫面; 或按下 [b] 來往回捲動一個畫面; 要離開,請按 [q]

提示建議
 

如不想不斷的按方向鍵或逐頁搜尋這個歷史檔案來找出其中的一個指令, 可以使用 grep 指令(一個強力的搜尋工具,請看 菴 13.11.3 節)。 在此向您示範要如何快速的找出之前使用過的指令: 譬如您想搜尋一個類似 cat sneak-something 的指令。 您已經使用過這個指令,而您認為它應該在您的歷史檔案中。 在 shell 提示符號下輸入:

history | grep sneak

另一個節省時間的工具就是所謂的自動完成指令。 假如您輸入一個檔案、指令或路徑名稱的一部分,然後按下 [Tab] 鍵,bash 將向您顯示出這個檔案或路徑的其餘部份,或者一個嗶聲(假如您的系統有啟動音效的話)。 假如您有聽到嗶聲,只要再按一次 [Tab] 鍵來取得符合您所輸入的檔案或路徑。

例如,假如您忘記 updatedb 指令,但仍記得這個指令的一部分,您可以 su 為 root,然後在 shell 提示符號下輸入 up,再按下 [Tab] 鍵兩次,您將會看到一列有可能的指令,包含 updatedbuptime。 如果輸入部份的指令 upd,再按下 [Tab] 鍵,這個指令將會替您自動完成。