
명령이 기록에 추가되는 것을 방지할 수 있는 방법이 있습니까? 내 히스토리 파일에 보관하고 싶은 명령어가 있는데, 메모리에 저장된 히스토리를 검색해 보면 별 문제는 아닌데 거기에 있는지는 크게 신경쓰이지 않습니다. 이를 방지할 수 있는 방법이 있습니까? 아니면 돌아가서 내 기록 파일을 편집해야 합니까?
고쳐 쓰다:나는 이것이 쉘에 특정한 것일 수 있다는 것을 몰랐습니다. 내 쉘은 입니다 zsh
. 사람들이 자신의 쉘에서 이 작업을 수행하는 방법을 알 수 있도록 다른 쉘에 답변해도 됩니다.
답변1
ZSH에서:
먼저 setopt HIST_IGNORE_SPACE
.~/.zshrc
space
다음 명령까지 사라지지 않으므로 해당 줄을 잠시 재사용하거나 편집할 수 있습니다.
~에서사용자 매뉴얼, 다음 3가지 옵션을 사용하여 특정 행이 기록에 전혀 들어가지 않아야 함을 나타낼 수 있습니다.
- HIST_IGNORE_SPACE공백이 앞에 붙은 명령을 저장하지 마십시오
- HIST_NO_STORE저장되지 않음역사(FC-1) 주문하다
- HIST_NO_FUNCTIONS함수 정의를 저장하지 마십시오
답변2
이 명령을 반복해서 실행하면 셸의 기록 무시 기능을 사용해야 할 수도 있습니다. Secret.server.com, FTP 파일 등에 대한 SSH 액세스 권한이 있지만 Secret.server.com을 언급하는 줄을 저장하고 싶지 않다고 가정해 보겠습니다.
bash
설정하기 전에
HISTIGNORE="*secret.server.com*"
그리고 zsh
매개변수 에서
HISTORY_IGNORE="*secret.server.com*"
HISTIGNORE
콜론으로 구분된 여러 패턴을 포함할 수 있습니다. HISTORY_IGNORE
단일 패턴을 지정하지만 패턴에는 파이프로 구분된 대체 패턴이 포함될 수 있습니다. 각 패턴은 다음과 관련되어 있습니다.모든 입력 라인이므로 *를 포함해야 할 수도 있습니다. 예를 들어 다음은 fortune
기록에서 제외되지만 저장됩니다 fortune -l
.
HISTIGNORE="*secret.server.com*:ytalk*:fortune"
HISTORY_IGNORE="*secret.server.com*|ytalk*|fortune"
HISTIGNORE를 설정하면 나열한 패턴과 일치하는 항목은 .bash_history
/ 에 저장되지 않으며 .zsh_history
패턴과 일치하면 위쪽 화살표 키(일반적으로 이전 명령을 호출함)도 작동하지 않습니다.
답변3
Bash에서는 이 HISTCONTROL
변수를 사용하세요.
HISTCONTROL=ignorespace
(또는 ) 로 설정하세요 HISTCONTROL=ignoreboth
. 이제부터 당신이공백으로 줄 시작하기, 그럴 것이다아니요역사 속에 보존되세요. 이렇게 하면 특정 구성 파일에 문서화되지 않은 명령이 포함되는 것을 방지할 수 있습니다.
그럼에도 불구하고 공백을 추가하는 것을 잊어버리고 다시 돌아가고 싶어합니다. 기록에서 항목을 삭제하려면 , history -d <index>
및 index
명령으로 찾은 숫자 history
(첫 번째 열)를 사용합니다.
답변4
가장 간단한 일회성 방법은 다음과 같습니다.
$ $SHELL
$$ unset HISTFILE
$$ secret-command
$$ exit
$
이는 $
초기 쉘의 프롬프트를 나타내고 $$
하위 쉘의 프롬프트를 나타냅니다. 이는 bash와 zsh 모두에서 작동합니다. ksh에서는 대신 이 작업을 수행해야 합니다 HISTFILE=/notwritable
. 중요한 것은 HISTFILE
명령이 실행될 때가 아니라 기록 파일이 기록될 때의 값입니다. Bash, ksh 및 zsh는 종료 시 기록 파일에 기록합니다(zsh는 구성에 따라 이 작업을 더 자주 수행할 수 있음).
또는 특정 패턴과 일치하는 행을 무시하도록 bash 또는 zsh에 지시할 수 있습니다(다른 답변에서 이미 이에 대해 다루었습니다).
zsh의 또 다른 가능성은
% fc -p
% secret-command
% fc -P
fc -p
현재 기록 목록을 스택에 푸시하고 저장된 파일과 별개로 새 목록을 시작합니다. fc -P
저장되지 않은 기록을 스택에서 꺼내어 완전히 잊어버리세요.
프로세스가 실행되면 명령과 해당 인수(및 일부 시스템에서는 해당 환경)가 프로세스 테이블( ps
출력)에 표시됩니다. 루트는 과거 명령을 볼 수 있습니다시스템 회계 데이터베이스, 사용자의 제어 없이 더 많은 로깅을 수행할 수 있습니다. 그리고 실행한 명령(예: 파일 수정 시간)을 대략적으로 보여주는 다양한 법의학 증거가 있을 수 있습니다. 따라서 당신은 단호한 도청자로부터 프라이버시를 얻지 못합니다.