你能分享一下在 bash 中使用 HITIGNORE 的智慧吗?

sag*_*age 33 terminal bash

我在飞机上阅读 bash 的联机帮助页时偶然发现了 HITIGNORE 变量。为了测试它,我立即编辑了我的 .profile 来定义这个变量:

导出 HISTIGNORE=ls

我测试了它,这很棒!它从我的历史记录中排除了简单的“ls”命令,但不排除更有趣的具有冗长路径的命令,但最近从 SU 那里收获了大量智慧,我很想知道超级用户可能会推荐哪些其他命令或其他经验教训。

关于在 bash 中使用 HITIGNORE 变量,您能分享什么?

Sta*_*ams 33

我不理ls不命令bgfgexitpwdclearmountumount

如果您将它包含在您的HISTIGNORE字符串中,您可以通过在命令前面添加一个空格来根据需要取消任何内容:

"[ \t]*" 
Run Code Online (Sandbox Code Playgroud)

这是我的HISTIGNORE

HISTIGNORE="&:ls:[bf]g:exit:pwd:clear:mount:umount:[ \t]*"
Run Code Online (Sandbox Code Playgroud)

我已经排除了我在那里拥有的一些其他内容,这些内容是我的服务器独有的重复命令。任何你做的简单的事情都可以排除。

我还有其他东西我忘记添加了,但我离我的 Linux 机器很远,所以我的内存不足。

  • 如果`HISTCONTROL` 的值包括“ignorespace”或“ignoreboth”,以空格开头的命令将从历史记录中省略。如果该值包含“ignore dups”或“ignoreboth”,则它与“HISTIGNORE”中的“&”相同。 (7认同)
  • 使用 `"[ \t]*"` 会忽略以空格或 `t` 开头的命令。你想要`HISTIGNORE=$'&:ls:[bf]g:exit:pwd:clear:mount:umount:[ \t]*'` (2认同)

Eug*_*ash 19

不要在历史列表中保存琐碎的一两个字符的命令:

HISTIGNORE='?:??'
Run Code Online (Sandbox Code Playgroud)

如果extglob启用该选项,您还可以使用扩展模式,例如

HISTIGNORE='a*( )'
Run Code Online (Sandbox Code Playgroud)