기록에 명령이 추가되지 않도록하는 방법이 있습니까? 내 히스토리 파일에서 제외하고 싶은 명령이 있으며 메모리에 저장된 히스토리를 검색 할 때 실제로 신경 쓰지 않아도됩니다. 이것을 막을 수있는 방법이 있습니까, 아니면 돌아가서 내 기록 파일을 편집해야합니다.
업데이트 : 이것이 쉘에 따라 다를 수 있다는 것을 몰랐습니다. 내 껍질은 zsh
입니다. 다른 쉘에 대한 답변을 환영하므로 사람들은 쉘에서이를 수행하는 방법을 알 수 있습니다.
기록에 명령이 추가되지 않도록하는 방법이 있습니까? 내 히스토리 파일에서 제외하고 싶은 명령이 있으며 메모리에 저장된 히스토리를 검색 할 때 실제로 신경 쓰지 않아도됩니다. 이것을 막을 수있는 방법이 있습니까, 아니면 돌아가서 내 기록 파일을 편집해야합니다.
업데이트 : 이것이 쉘에 따라 다를 수 있다는 것을 몰랐습니다. 내 껍질은 zsh
입니다. 다른 쉘에 대한 답변을 환영하므로 사람들은 쉘에서이를 수행하는 방법을 알 수 있습니다.
답변:
ZSH에서 :
먼저에 삽입 setopt HIST_IGNORE_SPACE
하십시오 ~/.zshrc
. 이제 다시 로그인 한 후 기록에 저장하지 않으려는 명령 앞에 접두사를 붙일 수 있습니다 space
.
로부터 사용자 설명서 , 다음과 같은 3 가지 옵션은 특정 라인에서 모든 역사에 가지 말았어야 말을 사용할 수 있습니다 :
| somecommand
preexec
이를 위해 사용할 수 있는 후크 기능 을 제공 합니다. 0이 아닌 값을 반환하면 명령이 기록에 저장되지 않습니다.
setopt HIST_IGNORE_SPACE
in~/.zshrc
명령을 반복해서 실행하는 경우 쉘 기록 무시 기능을 사용할 수 있습니다. secret.server.com을 언급하는 행을 저장하지 않으려는 secret.server.com, FTP 파일 등을 가지고 있다고 가정 해 보겠습니다.
에서에게 bash
당신은 설정합니다
HISTIGNORE="*secret.server.com*"
반면 zsh
매개 변수 에서
HISTORY_IGNORE="*secret.server.com*"
콜론으로 구분하여 여러 패턴을 나열 할 수 있습니다. 각 패턴은 전체 입력 라인 과 일치 하므로 *를 포함해야합니다. 예를 들어, 다음은 fortune
기록에서 제외 되지만 저장됩니다 fortune -l
.
HISTIGNORE="*secret.server.com*:ytalk*:fortune"
HISTORY_IGNORE="*secret.server.com*:ytalk*:fortune"
HISTIGNORE를 설정하면 나열된 패턴과 일치하는 항목이 .bash_history
/에 저장 .zsh_history
되지 않으며 일반적으로 이전 명령을 호출 하는 위쪽 화살표 키도 패턴과 일치하면 작동하지 않습니다.
HISTIGNORE="^fortune*"
무시 fortune -l
하고 지키고 싶은 것이 myfortune
있습니까?
bash에서 HISTCONTROL
변수를 사용하십시오 .
HISTCONTROL=ignorespace
(또는 HISTCONTROL=ignoreboth
)으로 설정하십시오 . 당신이 때 지금부터, 공백 라인을 시작 , 그것은 것입니다 하지 역사에 저장 될 수있다. 이렇게하면 일부 구성 파일에 공개 대상 명령을 포함하지 않아도됩니다.
그럼에도 불구하고 공간을 추가하는 것을 잊어 버린 다음 돌아가고 싶습니다. 역사, 사용 항목을 삭제하려면 history -d <index>
와, index
찾을 수 history
명령 (첫 번째 열).
zsh
?
일회성 가장 쉬운 방법은
$ $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
출력)에 표시됩니다. Root는 시스템 계정 데이터베이스 에서 과거 명령을 볼 수 있으며 사용자가 제어하지 않고도 더 많은 로깅을 수행 할 수 있습니다. 그리고 실행 한 명령 (예 : 파일 수정 시간)을 대략적으로 보여줄 수있는 모든 종류의 법 의학적 증거가있을 수 있습니다. 따라서 도청 자에 대한 프라이버시를 얻지 못합니다.