获取bash历史记录以仅记住以前缀空间运行的命令!


10

在终端中以空格开头的命令不会记录在命令历史记录文件中。但是有没有办法扭转这种情况,即历史记录只应记录那些以空格为前缀的内容?

Answers:


12

您可以通过设置两个变量(HISTIGNORE HISTCONTROL)来反转Ubuntu的默认设置,使用如下命令:

HISTIGNORE='!( *)'
HISTCONTROL=ignoredups

HISTCONTROL=ignoredups更改历史记录行为以仅忽略重复的行,而不忽略以空格开头的行。(HISTCONTROL=如果您确实想保留重复项,也可以将HISTCONTROL设置为空字符串(使用),但这通常是不希望的。)

HISTIGNORE='!( *)'使历史记录忽略所有以空格( *)开头的行:会匹配以空格开头的每一行,但是前导会!否定匹配项,因此它会匹配所有以空格开头的行。HISTIGNORE模式匹配的所有内容都将被历史忽略。(后一个选项要求bash在extglob打开时使用来运行shopt -s extglob,但这是Ubuntu上的默认设置。)

如果您想永久保留该名称,请不要忘记将上述两个命令放入~/.bashrc


谢谢,这正是我想要的。.将更改保存到.bashrc..我需要这样做,以防止bash记录我使用的每个cds,lss和其他日常命令;对于历史上我需要的一些命令,我​​现在可以使用前缀..
2014年

1
@rusty如果只想排除一些琐碎的命令,那么使用诸如的内容可能会更好HISTIGNORE='ls*:cd*',这会使历史记录忽略以ls或开头的每一行cd,您可以使用其他命令扩展该列表,只需:在命令之间放置一个。但是请不要忘记,您可以通过“向上箭头键”访问的命令调用功能也使用了此历史记录,因此,如果您设置了要忽略的内容,则无法使用“向上箭头”。
falconer 2014年

我想忽略任何SSH命令,但不能忽略诸如ssh-copy-id或的命令ssh-keygen。在中HISTIGNORE,我在ssh\ *其他忽略的命令中都包含了“ ”。转义空格字符似乎是强制性的。
user38537

2

在终端中以空格开头的命令不会记录在命令历史记录文件中

对,他们是。

终端历史


1
这是bash中的设置;-)
Rinzwind 2014年

前缀为空格的命令。就像`sudo apt-get update`
Avinash Raj

您的HISTCONTROL变量的值是多少?
glenn jackman 2014年

@AvinashRaj:是的,看到命令“不要记录”,我放了一个空格(在命令行和历史记录中都可见)。因此,这种方式行不通。也许您可以配置它(使用HISTCONTROL);但默认情况下并非如此。
MrVaykadji
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.