本文字数:2239,阅读时长大约:2分钟
导读:告诉 Bash 你想要它记住什么,甚至删除不需要的记录重写历史。
https://linux.cn/article-12381-1.html

作者:Seth Kenlon
译者:geekpi
运行 Bash 的 Linux 终端有内置的历史记录,你可以用来跟踪最近的操作。要查看你的 Bash 会话的历史记录,请使用内置命令 history
  1. $ echo"foo"
  2. foo
  3. $ echo"bar"
  4. bar
  5. $ history
  6. 1echo"foo"
  7. 2echo"bar"
  8. 3  history
与大多数命令不一样,history 命令不是文件系统上的可执行文件,而是 Bash 的功能。你可以使用 type 命令来验证:
  1. $ type history
  2. history is a shell builtin
历史控制
shell 历史记录的行数上限由 HISTSIZE 变量定义。你可以在 .bashrc 文件中设置此变量。以下将你的历史记录设置为 3,000 行,之后将最早的行删除以为最新命令腾出空间,该命令位于列表的底部:
  1. export HISTSIZE=3000
还有其他与历史相关的变量。 HISTCONTROL 变量控制哪些历史被记录。你可以在 .bashrc 中写入下面的行来强制 Bash 排除以空格开头的命令:
  1. export HISTCONTROL=$HISTCONTROL:ignorespace
现在,如果你输入以空格开头的命令,那么它将不会记录在历史记录中:
  1. $ echo"hello"
  2. $     mysql -u bogus -h badpassword123 mydatabase
  3. $ echo"world"
  4. $ history
  5. 1echo"hello"
  6. 2echo"world"
  7. 3  history
你也可以避免重复的条目:
  1. export HISTCONTROL=$HISTCONTROL:ignoredups
现在,如果你一个接着一个输入两个命令,历史记录中只会显示一个:
  1. $ ls
  2. $ ls
  3. $ ls
  4. $ history
  5. 1ls
  6. 2  history
如果你喜欢这两个忽略功能,那么可以使用 ignoreboth
  1. export HISTCONTROL=$HISTCONTROL:ignoreboth
从历史记录中删除命令
有时你会犯一个错误,在 shell 中输入了一些敏感内容,或者你只是想清理历史记录,以便它更准确地表示让某件事正常工作所采取的步骤。如果要从 Bash 的历史记录中删除命令,请在要删除的项目的行号上使用 -d 选项:
  1. $ echo"foo"
  2. foo
  3. $ echo"bar"
  4. bar
  5. $ history |tail
  6. 535echo"foo"
  7. 536echo"bar"
  8. 537  history |tail
  9. $ history -d 536
  10. $ history |tail
  11. 535echo"foo"
  12. 536  history |tail
  13. 537  history -d 536
  14. 538  history |tail
要停止添加 history 条目,只要在 HISTCONTROL 环境变量中有 ignorespace,就可以在命令前添加空格:
  1. $  history |tail
  2. 535echo"foo"
  3. 536echo"bar"
  4. $  history -d 536
  5. $  history |tail
  6. 535echo"foo"
你可以使用 -c 选项清除所有会话历史记录:
  1. $ history -c
  2. $  history
  3. $
history 命令的经验教训
操纵历史通常没有听起来那么危险,尤其是当你有目标地管理它时。例如,如果你要记录一个复杂的问题,通常最好使用会话历史来记录命令,因为通过将命令插入历史记录,你能运行它们并从而测试过程。很多时候,不执行历史命令会导致忽略小的步骤或写错小细节。
按需使用历史会话,并明智地控制历史记录。享受历史修改吧!

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出
继续阅读
阅读原文