bash 기록에 저장되지 않는 명령 제외


31

같은 명령을 제외 할 수있는 방법이 있습니까 rm -rf, svn revertbash는 기록에 저장하기되는 것을는? 실제로, 나는 실수를 저지르고 있지만 실수로 빨리 일을하고 있기 때문에 실수로 여러 번 발행했습니다. 따라서 지금까지 한 많은 작업이 손실됩니다.


3
당신은에 관심이있을 것이다 serverfault.com/questions/48769/…
Luc M

답변:


53

당신은 할 수 있습니다 $HISTIGNORE: "기록 목록에 저장되어야하는 명령 라인을 결정하는 데 사용 패턴의 콜론으로 구분 된 목록을." ~ / .bashrc의 다음 줄이 작업을 수행해야합니다.

HISTIGNORE='rm *:svn revert*'

또한 명령 시작 부분에 공백을 추가하여 기록에서 제외 할 수 있습니다. 이것은 내가 사용하는 배포판의 기본값 인 $HISTCONTROLcontains ignorespace또는을 ignoreboth사용하는 한 작동합니다.


4
우주는 내가 항상 한 일입니다.
Rob

나는 (에일리어싱 된 )이 y끝난 후에 실수로 추가를 입력 했습니다. 내가 별칭 그래서 같이 ...하지만 그것은 보이는 더 나은 방법이다. :) 감사. cpcp -iyalias y='$(history | awk '"'"'END{if(NF==2 && $2=="y"){print "history -d " $1}}'"'"')'HISTIGNORE
anishsane

2
그냥 더 명시합니다 : 당신은 추가 할 수 있습니다 export HISTCONTROL="ignorespace"당신에 ~/.bashrc공백으로 시작 명령을 무시합니다.
Aidan Feldman 2016 년

@AidanFeldman은 macOS에서 기본값이 아님
akauppi

참고 : HISTIGNORE가 아닌 명령 줄에 입력 할 때 공백이 포함되어야합니다.
Gayan Weerakutti

6

OP의 질문과 약간 다르지만 의도적으로 bash 기록에 명령을 저장하지 않으려는 경우 공백을 접두어로 붙입니다. 우분투 및 그 변형에서 작동하지만 모든 시스템에서 작동하는지 확실하지 않습니다.


6
에 달려 있습니다 $HISTCONTROL(내 대답 참조).
l0b0

@ l0b0 맞습니다. 지적 해 주셔서 감사합니다.
k4rtik

1

나는 역사에서 원하지 않는 일을했을 때 보통 내 배쉬 인스턴스를 죽입니다.

kill -9 $$

$$는 현재 프로세스를 나타냅니다. 쉘에서 실행할 때 bash입니다. $ BASHPID를 사용할 수 있지만 더 많이 입력하는 것입니다 :-)


2
(같은 일부 배쉬 설정 ) 각 명령 후 기록을 저장하며,이 경우이 작동하지 않습니다.
l0b0

1
나는 이것을했었다. 설정 HISTFILE=/dev/null하는 것이 더 좋습니다.
anishsane

단순히 HISTFILE=배쉬와 KSH 모두에서 작동합니다.
kubanczyk

또는unset HISTFILE
Todd Walton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.