我的 bash.history 中有空白行?

我的 bash.history 中有空白行?

我正在查看我的.bash_history,然后发现了一个空白行。我想我可以在查看文件时按“Enter”。

这正常吗?或者也许我在 gedit 上查看文件时真的按了 Enter 键?

编辑:今天刚发现我有多个换行符。这很奇怪,我从来没有编辑过 .bash_history 文件。

答案1

这不是一个问题,它并不危险,而且完全正常。如果你点击space几次,然后点击 ,你就会得到这样的行enter。这将保存在你的历史记录中(因为它是非空白行,空格是字符,只是不可见的)。

为了测试这一点,我们可以使用一个命令来打印 bash 历史记录中的空行,例如,这grep将匹配所有以数字开头并且有 0 个或更多空格(空格或制表符或其他)并且直到行尾没有其他内容的行:

history | grep -P '^\s*\d+\s*$'

这应该会显示您已运行的空命令列表。现在,运行(第一行表示按几次空格,然后输入)

$ echo foo
foo
$       
$ history  | tail -n 3
$ history | tail -n 3
80  echo foo
81               ## this is the blank line
82  history | tail -n 3

您会注意到有一个新的空白行。总之,不用担心。一切都很好,这是正常的。

答案2

作为terdon 提到,这些很可能都是空白行。

有两个环境变量选项可以控制空白行是否存储在历史记录中:

  • HISTCONTROL:如果它包含ignorespace,那么以空格开头的任何行都会被忽略。

  • HISTIGNORE:要忽略的模式的冒号分隔列表。例如,如果它包含:

    HISTIGNORE=' *'
    

    那么以单个空格开头的行将被忽略。

我无法让 bash 存储没有空格的真正空行。

答案3

这里是关于文件中如何出现空行的解释.bash_history

简单来说:

如果你从历史记录中调用之前输入过的命令行在同一个当前终端会话中然后编辑它(也许删除它),但然后通过离开该(历史)命令行来中断您的编辑,例如使用箭头Down返回到实际当前命令行的提示符,然后当您稍后退出终端时,编辑会记录在 .bash_history 文件中。

相关内容