bash 기록을 완전히 지우는 방법?


254

서버 기록에서 이전 명령을 모두 지우고 싶습니다. 나는 사용 history -c했고 모든 것이 지워진 것처럼 보이지만 서버에 ssh 할 때 모든 명령이 여전히 있습니다.

영구적으로 지우려면 어떻게해야합니까?

답변:


332

파일 ~/.bash_history은 기록을 보유합니다.

서버에서 bash 기록을 완전히 지우려면 터미널을 열고 다음을 입력하십시오.

cat /dev/null > ~/.bash_history

기타 다른 방법은 연결하는 것입니다 ~/.bash_history/dev/null

하나,

성가신 부작용 중 하나는 기록 항목 에 메모리에 사본이 있으며 로그 아웃하면 파일로 다시 플러시 된다는 것 입니다.

이 문제를 해결하려면 다음 명령을 사용하십시오.

cat /dev/null > ~/.bash_history && history -c && exit

17
.bashrc & .bash_logout에 위 명령을 넣을 수도 있습니다. 당신이 로그인했을 때의 의미는 분명한 이력을 가질 것이고 당신이 로그 아웃 할 때 당신의 이력은 클리어 될 것입니다
Qasim

26
왜 / dev / null이 필요합니까? 하지 않을까요 > ~/.bash_hstory충분?
구성자

4
예, 충분할 것입니다!
fromnaboo

3
SSH를 통해 연결된 상태에서 라즈베리 상자에서 시도했습니다. 위의 명령 (cat / dev / null> ~ / .bash_history && history -c && exit)을 @Qasim에서 제안한대로 .bashrc & .bash_logout에 추가했습니다. 이제 SSH를 통해 연결하자마자 원격 호스트가 연결을 닫습니다 (motd를 인쇄 한 후). 도움말 : /
Advanced

14
제대로 읽지 않고 처리 및 데이터 흐름을 이해하지 않고 맹목적으로 일을 할 때 발생하는 일을 보여줍니다. 또한 잘못된 의사 소통의 함정을 보여줍니다. devav2가 한 번 실행 한 것으로 Qasim이 작성 해야하는 것은 종료 스크립트를 로그인 스크립트에 추가하기 전에 제거하는 것입니다.
Sri

141

해야 할 일 :

에서 모든 열려있는 bash 쉘 (당신은 열려있는 여러 개의 터미널을 가질 수있다)

history -c
history -w

이유 : 위에서 언급 한 것처럼 history -c파일을 비 웁니다 ~/.bash_history. bash 쉘은 히스토리를 bash_history 파일로 즉시 플러시하지는 않습니다. 따라서 (1) 기록을 파일로 플러시하고 (2) 모든 터미널에서 기록을 지우는 것이 중요합니다 . 이것이 위의 명령이하는 일입니다.

참조 : http://www.giannistsakiris.com/index.php/2007/09/13/how-to-clear-bash-history-and-what-to-watch-out-for/


3
사실, 다른 방법으로 나를 위해 일했습니다.
kristianp

24
대부분의 history -cw
Elliot

2
어떤 이유로 이것은 우분투 14.04에서 작동하지 않을 수 있습니다. 하지만 그렇지 않습니다. "history -cw"명령을 실행하면 더 이상 히스토리가 없다는 것을 위쪽 화살표로 확인할 수 있지만, 터미널 아이콘을 Shift + 클릭하여 다른 터미널 창을 시작하면 (Unity 데스크탑에서) "history -cw"를 몇 번 수행하더라도 명령 기록이 다시 시작됩니다. "cat / dev / null> ~ / .bash_history"는 나를 위해 일한 유일한 방법입니다.
Hatoru Hansou

나는 Ubantu가 아니지만 OSX의 bash 쉘에서 잘 작동합니다.
Scott Biggs

3
히스토리 -c와 히스토리 -w입니다. 먼저 히스토리를 지우고 변경 사항을 작성하십시오. 터미널을 닫았다가 다시 열면 쉽게 확인할 수 있습니다. -w를 사용하면 명령이 다시 있고 -w를 사용하면 마지막 기록이 효과적으로 지워집니다.
Hatoru Hansou

56

역사를 영원히 지우려면 다음 명령을 실행하십시오.

history -c && history -w

행운을 빕니다!


3
허용 된 답변보다 훨씬 낫습니다. ;)
Chiramisu

이 답변은이 플래그들이 무엇을하는지 설명하기에 더 도움이 될 것입니다.
LarsH

20

history -c터미널 프롬프트에서 실행 하고 bash_history파일의 모든 항목이 사라졌습니다 .


전혀 그렇지 않다. 로그 아웃, 로그인, 화살표 업하면 모든 것이 제공됩니다. "역사 -w"도 필요합니다.
stolsvik

1
OP의 질문을 읽으면 사용 history -c이이 질문을 초래 한 정확한 방법임을 알 수 있습니다.
J.Money

10

다른 방법은 command ~/.bash_history를 사용하여 파일을 삭제하는 것 rm ~/.bash_history입니다. 다른 시간에 로그인하면 .bash_history파일이 자동으로 생성됩니다.


4
적어도 일부 OS에서는 ~ / .bash_history가 로그 아웃 할 때 디스크에 기록됩니다. * buntus에 대해 잘 모르겠습니다.
d -_- b

7

현재 쉘 히스토리를 지우십시오.

history -c

로그 아웃하면 현재 쉘 히스토리가 이전 쉘 히스토리의 캐시 인 ~ / .bash_history에 최대 수에 추가됩니다 ( "man bash"의 HISTFILESIZE 참조).

히스토리를 모두 제거하려면 위의 많은 항목에서 제안한 ~ / .bash_history를 비워야합니다. 같은 :

history -c && history -w

이것은 현재 쉘의 히스토리를 지우고 현재 쉘 히스토리 (빈)를 강제로 ~ / .bash_history ...를 덮어 쓰거나 더 정확하게하기 위해 HISTFILE (기본값은 ~ / .bash_history)을 덮어 씁니다.

도움이 되었기를 바랍니다.


4
정답은 정확하지만 질문은 2 살이 었으며 답변을 수락했으며 귀하가 제공 한 것과 동일한 답변을 포함했습니다.
Charles Green

6
rm ~/.bash_history; history -c; logout

이제 다시 로그인하여 화살표 업이 아무 것도주지 않는 것을 목격하십시오.


1
@KasiyA 서버와 ssh 세션에 관한 것이므로 편집 할 필요가 없습니다.
Radu Rădeanu

0

이거 한번 해봐

파일을 편집 .profile하고 파일 끝에 아래 줄을 추가하십시오.

rm -f .bash_history

이런 식으로 로그인 할 때마다 .bash_history 파일이 자동으로 삭제됩니다. -r 재귀 제거 옵션을 추가하면 위험하고 필요하지 않은 것 같습니다.

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