답변:
기록에 단일 명령을 저장하지 않으려면 명령 앞에 공백이 있어야합니다 ( ␣
여기 로 표시 ).
$ echo test
test
$ history | tail -n2
3431 echo test
3432 history | tail -n2
$ ␣echo test2
test2
$ history | tail -n2
3431 echo test
3432 history | tail -n2
이 동작은 ~/.bashrc
파일, 즉 다음 줄에 설정됩니다.
HISTCONTROL=ignoreboth
man bash
말한다 :
HISTCONTROL
명령이 내역 목록에 저장되는 방법을 제어하는 콜론으로 구분 된 값 목록입니다. 값 목록이 포함 된 경우 ignorespace을 , 공백 문자로 시작하는 라인은 기록 목록에 저장되지 않습니다 . ignoreups 값은 이전 히스토리 항목과 일치하는 행을 저장하지 않습니다. 값 ignoreboth은 속기이다 ignorespace 및 ignoredups .
ignoredups
그건 그렇고 history | tail -n2
위의 테스트에서 역사에 한 번만 나타나는 이유 입니다.
터미널 기록은 RAM에 저장되고 ~/.bash_history
터미널을 닫 자마자 플러시됩니다 . 특정 항목을 삭제하려면 ~/.bash_history
다음을 수행 하십시오 sed
.
# print every line…
sed '/^exit$/!d' .bash_history # … which is just “exit”
sed '/^history/!d' .bash_history # … beginning with “history”
sed '/>>log$/!d' .bash_history # … ending with “>>log”
sed '\_/path/_!d' .bash_history # … containing “/path/” anywhere
마지막에서 기본 구분 기호 /
를 _
검색어 내부에서 사용되는 것으로 변경 했습니다 sed -i '/\/path\//d' .bash_history
. 실제로 이것은 같습니다 . 명령 출력 당신이 추가, 삭제하려는 경우에만 라인의 경우 -i
옵션과 변화를 !d
위해 d
삭제를 수행합니다 :
# delete every line…
sed -i '/^exit$/d' .bash_history # … which is just “exit”
sed -i '/^history/d' .bash_history # … beginning with “history”
sed -i '/>>log$/d' .bash_history # … ending with “>>log”
sed -i '\_/path/_d' .bash_history # … containing “/path/” anywhere
한 가지 방법은 HISTIGNORE
환경 변수 를 설정하는 것입니다. 에서man bash
HISTIGNORE
A colon-separated list of patterns used to decide which command
lines should be saved on the history list. Each pattern is
anchored at the beginning of the line and must match the com‐
plete line (no implicit `*' is appended). Each pattern is
tested against the line after the checks specified by HISTCON‐
TROL are applied.
[FWIW의 경우, HISTCONTROL
전면 유형 공간 해결 방법을 제공하는 것이 기본값 입니다].
예를 들어
HISTIGNORE='history -d*'
지속적으로 유지하려면 ~/.bashrc
export HISTIGNORE='history -d*'
나는 보통 다음을 사용합니다.
history -w; history -c; $EDITOR $HISTFILE; history -r
히스토리 파일은 디스크에 기록되고 메모리에서 지워지고 원하는 작업을 수행하도록 편집 한 다음 편집 한 히스토리 파일을 다시 읽습니다.
편집기가 백업 파일을 저장하면 나쁜 단어가 여전히 디스크에 나타날 수 있습니다.
사용하는 또 다른 옵션 -d
은 예측 기록 번호를 사용하는 것입니다.
startide sr> # good thing
startide sr> # bad thing
startide sr> history | tail -n 2
17239 # bad thing
17240 history | tail -n 2
startide sr> history -w; history -d 17239; history -d 17239; history -d 17239
startide sr> # other thing
startide sr> history | tail -n 3
17239 # good thing
17240 # other thing
17241 history | tail -n 3
이 예에서는 잘못된 것을 삭제하고 기록 번호를 얻기 위해 명령을 삭제 한 다음 기록을 삭제하는 데 사용한 명령을 삭제합니다. 그때 모든 것이 위생 처리됩니다.