에 저장된 터미널 또는 명령 줄 기록에 대한 몇 가지 질문이 ~/.bash_history
있습니다.
-
history
명령으로 터미널에서 파일을 볼 수 있지만gedit bash_history
파일 로 열려고하면 완전히 비어 있습니다. 왜? -
이 코드 줄을 사용하여 터미널에서 파일의 특정 줄 수를 삭제하는 방법을 찾았습니다.
for i in {1..N}; do history -d N; done
여기서 N은 삭제하려는 줄 수 또는 명령 수이지만 이제 기록 파일에는이 마지막 명령이 표시되며 물건을 덮으려고하면 그다지 똑똑하지 않습니다. 그래서 질문은 : 마지막 코드 줄을 어떻게 제공하고 이것이 기록되지 않도록 할 수 있습니까?
답변
-
위의 점을 잊어 버렸습니다. (bash) 터미널 기록 파일을 여는 명령은 다음과 같습니다.
gedit ~/.bash_history
이 파일은 터미널 을 닫을 때만 업데이트됩니다 .
-
이 파일에서 마지막 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를 다시보십시오. 명령 기록이 있어야합니다.