기록에 명령이 추가되지 않도록하는 방법이 있습니까? 히스토리를 검색 할 때 실제로 신경 쓰지

기록에 명령이 추가되지 않도록하는 방법이 있습니까? 내 히스토리 파일에서 제외하고 싶은 명령이 있으며 메모리에 저장된 히스토리를 검색 할 때 실제로 신경 쓰지 않아도됩니다. 이것을 막을 수있는 방법이 있습니까, 아니면 돌아가서 내 기록 파일을 편집해야합니다.

업데이트 : 이것이 쉘에 따라 다를 수 있다는 것을 몰랐습니다. 내 껍질은 zsh입니다. 다른 쉘에 대한 답변을 환영하므로 사람들은 쉘에서이를 수행하는 방법을 알 수 있습니다.



답변

ZSH에서 :

먼저에 삽입 setopt HIST_IGNORE_SPACE하십시오 ~/.zshrc. 이제 다시 로그인 한 후 기록에 저장하지 않으려는 명령 앞에 접두사를 붙일 수 있습니다 space.

로부터 사용자 설명서 , 다음과 같은 3 가지 옵션은 특정 라인에서 모든 역사에 가지 말았어야 말을 사용할 수 있습니다 :

  • HIST_IGNORE_SPACE 는 공백으로 시작하는 명령을 저장하지 않습니다
  • HIST_NO_STORE히스토리를 저장하지 않습니다 ( fc -l ) 명령
  • HIST_NO_FUNCTIONS 는 함수 정의를 저장하지 않습니다

답변

명령을 반복해서 실행하는 경우 쉘 기록 무시 기능을 사용할 수 있습니다. 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되지 않으며 일반적으로 이전 명령을 호출 하는 위쪽 화살표 키도 패턴과 일치하면 작동하지 않습니다.


답변

bash에서 HISTCONTROL변수를 사용하십시오 .

HISTCONTROL=ignorespace(또는 HISTCONTROL=ignoreboth)으로 설정하십시오 . 당신이 때 지금부터, 공백 라인을 시작 , 그것은 것입니다 하지 역사에 저장 될 수있다. 이렇게하면 일부 구성 파일에 공개 대상 명령을 포함하지 않아도됩니다.

그럼에도 불구하고 공간을 추가하는 것을 잊어 버린 다음 돌아가고 싶습니다. 역사, 사용 항목을 삭제하려면 history -d <index>와, index찾을 수 history명령 (첫 번째 열).


답변

일회성 가장 쉬운 방법은

$ $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는 시스템 계정 데이터베이스 에서 과거 명령을 볼 수 있으며 사용자가 제어하지 않고도 더 많은 로깅을 수행 할 수 있습니다. 그리고 실행 한 명령 (예 : 파일 수정 시간)을 대략적으로 보여줄 수있는 모든 종류의 법 의학적 증거가있을 수 있습니다. 따라서 도청 자에 대한 프라이버시를 얻지 못합니다.


답변