zsh에서 기록을 지우는 방법

zsh에서 기록을 지우는 방법

나는 bash 명령에 해당하는 zsh를 찾고 있습니다 history -c. 즉, 현재 세션의 기록을 지우는 것입니다. zsh 에 history -c오류 메시지와 함께 1을 반환합니다 history: bad option: -c.

명확히 하자면, 저는 물건을 삭제하는 방법을 찾고 있는 것이 아니라 $HISTFILE, 터미널을 열었을 때와 동일한 상태로 기록을 재설정하는 명령을 원할 뿐입니다. 삭제는 $HISTFILE내가 원하는 것과 반대입니다. 유지하려는 기록을 삭제하고 삭제하려는 기록을 유지합니다(이전에 내용이 삭제되었는지 여부에 관계없이 현재 세션의 기록이 여기에 첨부되기 때문입니다).

HISTFILE=/dev/null현재 해결 방법을 사용하고 있지만 분명히 이상적이지는 않습니다. 현재 세션에서 터미널을 설정 하고 닫았다가 다시 엽니다. 이로 인해 닫힌 세션 기록이 에 추가되지 않습니다 $HISTFILE. 그러나 나는 history -cbash와 같은 것을 정말 좋아합니다. 터미널을 닫았다가 다시 시작하는 것보다 훨씬 더 우아합니다.

답변1

history -czsh와 동일history -p

답변2

빈 기록을 얻으려면 임시로 설정하십시오.HISTSIZE0입니다.

function erase_history { local HISTSIZE=0; }
erase_history

이 셸 인스턴스에서 새 기록을 삭제하고 원래 로드되었던 이전 기록을 유지하려면 위와 같이 기록을 지우고 저장된 기록을 다시 로드하세요 fc -R.

통화 기록에 통화가 기록되는 것을 원하지 않는 경우 erase_history통화 기록에서 필터링할 수 있습니다.zshaddhistory.

function zshaddhistory_erase_history {
  [[ $1 != [[:space:]]#erase_history[[:space:]]# ]]
}
zshaddhistory_functions+=(zshaddhistory_erase_history)

bash에서 특정 기록 요소를 삭제하는 것은 또 다른 문제입니다. 나는 다음과 같은 방법 외에는 다른 방법이 없다고 생각합니다.history -d NUM

  1. 기록 저장: 기록 공유 기본 설정에 따라 fc -AI기록 파일에 추가하거나 기록 파일을 덮어씁니다.fc -WI
  2. 기록 파일을 편집합니다( $HISTFILE).
  3. 기록 파일 다시 로드: fc -R.

답변3

다음 명령을 실행해 보십시오:

kill -9 $$

세션 기록을 저장하지 않고 현재 터미널을 종료합니다.

다음 사항도 유용할 수 있습니다.

rm -f ~/.zsh_history && kill -9 $$

세션 기록을 저장하지 않고 기록 파일을 삭제하고 현재 터미널을 종료합니다.

답변4

@Gimi의 답변과 비슷하지만 조금 더 부드럽게 파일을 삭제하는 대신 모든 내용을 삭제했습니다.

echo -n > ~/.zsh_history

또는

:>.zsh_history

관련 정보