Mac OS X 터미널 기록은 어떻게 편집합니까?


12

Mac OS X에서 bash 기록을 어떻게 편집합니까? 실수로 해당 창에 비밀번호를 입력했으며 전체 기록을 제거하고 싶지 않습니다.

답변:


14

의 편집은 .bash_history편집기로 파일을 여는 것입니다. 이를 달성 할 수있는 몇 가지 방법이 있습니다.

  1. 에서 터미널 단지 유형 vi ~/.bash_history, 당신이 원하는대로 파일을 편집하고 저장합니다. vi에 익숙하지 않은 경우이 옵션은 까다로울 수 있습니다 .
  2. 예를 들어, 다음 지시 사항 에 따라 파일을 표시 하십시오. 다른 파일로 열고 수정 한 후 저장하십시오.
  3. 에서 터미널 단지 형 open ~/.bash_history -a /Applications/TextEdit.app. 이 명령은 TextEdit으로 파일을 열고 다른 텍스트 편집기를 선택할 수 있습니다. 파일을 수정하고 저장하십시오.

변경 사항을 눈에 띄게하려면 bash를 다시 시작하십시오.


"권한이 거부되었습니다". sudo를 수행 할 때 입력 된 모든 명령을 볼 수 없습니다.
Karthick S

1
@KarthickS 정확히 무엇을하고 있습니까?
Thecafremo

.bash_history의 내용을 보면 내용이 기록 명령의 출력과 다릅니다. 파일의 내용이 오래되었습니다. 여러 명령 창이 열려 있으면 어떻게됩니까? 그들은 같은 명령 기록을 공유하지 않는 것 같습니다. 추신 : 나는 bash를 사용하고 있는지 확인했다.
Victor Engel

1
내 대답을 찾은 것 같습니다. ECHO $ ​​HISTFILE은 편집 할 것을 보여줍니다.
Victor Engel

10

터미널 유형 history에서 라인 번호를 기록하십시오. 다음 전화 history -d noted-line-number. history다시 사용하여 회선이 삭제되었는지 확인할 수 있습니다 .


2
ZSH가있는 요세미티에서는 작동하지 않습니다.
Paulo Oliveira

문제는 zsh가 아닌 bash에 관한 것입니다. 주의 깊게 읽으십시오!
Unnamed_1

1
@DmitryDupelov 당신이 옳아 요, 귀찮게해서 죄송합니다. 어쨌든, 그것은 미래의 독자들에게 상기시켜줍니다. 내 의견을 수정 해 주셔서 감사합니다.
Paulo Oliveira

2
nano ~/.bash_history

당신이 할 때, ctrl+x 정답 친구를 수락하기 위해 돌아와


0

히스토리 를 저장 하기 전에 완료하면 Dmitry의 답변이 이상적이라고 생각합니다. 기본적으로 저장은 쉘 / 터미널 종료시 발생합니다.

히스토리를 ~ / .bash_history에 이미 저장 했다면 Thecafremo의 답변을 선호하지만 bash 인스턴스 중 어느 것도 히스토리를로드하지 않고 다시 저장하도록 터미널을 종료하는 단계를 추가하는 것이 좋습니다. 여러 터미널이 있고 명령 별 히스토리 업데이트를 활성화 한 경우 특히 까다 롭습니다.

배경:

  • bash는 쉘 인스턴스 내에서 히스토리를 저장합니다
  • bash는이 기록을 파일에 쓸 수 있으며 일반적으로 쉘 / 터미널을 종료 할 때 발생합니다
  • bash는 파일에서 히스토리로 읽을 수 있으며 일반적으로 쉘 / 터미널을 열 때 발생합니다.
  • 히스토리가 더 빨리 전파되도록 기본 동작을 변경하여 BAD_TEXT를 파일 및 다른 창으로 마이그레이션 할 수 있습니다.

어떤 방법을 사용하든 성공을 확인하는 한 단계를 추가하겠습니다.

  1. Terminal.app 종료
  2. Terminal.app를 다시 엽니 다
  3. 문제가되는 텍스트가 히스토리에 없는지 확인하십시오. 추가 히스토리를 작성하지 않는 것이 좋습니다. 즉,하지 마십시오 grep BAD_TEXT .bash_history! 이 새로운 명령은 역사에 들어갈 것입니다. 좋아하는 편집기에서 .bash_history를 열고 BAD_TEXT를 검색하십시오.

이것은 어떤 종류의 미친 bash 설정에 관계없이 BAD_TEXT를 제거했음을 안심시켜줍니다.

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