역사에서 명령을 유지하지 마십시오


33

bash를 사용하고 일부 명령이 기록에 유지되지 않도록하고 싶습니다.

  • 다음 명령에만 그렇게 할 수 있습니까?
  • 전체 세션에서 그렇게 할 수 있습니까?

명령 줄 인수에서 암호를 숨기는 것이 ps
Benitok

답변:


36

방금 다른 답변을 기억했습니다.이 질문은 귀하의 질문에 대한 실제 답변입니다.

HISTCONTROL에 "ignorespace"가 있으면 bash는 공백 문자로 시작하는 행을 기억하지 않습니다. 현재 쉘 히스토리에도 나타나지 않으며 $ HISTFILE에 저장되지는 ​​않습니다.

예를 들어 ~ / .bashrc에 HISTCONTROL = 'ignoreboth : erasedups'내보내기 가 있습니다 .

bash 매뉴얼 페이지의 세부 사항은 다음과 같습니다.

히스 트롤
  명령의 작동 방식을 제어하는 ​​콜론으로 구분 된 값 목록
  기록 목록에 저장됩니다. 값 목록에 다음이 포함 된 경우
  공백 문자로 시작하는 행은 공백이 아닙니다.
  기록 목록에 저장됩니다. ignoreups 값은 줄을 유발합니다
  이전 기록 항목과 일치하여 저장되지 않습니다. 가치
  ignoreboth는 ignorespace 및 ignoreups의 줄임말입니다. 가치
  지우개를 사용하면 모든 이전 줄이 현재 줄과 일치합니다.
  해당 행이 저장되기 전에 기록 목록에서 제거됩니다.
  위 목록에없는 값은 무시됩니다. HISTCONTROL이
  설정되지 않은 또는 유효한 값을 포함하지 않는 모든 행은
  쉘 파서는 값에 따라 히스토리 목록에 저장됩니다
  히스 티그 노어 여러 줄의 두 번째 및 그 이후 줄
  복합 명령은 테스트되지 않았으며 기록에 추가됩니다.
  HISTCONTROL의 가치에 관계없이

1
우주 트릭 +1 : D
petrus

19

인터넷 검색에서 배운 몇 가지 역사 교훈이 있습니다.

특정 문자열을 무시하도록 기록을 설정할 수 있습니다. 이 예제에서는 ls, passwd 명령과 문자 공간이 앞에 붙은 명령을 무시했습니다.

HISTIGNORE = "ls : passwd :"내보내기

세션 기록을 비활성화하려면 다음을 발행하십시오.

수출 HISTSIZE = 0

참고


7

당신은 그냥 역사에서 마지막 명령을 제거하려면 다음 칠 수 원하는 경우 Up-arrow, 다음 Ctrl - U다음 (라인의 시작에 삭제), Up-arrow다시.

이와 같이 기록에서 개별 행을 지울 수 있습니다. 위쪽 화살표 나 검색 등을 사용하여 편집중인 현재 명령 줄로 만든 다음을 누른 Ctrl - U다음 Up-arrow또는 Down-arrow을 눌러 다른 기록 줄로 이동하십시오.

나는 하루 전에 우연히 이것을 발견했습니다. 나는 그것이 문서화되었는지 아닌지 모른다.

그러나 일반적으로 현재 쉘의 히스토리를 전혀 저장하지 않는 것이 다음과 같습니다.

HISTFILE=/dev/null

3

HISTFILE변수를 설정 해제 할 수 있습니다. 보낸 사람 man bash:

  역사
         명령 기록이 저장된 파일 이름 (HIS-
         아래 이야기). 기본값은 ~ / .bash_history입니다. 설정하지 않으면
         대화식 쉘에서는 명령 히스토리가 저장되지 않습니다.
         종료합니다.

이것이 쉘이 종료되기 전에 명령이 로컬 쉘 히스토리에 나타나는 것을 막지 못한다고 생각합니다.



1

아무도이 방법을 쓰지 않았 음을 알 수 있습니다.

history -d $((HISTCMD-1)) && history -d <command or number of command>

history -d 기록에서 언급 된 항목을 삭제합니다.

HISTCMD다음에 실행될 명령의 command_number를 저장합니다. 따라서 (HISTCMD-1)은 마지막으로 실행 된 명령을 나타냅니다.

작동 방식을 보여주는 짧은 bash 영화를 만들었습니다 : https://asciinema.org/a/dtxpuovhty0obhln50soqypt2

명령을 실행 한 후 명령 자체도 삭제되므로 화살표로 올라가면 명령이 표시되지 않으므로 자주 사용하려는 경우 별칭을 만드는 것이 가장 좋습니다.

alias hc='history -d $((HISTCMD-1)) && history -d $1'

그럼 당신은 할 수 있습니다 :

$ hc command
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.