내 안에는 다음이 있습니다~/.bashrc
HISTCONTROL=ignoreboth:erasedups
그러나 내 기록에는 중복 항목이 많이 포함되어 있습니다. 예를 들어 항목이 5개 있습니다 sudo apt-get upgrade
.
나는 Raspbian
Jessie
주로 를 통해 실행하고 액세스하고 있습니다 ssh
.
PS 이 글을 쓰면서 방금 입력했는데 sudo apt-get upgrade
항목이 하나만 있습니다. 이유를 아시나요? 어떻게 예방할 수 있나요?
답변1
둘 다 무시했으므로 지울 필요가 없습니다.
Ignoreboth는 중복 명령과 빈 명령을 처리합니다.
둘 다 무시하거나 중복 항목을 제거해 보세요.
"HISTCONTROL=ignoreboth"
이것을 사용하고 bash를 다시로드하십시오. 감사해요.
답변2
각각의 새로운 명령을 고유하게 기록하는 것은 까다롭습니다. 먼저 다음을 추가하거나 유사하게 해야 합니다
~/.profile
.
HISTCONTROL=erasedups
PROMPT_COMMAND='history -w'
그런 다음 다음을 추가해야 합니다 ~/.bash_logout
.
history -a
history -w
답변3
가지다둘명령 목록:
- 기억 속에.
- 파일에서.
HISTControl 설정은 메모리 목록에 따라 작동합니다. 옵션 없이 명령으로 목록을 볼 수 있습니다 history
. 명령을 입력하면 목록에 추가됩니다. 추가할 명령이 목록의 마지막 명령과 동일하고 ignoredups
이 옵션이 설정된 경우 또는 erasedups
이 옵션이 설정된 경우 명령이 삭제됩니다. 이 경우 두 옵션 모두 몇 가지 유사점이 있습니다. 이 옵션을 설정
하면 erasedups
이 명령 이전의 모든 항목이 메모리 목록에서 제거됩니다(그러나 파일에서는 제거되지 않습니다). 이 삭제는오직새로운 중복 명령이 발생했습니다. 즉, 새 명령이 목록에 추가될 때까지 중복 명령이 유지됩니다.
파일에 메모리 목록을 쓰려면 다음 명령을 사용할 수 있습니다 history -w
(전체 파일을 새 복사본으로 대체함). 파일의 목록은 기록될 때까지 업데이트되지 않습니다. 또는 추가 history -a
(이전에 추가되지 않은 새 줄만 추가되며 파일에 이전 중복 명령이 남을 수 있음). 이 옵션은 bash가 종료될 때 histappend
파일을 대체하거나 추가하도록 선택합니다 . 추가하면 중복 명령이 변경되지 않을 수 있습니다.
파일 목록을 정리하는 한 가지 방법(명령의 마지막 항목 유지)은 다음과 같습니다.
$ history | sort -urk2 | sort -n | sed 's/^ \+[0-9]\+ \+//' >~/.bash_history
history -w
각 명령을 파일에 추가하는 한 가지 방법은 프롬프트 명령 bash 변수를 사용하여 각각의 새 명령줄에서 실행하는 것입니다.
$ PROMPT_COMMAND='history -w'
~/.bashrc
자동으로 실행되게 하려면 다음 명령을 모두 (일반적으로 Linux에서) 또는 ~/.profile
(일반적으로 Mac에서) 추가해야 합니다 .
HISTFILE=${HISTFILE:-~/.bash_history}
HISTCONTROL=ignoreboth:erasedups
PROMPT_COMMAND='history -w'
nl "$HISTFILE"|sort -k2 -k 1,1nr|uniq -f1|sort -n|cut -f2- >"${HISTFILE}.temp" && mv "$HISTFILE"{.temp,}
history -c; history -r