這些技巧讓 Bash 命令歷史更加有用
運行 Bash 的 Linux 終端有內置的歷史記錄,你可以用來跟蹤最近的操作。要查看你的 Bash 會話的歷史記錄,請使用內置命令 history
:
$ echo "foo"
foo
$ echo "bar"
bar
$ history
1 echo "foo"
2 echo "bar"
3 history
與大多數命令不一樣,history
命令不是文件系統上的可執行文件,而是 Bash 的功能。你可以使用 type
命令來驗證:
$ type history
history is a shell builtin
歷史控制
shell 歷史記錄的行數上限由 HISTSIZE
變數定義。你可以在 .bashrc
文件中設置此變數。以下將你的歷史記錄設置為 3,000 行,之後將最早的行刪除以為最新命令騰出空間,該命令位於列表的底部:
export HISTSIZE=3000
還有其他與歷史相關的變數。 HISTCONTROL
變數控制哪些歷史被記錄。你可以在 .bashrc
中寫入下面的行來強制 Bash 排除以空格開頭的命令:
export HISTCONTROL=$HISTCONTROL:ignorespace
現在,如果你輸入以空格開頭的命令,那麼它將不會記錄在歷史記錄中:
$ echo "hello"
$ mysql -u bogus -h badpassword123 mydatabase
$ echo "world"
$ history
1 echo "hello"
2 echo "world"
3 history
你也可以避免重複的條目:
export HISTCONTROL=$HISTCONTROL:ignoredups
現在,如果你一個接著一個輸入兩個命令,歷史記錄中只會顯示一個:
$ ls
$ ls
$ ls
$ history
1 ls
2 history
如果你喜歡這兩個忽略功能,那麼可以使用 ignoreboth
:
export HISTCONTROL=$HISTCONTROL:ignoreboth
從歷史記錄中刪除命令
有時你會犯一個錯誤,在 shell 中輸入了一些敏感內容,或者你只是想清理歷史記錄,以便它更準確地表示讓某件事正常工作所採取的步驟。如果要從 Bash 的歷史記錄中刪除命令,請在要刪除的項目的行號上使用 -d
選項:
$ echo "foo"
foo
$ echo "bar"
bar
$ history | tail
535 echo "foo"
536 echo "bar"
537 history | tail
$ history -d 536
$ history | tail
535 echo "foo"
536 history | tail
537 history -d 536
538 history | tail
要停止添加 history
條目,只要在 HISTCONTROL
環境變數中有 ignorespace
,就可以在命令前添加空格:
$ history | tail
535 echo "foo"
536 echo "bar"
$ history -d 536
$ history | tail
535 echo "foo"
你可以使用 -c
選項清除所有會話歷史記錄:
$ history -c
$ history
$
history 命令的經驗教訓
操縱歷史通常沒有聽起來那麼危險,尤其是當你有目標地管理它時。例如,如果你要記錄一個複雜的問題,通常最好使用會話歷史來記錄命令,因為通過將命令插入歷史記錄,你能運行它們並從而測試過程。很多時候,不執行歷史命令會導致忽略小的步驟或寫錯小細節。
按需使用歷史會話,並明智地控制歷史記錄。享受歷史修改吧!
via: https://opensource.com/article/20/6/bash-history-control
作者:Seth Kenlon 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive