bash를 사용하고 일부 명령이 기록에 유지되지 않도록하고 싶습니다.
- 다음 명령에만 그렇게 할 수 있습니까?
- 전체 세션에서 그렇게 할 수 있습니까?
답변
방금 다른 답변을 기억했습니다.이 질문은 귀하의 질문에 대한 실제 답변입니다.
HISTCONTROL에 “ignorespace”가 있으면 bash는 공백 문자로 시작하는 행을 기억하지 않습니다. 현재 쉘 히스토리에도 나타나지 않으며 $ HISTFILE에 저장되지는 않습니다.
예를 들어 ~ / .bashrc에 HISTCONTROL = ‘ignoreboth : erasedups’내보내기 가 있습니다 .
bash 매뉴얼 페이지의 세부 사항은 다음과 같습니다.
히스 트롤 명령의 작동 방식을 제어하는 콜론으로 구분 된 값 목록 기록 목록에 저장됩니다. 값 목록에 다음이 포함 된 경우 공백 문자로 시작하는 행은 공백이 아닙니다. 기록 목록에 저장됩니다. ignoreups 값은 줄을 유발합니다 이전 기록 항목과 일치하여 저장되지 않습니다. 가치 ignoreboth는 ignorespace 및 ignoreups의 줄임말입니다. 가치 지우개를 사용하면 모든 이전 줄이 현재 줄과 일치합니다. 해당 행이 저장되기 전에 기록 목록에서 제거됩니다. 위 목록에없는 값은 무시됩니다. HISTCONTROL이 설정되지 않은 또는 유효한 값을 포함하지 않는 모든 행은 쉘 파서는 값에 따라 히스토리 목록에 저장됩니다 히스 티그 노어 여러 줄의 두 번째 및 그 이후 줄 복합 명령은 테스트되지 않았으며 기록에 추가됩니다. HISTCONTROL의 가치에 관계없이
답변
인터넷 검색에서 배운 몇 가지 역사 교훈이 있습니다.
특정 문자열을 무시하도록 기록을 설정할 수 있습니다. 이 예제에서는 ls, passwd 명령과 문자 공간이 앞에 붙은 명령을 무시했습니다.
HISTIGNORE = “ls : passwd :”내보내기
세션 기록을 비활성화하려면 다음을 발행하십시오.
수출 HISTSIZE = 0
답변
당신은 그냥 역사에서 마지막 명령을 제거하려면 다음 칠 수 원하는 경우 Up-arrow, 다음 Ctrl - U다음 (라인의 시작에 삭제), Up-arrow다시.
이와 같이 기록에서 개별 행을 지울 수 있습니다. 위쪽 화살표 나 검색 등을 사용하여 편집중인 현재 명령 줄로 만든 다음을 누른 Ctrl - U다음 Up-arrow또는 Down-arrow을 눌러 다른 기록 줄로 이동하십시오.
나는 하루 전에 우연히 이것을 발견했습니다. 나는 그것이 문서화되었는지 아닌지 모른다.
그러나 일반적으로 현재 쉘의 히스토리를 전혀 저장하지 않는 것이 다음과 같습니다.
HISTFILE=/dev/null
답변
HISTFILE
변수를 설정 해제 할 수 있습니다. 보낸 사람 man bash
:
역사 명령 기록이 저장된 파일 이름 (HIS- 아래 이야기). 기본값은 ~ / .bash_history입니다. 설정하지 않으면 대화식 쉘에서는 명령 히스토리가 저장되지 않습니다. 종료합니다.
이것이 쉘이 종료되기 전에 명령이 로컬 쉘 히스토리에 나타나는 것을 막지 못한다고 생각합니다.
답변
나는 때때로
export HISTFILE=/dev/null
답변
아무도이 방법을 쓰지 않았 음을 알 수 있습니다.
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