태그 보관물: bash-history

bash-history

~ / .bash_history에서 히스토리 삭제 방법을 찾았습니다. for

에 저장된 터미널 또는 명령 줄 기록에 대한 몇 가지 질문이 ~/.bash_history있습니다.

  1. history명령으로 터미널에서 파일을 볼 수 있지만 gedit bash_history파일 로 열려고하면 완전히 비어 있습니다. 왜?

  2. 이 코드 줄을 사용하여 터미널에서 파일의 특정 줄 수를 삭제하는 방법을 찾았습니다.

    for i in {1..N}; do history -d N; done

    여기서 N은 삭제하려는 줄 수 또는 명령 수이지만 이제 기록 파일에는이 마지막 명령이 표시되며 물건을 덮으려고하면 그다지 똑똑하지 않습니다. 그래서 질문은 : 마지막 코드 줄을 어떻게 제공하고 이것이 기록되지 않도록 할 수 있습니까?



답변

  1. 위의 점을 잊어 버렸습니다. (bash) 터미널 기록 파일을 여는 명령은 다음과 같습니다.

    gedit ~/.bash_history

    이 파일은 터미널 을 닫을 때만 업데이트됩니다 .

  2. 이 파일에서 마지막 10 행 을 제거 하고이 명령 자체를 기록하지 않으려면 새 터미널을 열고 다음 명령 체인을 실행하십시오.

    sed -n -e :a -e '1,10!{P;N;D;};N;ba' ~/.bash_history && history -c && exit

    또는

    for i in {1..10}; do sed -i '$d' ~/.bash_history; done && history -c && exit

    또는

    head -n -10 ~/.bash_history > ~/.b_h_2 && mv ~/.b_h_2 ~/.bash_history && history -c && exit

    sed또는 head각각으로부터 선택된 라인을 삭제 ~/.bash_history, history -c단말기의 이력을 지우고 exit를 닫는다.


답변

bash_history 파일은 점으로 시작하는 숨겨진 파일입니다. 당신은해야합니다

gedit ~/.bash_history

파일이 gedit로 열립니다.


답변

명령 로그의 특정 부분 만 삭제하려면 위의 방법으로도 충분합니다. 특정 bash 세션에 대한 명령 로깅을 중지하려면 명령을 발행하십시오.

unset HISTFILE

보다 과감하게 명령을 기록하지 않으려면 할 수 있습니다.

rm ~/.bash_history
ln -s /dev/null ~/.bash_history

첫 번째 방법은 단일 세션에만 적용되는 반면, 두 번째 방법은 이후의 모든 세션에 대한 명령 로깅을 중지합니다.


답변

나는 이것이 이미 받아 들일만한 대답을 가지고 있다는 것을 알고 있지만 이것이 80 년대 이후로해온 방법입니다. 트랙을 숨길 수있는 좋은 방법이며 다단계 접근 방식입니다. 대부분의 경우 실제로주의를 기울이지 않는 한 눈에 띄지 않는 것입니다. 방법은 다음과 같습니다.

터미널 / 쉘 / 세션을 열고 다음을 수행하십시오.

 chmod 444 ~/.bash_history

쉘을 종료하면 터미널 / 쉘 / 세션을 열고 다음을 수행하십시오. 히스토리를 영구적으로 지우는 창의적인 방법은 다음과 같습니다.

1:

 vi ~/.bash_history
 9999999 dd
 <esc>wq!

2 (가짜 이력 만들기)

 sudo echo "which ls" > ~/.bash_history
 sudo echo "cd ~/;ls" >> ~/.bash_history

그런 다음 좋은 측정을 위해 :

 chmod 444 ~/.bash_history

껍질을 나가다

새로운 껍질을 열고 입력

 history

덜 눈에 띄는 것은 ls -ratl을 수행하면 ~ / .bash_history는 결국 디렉토리 목록의 딸랑이에서 사라집니다. 불필요한주의를 끌 수있는 링크로 표시되지 않습니다. 대부분의 사람들은 루트에서 -a를 수행하지 않으므로 에뮬레이션이 필요할 때 유용합니다.

이 방법의 단점은 돌아가서 기록을 검색 할 수있는 능력을 상실한다는 것입니다. 실제 ~ / .bash_history 파일은 시간이 지남에 따라 실제로 오래된 수정 날짜로 끝날 수 있기 때문에 디렉토리 목록의 맨 위에있을 수 있습니다.


답변

1) 실행 sh; 이것은 역사를 전혀 기록하지 않는 재의 하위 껍질을 만듭니다. 거기에서 편집

2) 라인을 추가 HISTCONTROL=ignoreboth로를 .bashrc, 그리고 어떻게 exec bash영구적으로 선도적 인 공간 로그인하지 않으 모든 명령을 한 후, A는 하나를 다시 초기화와 현재 쉘을 대체 할 수 있습니다.


답변

아직 댓글을 달 수 없으므로 답변으로 내 댓글을 추가합니다.

man history 모든 것에 대답합니다.

# 1에 대한 답은 역사가 기억에 있다는 것입니다. history -a파일에 즉시 저장합니다. history -w또한 저장하지만 다른 세션을 망칠 수 있습니다.

답변 # 2 : history -a, gedit, 원하는 줄 삭제,history -r


답변

기록은 쉘에서 로그 아웃 할 때까지 저장되지 않습니다. 쉘에서 로그 아웃 한 후 .bash_history를 다시보십시오. 명령 기록이 있어야합니다.