itsource

Bash 이력에 명령어가 표시되지 않도록 하려면 어떻게 해야 합니까?

mycopycode 2023. 4. 17. 21:47
반응형

Bash 이력에 명령어가 표시되지 않도록 하려면 어떻게 해야 합니까?

명령어를 때 " " " " 등의 를 실행할 수 있습니다.rm -rf XYZ가 다시 될 수 실수로 같은 명령어를 다시 실행할 수 있기 때문입니다.reverse-i-search이런 일이 일어나지 않도록 하는 좋은 방법이 있을까요?

」를 는,HISTCONTROL에서 ''로ignoreboth(일반적으로 디폴트로 설정되어 있는 경우), 선두 공백 문자가 있는 명령은 이력(복제)에 저장되지 않습니다.

예를 들어 다음과 같습니다.

$ HISTCONTROL=ignoreboth
$ echo test1
$  echo test2
$ history | tail -n2
 1015  echo test1
 1016  history | tail -n2

, 여기 있습니다.man bash라고 말합니다

히스토 컨트롤

이력 리스트에 명령어를 저장하는 방법을 제어하는 콜론으로 구분된 값 리스트.에 '있다'가 포함되어 있는 경우ignorespace공백 문자로 시작하는 행은 이력 목록에 저장되지 않습니다.의 값ignoredups를 지정하면 이전 이력 엔트리와 일치하는 행이 저장되지 않습니다. 의 、ignoreboth의 줄임말이다ignorespace ★★★★★★★★★★★★★★★★★」ignoredups의값 。erasedups현재 행과 일치하는 모든 이전 행은 저장되기 전에 이력 목록에서 삭제됩니다.이치 ifHISTCONTROL설정되지 않았거나 하지 않은 셸이력 에 저장됩니다.이 경우 " "는 " "의 .이 경우 다음 값이 적용됩니다.HISTIGNORE여러 줄 복합 명령어의 두 번째 줄과 그 이후의 줄은 테스트되지 않으며 다음 값에 관계없이 이력에 추가됩니다.HISTCONTROL.

다음 항목도 참조하십시오.

대로 .bashrc/.bash_profile/.bash_profile/.bash_profile/.bash_profile/.bash_profile을 합니다.export HISTIGNORE=' *'무시하려는 명령어는 공백으로 시작합니다.

$ ls  # goes in history
$  ls # does not

더 좋은 사용법HISTIGNORE를 통해 패턴 할 수 : " " " " " " " " " " 등).rm모든 역사를 파이프에 담는 것보다 더 낫다고 생각한다./dev/null.

kill -9 $$

이전 답변만큼 좋은 답변은 아니지만 현재 Bash 쉘은 저장되지 않고 종료됩니다.기본적으로 HISTCONTROL이 설정되어 있지 않은 경우, 설정을 잊어버린 경우, 또는 선두 공간을 입력하는 것을 잊어버린 경우, 패스워드를 입력했을 뿐이며, 이 셸을 이력에 영속적으로 남기지 않는 것이 좋습니다.

이것은 빠른 방법입니다.이력 파일을 지우는 것은 이력 저장 셸 외부에서 수행해야 하기 때문에 좋지 않습니다(다른 사용자로 로그인하여 su/sudo를 사용하거나 백그라운드 작업을 작성하는 등).

다음 두 가지 중 하나를 수행할 수 있습니다.

export HISTFILE=/dev/null

또는 공백으로 명령어를 시작합니다.

또는

unset HISTFILE

(이전 답변과 유사하지만 단축: HISTFILE=/dev/null 내보내기)

'Incognito' 기능을 추가했습니다..bashrc각 명령어 앞에 공간을 추가하지 않고 저장되지 않고 일부 명령을 실행할 때 사용합니다.

현재 터미널 세션의 메모리 내 이력은 계속 저장되지만 터미널을 열었을 때 이전 터미널의 익명 세션에서 실행된 명령어는 표시되지 않습니다.이는 명령어가 에 입력된 적이 없기 때문입니다.HISTFILE.

고객님께.bashrc:

ignoreHistory="false"
DEFAULT_HISTFILE=~/.bash_history
HISTFILE="$DEFAULT_HISTFILE"

# Toggle incognito mode
incognito() {
    if [[ "$ignoreHistory" == "true" ]]; then
        echo -e "\e[33mExited incognito mode\e[39m"
        ignoreHistory="false"
        HISTFILE="$DEFAULT_HISTFILE"
    else
        echo -e "\e[33mEntered incognito mode\e[39m"
        ignoreHistory="true"
        HISTFILE=/dev/null
    fi
}

이 작은 유틸리티는 어떤 사람들은 사용할 수 있다고 생각합니다.익명 모드인지 아닌지를 반영하도록 프롬프트를 변경할 수도 있습니다.

셸 부팅 시 원하지 않는 엔트리에서 이력을 명시적으로 삭제합니다.예를 들어, 나는 아무것도 원하지 않는다.rm -rf(밤 사이에 처리된 결과들로 가득 찬 디렉토리를 삭제했을 때의 트라우마입니다.)Arrow-Up+Enter

다음의 스니펫을 init 파일에 넣습니다(와 함께 동작합니다)..zshrc , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,.bashrc)

# ...
HISTFILE=~/.zshhistory
# ...

# remove dangerous entries from the shell history
temp_histfile="/tmp/$$.temp_histfile"
grep -v -P '^rm .*-rf' $HISTFILE > $temp_histfile
mv $temp_histfile $HISTFILE

언급URL : https://stackoverflow.com/questions/6475524/how-do-i-prevent-commands-from-showing-up-in-bash-history

반응형