zsh로 히스토리에 등록하고 싶지 않은 (무시하고 싶은) 커멘드 라인을 지정한다
소개
zsh에만 국한되지는 않지만 명령 행 작업에서 자주 사용하는 것이 히스토리 기능입니다.
입력한 적이 있는 커맨드라인의 참조, 전개, 추출 등이 가능합니다.
가끔 히스토리를 검색하거나 파고 갈 때이 명령 방해가되지 않습니까?
pwd
, cd
, vim
뭔가 그렇습니다또한
HIST_VERIFY
옵션을 설정하지 않은 경우 실수로 위험한 명령 (mv
, rm
)을 확장하여 실행합니다.무슨 일이 있니?
사실 zsh에서는 히스토리에 쌓고 싶지 않은 명령을 지정할 수 있습니다!
라는 광적인 기사
이렇게 쓰는 것
중요한 설정이지만 변수
HISTORY_IGNORE
에 무시하고 싶은 명령을 지정하면됩니다..zshrc
HISTORY_IGNORE="pwd"
위의 예에서
pwd
는 히스토리 파일에 기록되지 않습니다.HISTORY_IGNORE
에는 패턴을 지정할 수 있습니다.따라서 여러 명령을 지정하는 경우 다음과 같이 지정합니다.
.zshrc
HISTORY_IGNORE="(cd|pwd|l[sal])"
위의 예에서
cd
, pwd
, ls
, la
, ll
는 무시됩니다. 편리!쓰는 법은 Glob Operators
HISTORY_IGNORE
그럼, 히스토리 파일 기입시에는 제외해 줍니다만, 내부 히스토리(메모리)에는 보통으로 이력이 쌓입니다※fc -l
하면 남아 있는 것을 알 수 있다내부 히스토리 등록시도 무시하는 경우는 다음의 방법으로 지정합니다
히스토리 (메모리)에도 쌓고 싶지 않습니다.
zshaddhistory
사용.zshrc
zshaddhistory() {
emulate -L zsh
[[ ${1%%$'\n'} != ${~HISTORY_IGNORE} ]]
}
이 Hook 함수는 명령행 실행 전(=히스토리 등록 전)에 불려 갑니다
zshaddhistory가 상태
1
를 반환하면 내부 기록에 더 이상 등록되지 않습니다.조금 해설
${1%%$'\n'}
명령 줄에서 줄 바꿈 문자를 제거합니다.변수 확장의
${name%%pattern}
구문 사용 ${~HISTORY_IGNORE}
HISTORY_IGNORE
를 패턴으로 확장복수 문자와의 비교로 자주
&&
포인트
개인적으로이 설정의 좋은 점은 ignore 명령이라도 다음 명령을 실행할 때까지 기록에 남아 있다는 것입니다.
즉 「인수의 일부만 갖고 싶다」 「인수를 바꾸어 실행하고 싶다」 때 어쩐지 직전의 커멘드로서 참조, 전개가 가능합니다
마지막으로
사실은 실행에 실패한 명령을 제외하고 싶었지만 할 수 없습니다.
||
사양 (명령 실행 후가 아니라 명령 실행 전에 호출됨)아시는 분 있으시면 알려주세요.
이상, 도움이되면 기쁩니다.
Reference
이 문제에 관하여(zsh로 히스토리에 등록하고 싶지 않은 (무시하고 싶은) 커멘드 라인을 지정한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sho-t/items/d44bfbc783db7ca278c0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)