명령이 기록에 추가되는 것을 방지할 수 있는 방법이 있습니까?

명령이 기록에 추가되는 것을 방지할 수 있는 방법이 있습니까?

명령이 기록에 추가되는 것을 방지할 수 있는 방법이 있습니까? 내 히스토리 파일에 보관하고 싶은 명령어가 있는데, 메모리에 저장된 히스토리를 검색해 보면 별 문제는 아닌데 거기에 있는지는 크게 신경쓰이지 않습니다. 이를 방지할 수 있는 방법이 있습니까? 아니면 돌아가서 내 기록 파일을 편집해야 합니까?

고쳐 쓰다:나는 이것이 쉘에 특정한 것일 수 있다는 것을 몰랐습니다. 내 쉘은 입니다 zsh. 사람들이 자신의 쉘에서 이 작업을 수행하는 방법을 알 수 있도록 다른 쉘에 답변해도 됩니다.

답변1

ZSH에서:

먼저 setopt HIST_IGNORE_SPACE.~/.zshrcspace​다음 명령까지 사라지지 않으므로 해당 줄을 잠시 재사용하거나 편집할 수 있습니다.

~에서사용자 매뉴얼, 다음 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출력)에 표시됩니다. 루트는 과거 명령을 볼 수 있습니다시스템 회계 데이터베이스, 사용자의 제어 없이 더 많은 로깅을 수행할 수 있습니다. 그리고 실행한 명령(예: 파일 수정 시간)을 대략적으로 보여주는 다양한 법의학 증거가 있을 수 있습니다. 따라서 당신은 단호한 도청자로부터 프라이버시를 얻지 못합니다.

관련 정보