2007年10月7日 星期日

指令歷程

現今的 bash 與 tcsh 對指令紀錄的已有大幅的進步,它讓你用相當簡單的方式調出先前曾經輸入的指令,當你與 bash 互動時,你所下達的每個命令,會先被 shell 記錄在自己的歷程表(history list),然後才開始進行解讀或執行。
歷程表的容量由變數 HISTSIZE 控制
bang@linuxdiary:~$ echo $HISTSIZE
500
預設值為 500,可視情況修改。
當你登出系統時,歷程表的內容會被寫進你的個人目錄之中的 .bash_history 之中 (環境變數 HISTFILE 所指定的檔案) ,當你下次登入系統時,即可使用 history 指令調出之前輸入的指令。
history
語法
history [option] [files]
列出指令歷程
常用選項
  • n :數字,意思是『要列出最近的 n 筆命令列表』的意思!
  • -c :將目前的 shell 中的所有 history 內容全部消除
  • -a :將目前新增的 history 指令新增入 histfiles 中,若沒有加 histfiles , 則預設寫入 ~/.bash_history
  • -r :將 histfiles 的內容讀到目前這個 shell 的 history 記憶中;
  • -w :將目前的 history 記憶內容寫入 histfiles 中!
bang@linuxdiary:~$ history 3
125 history
126 history 5
127 history 3
history expansion 歷程擴展
所謂的歷程擴展,就是在命列重新執行歷程表中的舊命令,以下列出歷程擴展的語法
語法 說明
!! 歷程最後一道命令,同按上後 Enter。
!n 歷程第 n 個命令。
!-n 執行前 n 個命令。
!string 歷程表中最後一筆開頭為 string 的命令。
!?string 歷程表中最後一筆含有為 string 的命令。
^string1^string2 重複最後一筆命令,但命令中 string1 置換為 string2
!$ 前一個命令的最後一個元素
!:n-1 前一個命令的第 n 個元素

沒有留言: