Linux中國

這些技巧讓 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

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國