无论参数如何,我都想忽略我的 bash 历史记录中对命令的所有调用。例如,要排除所有ls
、ls -l
和ls SOME_DIRECTORY
,我的理解是我需要这样做:
HISTIGNORE='ls:ls *'
我不能仅仅HISTIGNORE='ls*'
因为那也会忽略其他以 开头的命令ls
,这是不可取的。但是,ls
当ls *
我将条目添加到HISTIGNORE
.
有没有一种模式可以用来匹配命令本身和参数?
无论参数如何,我都想忽略我的 bash 历史记录中对命令的所有调用。例如,要排除所有ls
、ls -l
和ls SOME_DIRECTORY
,我的理解是我需要这样做:
HISTIGNORE='ls:ls *'
我不能仅仅HISTIGNORE='ls*'
因为那也会忽略其他以 开头的命令ls
,这是不可取的。但是,ls
当ls *
我将条目添加到HISTIGNORE
.
有没有一种模式可以用来匹配命令本身和参数?
HISTIGNORE
模式匹配尊重extglob
shell 选项的设置,并且通过扩展的通配符,您可以使用它来匹配ls
以空格开头并后跟空格,然后是其他任何内容,或者什么都没有(行尾)的命令。bash 扩展 glob的
@(foo|bar)
格式将与foo
或中的一个完全匹配bar
。在这里,我们给出的模式是ls@( *|)
,它将ls
在行首匹配,然后是空格和 0 个或更多其他后续字符,或者根本没有字符。这是在行动: