zshell의 명령이 히스토리에 저장되지 않도록하는 방법은 무엇입니까?


답변:


37

HIST_IGNORE_SPACE 옵션을 사용하십시오.

setopt HIST_IGNORE_SPACE

남자 zshoptions

HIST_IGNORE_SPACE

행의 첫 번째 문자가 공백이거나 확장 된 별명 중 하나에 선행 공백이 포함 된 경우 히스토리 목록에서 명령 행을 제거하십시오. 명령은 사라지기 전에 다음 명령을 입력 할 때까지 내부 히스토리에 남아 있으므로 행을 잠시 재사용하거나 편집 할 수 있습니다. 다른 명령을 입력하지 않고 바로 사라지게하려면 공백을 입력하고 return 키를 누르십시오.


OSX에서 모든 명령 유형의 터미널 창을 열면이 작업을 수행 할 수 있기를 바랍니다. 당신이 틀린 나무를 짖고 있다는 것을 깨달았을 때.
Dan Rosenstark

2
그리고, 내가 방지하기 위해 원하는 명령에 대해, 나는 별칭을 사용 공간 접두사 : 별칭 jrnl = "jrnl"
사가르 Jauhari에

2
@Yar kill -9 해당 쉘 (라인 당 히스토리 파일 쓰기를 수행하지 않는 경우)
Michael Shigorin

1
@MichaelShigorin 감사합니다! kill -9 $$현재 터미널 세션에서 발행 된 모든 명령이 기록에 저장되는 것을 피하는 것이 실제로 환상적입니다.
Jeffrey Lebowski

2
@CMCDragonkai unset HISTFILE명령 블록보다 먼저 할 수 있습니다. HISTFILE원하는 히스토리에 명령을 유지하려면 나중에 재설정 하거나 새 쉘을 열어야합니다.
Chauncey Garrett

2

ZSH 히스토리에 추가 된 내용을보다 세밀하게 제어하려면에서 zshaddhistory기능을 정의 할 수 있습니다 .zshrc. 다음 정의는 정규식을 사용하여 무시할 패턴을 정의합니다.

function zshaddhistory() {
  emulate -L zsh
  if ! [[ "$1" =~ "(^ |^ykchalresp|--password)" ]] ; then
      print -sr -- "${1%%$'\n'}"
      fc -p
  else
      return 1
  fi
}

man zshopts아래 의 동작 HIST_IGNORE_SPACE은 여전히 ​​존재합니다.

명령은 사라지기 전에 다음 명령을 입력 할 때까지 내부 히스토리에 남아 있으므로 행을 잠시 재사용하거나 편집 할 수 있습니다.

그래서 그것을 테스트하려면 추가를 쳐야합니다 [Enter]. 이렇게하면의 출력 history과 ↑ 화살표 기록 에서 명령이 제거 됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.