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
.
다음 항목도 참조하십시오.
- bash가 공백으로 시작하는 명령을 저장하지 않는 이유는 무엇입니까?unix SE에서
- bash에 HISTCONTROL=syspace 옵션이 있는 이유는 무엇입니까?unix SE에서
대로 .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
'itsource' 카테고리의 다른 글
명령줄 인수를 Bash에서 배열로 변환 (0) | 2023.04.17 |
---|---|
상각된 상수 시간 동안 R의 목록에 개체를 추가하시겠습니까, O(1)? (0) | 2023.04.17 |
로컬 파일을 생성하지 않고 OpenXML을 사용하여 Excel 파일을 생성하는 방법은 무엇입니까? (0) | 2023.04.17 |
T-SQL을 사용하여 외부 키 제약을 일시적으로 해제하려면 어떻게 해야 합니까? (0) | 2023.04.17 |
SQL Server Management Studio 2008에서 스크립트 생성 태스크를 자동화하려면 어떻게 해야 합니까? (0) | 2023.04.17 |