zsh를 사용하여 명령을 실행했다고 가정 해 보겠습니다.
echo "mysecret" > file
다음 명령을 사용하여 항목 번호를 포함한 내역을 쉽게 인쇄 할 수 있습니다 fc -l
.
1 echo "mysecret" >| file
그러나 어떻게 기록에서 항목을 쉽게 삭제할 수 있습니까?
man zshbuiltins 에서 해당 단락을 찾을 수 없습니다 .
답변:
LC_ALL=C sed -i '' '/porn/d' $HISTFILE
LC_ALL=C sed -i '/porn/d' $HISTFILE
$ HISTFILE에서 "porn"과 일치하는 모든 줄을 제거합니다.
를 사용하면 setopt HIST_IGNORE_SPACE
$ HISTFILE에 기록되지 않도록 위의 명령 앞에 공백 문자를 추가 할 수 있습니다.
로 팀 아래에 자신의 의견에서 지적 , 접두사 LC_ALL = C의 방지 '불법 바이트 시퀀스'오류가 발생했습니다.
sed -i '' '/S3_SECRET/d' $HISTFILE
. 이것은 리눅스에서 작동하지 않습니다. stackoverflow.com/questions/5694228/...
LC_ALL=C sed -i '' '/S3_SECRET/d' $HISTFILE
stackoverflow.com/questions/11287564/...
이 작업을 수행하는 우아한 방법이 있는지는 모르겠지만 비슷한 상황에서 로그 아웃 한 다음 (zsh가 버퍼를 비우고 내 기록을 파일에 기록하도록 허용) 로그인 한 다음 마지막 으로 수동으로 편집 ~/.zsh_history
하여 " 위험한 "라인.
HISTFILE=/dev/null
않거나 다른 쉘을 사용하십시오. 경우 zsh
로그인 쉘, 로그인이며 exec sh
, 다음 편집 ~/.zhistory
.
~/.zsh_history
다음 zsh를 다시 시작하십시오.
zsh에서 HIST_IGNORE_SPACE 옵션을 사용하는 경우 명령 앞에 공백 ""을 추가 할 수 있으며 히스토리 파일에 기억되지 않습니다. 일반적으로 사용하는 비밀 명령이 있으면 alias hiddencommand = 'hiddencommand' 줄을 따라 할 수 있습니다 .
setopt histignorespace
당신에~/.zshrc
histignorespace
. 매우 유용한 !
이 함수는 질문없이 Zsh 기록에서 원하는 한 줄을 제거합니다.
# Accepts one history line number as argument.
# Alternatively, you can do `dc -1` to remove the last line.
dc () {
# Prevent the specified history line from being saved.
local HISTORY_IGNORE="${(b)$(fc -ln $1 $1)}"
# Write out the history to file, excluding lines that match `$HISTORY_IGNORE`.
fc -W
# Dispose of the current history and read the new history from file.
fc -p $HISTFILE $HISTSIZE $SAVEHIST
# TA-DA!
print "Deleted '$HISTORY_IGNORE' from history."
}
모든 dc
명령이 히스토리에 기록 되지 않도록 추가로 방지 하려면 ~/.zshrc
파일에 다음을 추가 하십시오.
zshaddhistory() {
[[ $1 != 'dc '* ]]
}
이제 플러그인으로 더 포괄적 인 솔루션을 게시했습니다 : https://github.com/marlonrichert/zsh-hist
에서 bash는 :
1- bash 터미널 유형
hsitory
# 이것은 행 번호와 함께 히스토리 .bash_history 파일의 모든 명령을 나열합니다.
전의:
...
987 cd
988 ssh x@127.0.0.1
990 exit
991 cd
2- 삭제하려는 CMD 라인 번호를 선택하십시오.
history -d 988
참고 : 예를 들어 마지막 3 개의 CMD를 삭제하려면 하단에서 세 번째 줄 번호 (예 : 988)를 선택하고 CMD history -d 988
를 순서대로 3 번 반복합니다 .
history -d
ZSH에서 작동하지 않습니다. 별칭 일 뿐이며 오류로 fc -l 1
끝납니다 fc: event not found: -d
.