무시하고 싶다모두인수에 관계없이 내 bash 기록의 명령이 호출됩니다. 예를 들어, ls
, ls -l
및 을 모두 제외하려면 ls SOME_DIRECTORY
다음을 수행해야 한다고 이해합니다.
HISTIGNORE='ls:ls *'
HISTIGNORE='ls*'
으로 시작하는 다른 명령도 무시하므로 이를 사용할 수 없습니다. ls
이는 바람직하지 않습니다. 그러나 ls
항목 ls *
을 HISTIGNORE
.
명령을 개별적으로 일치시키는 데 사용할 수 있는 패턴이 있습니까?그리고인수가?
답변1
HISTIGNORE
패턴 일치는 셸 옵션 설정을 따르며 , 확장된 와일드카드를 사용하면 공백으로 시작하고 뒤에 다른 항목 또는 아무것도 없는(줄 끝) 명령을 extglob
일치시키는 데 사용할 수 있습니다 .ls
shopt -s extglob
HISTIGNORE='ls@( *|)'
bash 확장 glob의 형식은 @(foo|bar)
또는 중 하나와 정확히 일치합니다. 여기서 주어진 패턴은 줄의 시작 부분에서 일치하고 공백과 0개 이상의 다른 후속 문자가 뒤따르거나 어떤 문자와도 전혀 일치하지 않는 것입니다.foo
bar
ls@( *|)
ls
이것이 실제로 작동하는 것입니다:
$ shopt -s extglob
$ export HISTIGNORE='ls@( *|)'
$ history -c
$ ls > /dev/null
$ ls * > /dev/null
$ ls -la > /dev/null
$ ls file > /dev/null
$ lsa
-bash: lsa: command not found
$ history
1 lsa
2 history