나는 bash 명령에 해당하는 zsh를 찾고 있습니다 history -c
. 즉, 현재 세션의 기록을 지우는 것입니다. zsh 에 history -c
오류 메시지와 함께 1을 반환합니다 history: bad option: -c
.
명확히 하자면, 저는 물건을 삭제하는 방법을 찾고 있는 것이 아니라 $HISTFILE
, 터미널을 열었을 때와 동일한 상태로 기록을 재설정하는 명령을 원할 뿐입니다. 삭제는 $HISTFILE
내가 원하는 것과 반대입니다. 유지하려는 기록을 삭제하고 삭제하려는 기록을 유지합니다(이전에 내용이 삭제되었는지 여부에 관계없이 현재 세션의 기록이 여기에 첨부되기 때문입니다).
HISTFILE=/dev/null
현재 해결 방법을 사용하고 있지만 분명히 이상적이지는 않습니다. 현재 세션에서 터미널을 설정 하고 닫았다가 다시 엽니다. 이로 인해 닫힌 세션 기록이 에 추가되지 않습니다 $HISTFILE
. 그러나 나는 history -c
bash와 같은 것을 정말 좋아합니다. 터미널을 닫았다가 다시 시작하는 것보다 훨씬 더 우아합니다.
답변1
history -c
zsh와 동일history -p
답변2
빈 기록을 얻으려면 임시로 설정하십시오.HISTSIZE
0입니다.
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
- 기록 저장: 기록 공유 기본 설정에 따라
fc -AI
기록 파일에 추가하거나 기록 파일을 덮어씁니다.fc -WI
- 기록 파일을 편집합니다(
$HISTFILE
). - 기록 파일 다시 로드:
fc -R
.
답변3
다음 명령을 실행해 보십시오:
kill -9 $$
세션 기록을 저장하지 않고 현재 터미널을 종료합니다.
다음 사항도 유용할 수 있습니다.
rm -f ~/.zsh_history && kill -9 $$
세션 기록을 저장하지 않고 기록 파일을 삭제하고 현재 터미널을 종료합니다.
답변4
@Gimi의 답변과 비슷하지만 조금 더 부드럽게 파일을 삭제하는 대신 모든 내용을 삭제했습니다.
echo -n > ~/.zsh_history
또는
:>.zsh_history