IT박스

Bash 기록에 명령이 표시되지 않도록하려면 어떻게해야합니까?

itboxs 2020. 10. 21. 07:49
반응형

Bash 기록에 명령이 표시되지 않도록하려면 어떻게해야합니까?


때로 . rm -rf XYZ와 같은 명령을 실행할 때 실수로 같은 명령을 다시 실행할 수 있기 때문에 Bash 기록에 기록되는 것을 원하지 않습니다 reverse-i-search. 이런 일이 발생하지 않도록하는 좋은 방법이 있습니까?


HISTCONTROL환경 변수를로 설정 한 경우 ignoreboth(일반적으로 기본적으로 설정 됨) 선행 공백 문자가있는 명령은 기록에 저장되지 않습니다 (중복 항목 포함).

예를 들면 :

$ HISTCONTROL=ignoreboth
$ echo test1
$  echo test2
$ history | tail -n2
 1015  echo test1
 1016  history | tail -n2

내용 man bash다음과 같습니다 .

HISTCONTROL

명령이 히스토리 목록에 저장되는 방법을 제어하는 ​​콜론으로 구분 된 값 목록입니다. 값 목록이 포함되어있는 경우 ignorespace, 공백 문자로 시작하는 라인은 기록 목록에 저장되지 않습니다 . 값은 ignoredups이전 기록 항목과 일치하는 행이 저장되지 않도록합니다. 의 값은 및의 ignoreboth축약 형입니다 . 값은 현재 행과 일치하는 모든 이전 행이 해당 행이 저장되기 전에 내역 목록에서 제거되도록합니다. 위 목록에없는 값은 무시됩니다. 경우 해제, 또는 유효한 값을 포함하지 않는 모든 라인은, 기록 목록에 저장됩니다 쉘 파서의 값에 따라 읽기ignorespaceignoredupserasedupsHISTCONTROLHISTIGNORE. 다중 행 복합 명령의 두 번째 및 후속 행은 테스트되지 않으며의 값에 관계없이 기록에 추가됩니다 HISTCONTROL.

또한보십시오:


.bashrc / .bash_profile / 원하는 곳에 export HISTIGNORE=' *'. 그런 다음 무시하려는 명령을 공백 하나로 시작하십시오.

$ ls  # goes in history
$  ls # does not

더 나은 사용 HISTIGNORE. 이를 통해 무시할 패턴 세트 (예 :)를 지정할 수 있습니다 rm. (내 생각에) 모든 역사를/dev/null


다음 두 가지 중 하나를 수행 할 수 있습니다.

export HISTFILE=/dev/null

또는 공백으로 명령을 시작하십시오.


kill -9 $$

나는 그것이 위의 것만 큼 최선이 아니라는 것을 알고 있지만 이것은 아무것도 저장하지 않고 현재 bash 쉘을 죽일 것입니다 .HISTCONTROL이 기본적으로 설정되어 있지 않을 때 유용합니다. 일부 암호를 입력하고 기록에 영구적으로 남아있는 것을 원하지 않습니다. 이것은 빠른 방법입니다. 기록 파일을 지우는 것과 같은 것은 기록 저장 쉘 외부에서 수행해야하기 때문에 좋지 않습니다 (다른 사용자로 로그인하고 su / sudo 사용, 백그라운드 작업 생성 등)


또는

unset HISTFILE

(이전 답변과 비슷하지만 더 짧습니다 : export HISTFILE = / dev / null)


셸 시작시, 거기에 있고 싶지 않은 항목에서 기록을 명시 적으로 정리합니다. 예를 들어, 나는 rm -rf역사에 어떤 것도 원하지 않습니다 (단 하나의 Arrow-Up+ Enter: 만으로 밤새 처리 된 결과로 가득 찬 디렉토리를 제거한 후 트라우마입니다)

내 init 파일에 다음 스 니펫을 넣었습니다 (에서 작동 .zshrc하며에서도 작동해야 함 .bashrc)

# ...
HISTFILE=~/.zshhistory
# ...

# remove dangerous entries from the shell history
temp_histfile="/tmp/$$.temp_histfile"
grep -v -P '^rm .*-rf' $HISTFILE > $temp_histfile
mv $temp_histfile $HISTFILE

참고 URL : https://stackoverflow.com/questions/6475524/how-do-i-prevent-commands-from-showing-up-in-bash-history

반응형