bash와 zsh는 명령 앞에 공백을 추가하는 경우 명령을 기록에 넣지 않는 간단한 방법을 지원합니다. 이는 세션 전반에 걸쳐 훌륭하게 작동합니다(있는 경우 setopt histignorespace
). 그러나 명령은 여전히 현재 세션 기록에 남아 있습니다.
명령을 입력하지 않는 방법현재 세션 기록(또는 실행 후 if를 삭제하시겠습니까?)
답변1
setopt histignorespace
명령을 사용하다예현재 세션 기록에서 제거합니다. 를 눌러 테스트 Up하고 명령줄이 그대로 있는지 확인하면 기능입니다.
해당 명령은 다음 명령이 입력될 때까지 내부 기록에 남아 있으므로 해당 줄을 잠시 재사용하거나 편집할 수 있습니다. 다른 명령을 입력하지 않고 즉시 사라지게 하려면 공백을 입력하고 Enter 키를 누르세요.
입력한 명령이 공백으로 시작하지 않거나 histignorespace
이 옵션이 켜져 있지 않은 경우현재 세션 기록에서 명령을 제거할 수 없습니다.(외부에서 기록 파일을 편집할 수 있습니다).
답변2
zsh 대신 bash를 사용하는 경우 다음 기술을 사용하여 기록에서 명령을 제거할 수 있습니다.
위쪽 화살표를 눌러 해당 줄에 도달한 다음 Ctrl-U를 눌러 삭제합니다. ENTER를 누르지 말고 위쪽 또는 아래쪽 화살표를 눌러 다른 기록 줄로 이동하세요.
삭제하려는 줄은 빈 줄로 대체됩니다. 이것이 어디에 문서화되어 있는지는 모르겠지만, 몇 년 전에 우연히 발견한 것뿐입니다... 삭제는 단지 기록 라인을 꽤 철저하게 편집한 것일 뿐인 것 같아요 :).
예를 들어 ^U를 눌러 줄을 지우는 대신 뭔가를 변경하세요.엔터를 누르지 마세요, 그러면 새 기록 항목이 생성됩니다. 대신 위쪽 또는 아래쪽 화살표를 누르세요. 이제 행이 기록에서 영구적으로 변경되었으며, 위쪽/아래쪽 화살표를 사용하여 다시 보기로 가져오면 이를 확인할 수 있습니다.
영구적이라는 것은 위쪽/아래쪽 화살표 키를 누른 후 새/편집된 명령에서 Enter 키를 눌러도 줄이 변경된 상태로 유지된다는 의미입니다. 편집된 행만 기록에 남아 원래 행을 대체하고 쉘을 종료할 때 평소와 같이 $HISTFILE에 저장됩니다.
기록에 영향을 주지 않도록 ^C를 눌러 편집을 중단하거나 ^U를 눌러 지우면 됩니다.
history -d
또 다른 방법은 과거 행 번호를 알고 있는 경우 사용하는 것입니다. 예를 들어:
$ 역사 | grep 역사 | [...관련없음, 삭제됨...] 10113 도움말 기록 10114 역사 | grep 꼬리 | $ 역사 -d 10113 $ 역사 | grep 역사 | [...관련없음, 삭제됨...] 10113 역사-d 10113 10114 역사 | grep 꼬리 |
이 help history
줄은 삭제되었습니다history -d 10114