
history
의 데이터베이스 에서 특정 줄을 어떻게 제거합니까 ?
답변1
history -a
현재 기록이 디스크에 커밋되도록 하려면 로그아웃했다가 다시 로그인하거나 실행해야 합니다 .
그런 다음 파일을 편집하면 됩니다 ~/.bash_history
.
답변2
다음 두 단계로 명령줄을 사용하여 기록 파일에서 제거할 수 있습니다.
- 입력하면
history -d <line_number>
메모리의 기록에서 지정된 행이 삭제됩니다. - 입력하면
history -w
현재 메모리 내 기록이~/.bash_history
파일에 기록됩니다.
두 단계를 함께 수행하면 메모리 내에서 라인이 영구적으로 제거됩니다.역사그리고 에서.bash_history파일도 그렇고.
답변3
에게예방하다명령이 처음부터 기록에 추가되지 않도록 하려면 환경 변수에 HISTCONTROL
콜론으로 구분된 값 중에 값이 포함되어 있는지 확인하십시오 ignorespace
. 예를 들어 (예를 들어 에 추가 .bashrc
):
$ export HISTCONTROL=ignorespace
이렇게 하면 앞에 공백이 있는 명령이 기록에 추가되지 않습니다. 그런 다음 다음을 실행하여 기록을 완전히 지울 수 있습니다.
$ history -c -w
^-- additional space character
답변4
여러 가지 기술:
민감한 정보가 기록 파일에 저장되지 않도록 방지
명령줄에 일부 비밀번호를 입력한 후 모든 명령이 기록된 것을 확인하면 다음 중 하나를 수행할 수 있습니다.
기록을 저장하지 않고 현재 세션을 강제 종료합니다.
kill -9 $$
그러면 현재 기록이 모두 삭제됩니다.
올바르게 지적했듯이S0AndS0'댓글, 또 다른 방법은 수정하는 것입니다기록 파일 이름:
HISTFILE=
↑ (up arrow)민감한 정보가 표시될 때까지 열린 bash 세션을 입력한 다음 Ctrl+ 와 같은 줄 편집 키 입력을 사용하여 W민감한 정보를 삭제합니다.그 다음에 ↓ (down arrow)새로운 빈 줄이 나타날 때까지~ 전에타이핑 Enter.
기록 파일에서 민감한 정보 삭제
민감한 정보가 이미 저장되어 있다는 것을 알고 이를 삭제하고 싶지만 전체 기록을 삭제하고 싶지 않은 경우:
간단한 sed
명령으로 작업을 수행할 수 있습니다.
sed -e '/SeNsItIvE InFo/d' -i .bash_history
하지만 이것을 입력하면 삭제하려는 검색 패턴(민감한 정보)이 포함된 또 다른 기록 줄이 생성됩니다. 따라서 다음을 수행할 수 있습니다.
sed -e "/$(head -n1)/d" -i .bash_history
이는 head -n1
터미널의 입력으로 실행됩니다. 터미널이 정지된 것으로 나타납니다(프롬프트가 표시되지 않음). 파일에서 삭제하려는 정보를 입력하기만 하면 됩니다. 이는 실제로 명령줄에 입력하지 않고 명령(일부)을 입력할 수 있게 하여 기록 기록에 포함할 수 없게 만드는 트릭입니다. 그런 다음 sed
입력한 텍스트를 사용하여 .bash_history
민감한 정보가 포함된 모든 줄을 검색하고 삭제합니다. 참고: 중요한 정보 패턴에 슬래시가 포함된 경우 백슬래시로 이스케이프 처리해야 합니다. 그렇지 않으면 sed
이 구문을 사용하여 패턴에 표시되지 않는 구분 기호를 지정하도록 명령을 변경해야 합니다.
sed -e "\|$(head -n1)|d" -i .bash_history
또 다른 방법은 중요한 정보만 삭제하고 해당 정보가 포함된 명령은 유지하는 것입니다. 이를 위해 중요한 정보를 원하는 대체 텍스트로 간단히 바꿀 수 있습니다.
sed -e "s/$(head -n1)/Santa Claus/g" -i .bash_history.
특정 트리의 모든 파일에서 중요한 정보 삭제
마지막으로, 이것이 계속 유지되지 않도록 하기 위해또 다른잊어버린 파일:
SENSITIVEINFO="$(head -n1)"
find . -type f -print0 | xargs -0 grep -l "$SENSITIVEINFO"
관련 파일이 모두 나열됩니다.
find . -type f -print0 |
xargs -0 grep -lZ "$SENSITIVEINFO" |
xargs -0 sed -e "s/$SENSITIVEINFO/Santa Claus/g" -i
은(는) 루트 디렉터리 트리의 모든 파일에서 중요한 정보를 모두 대체합니다 .
. 참고: 이 명령이 를 사용하더라도 xargs -0
이름에 개행 문자가 포함된 파일은 처리되지 않습니다.