키보드에서 위쪽 또는 아래쪽 화살표를 누른 다음 내 기록에서 무언가를 수정하면 영구적으로 변경됩니다. Ctrl-C를 눌렀다가 다시 불러 오더라도 여전히 변경됩니다. 내 기록에서 해당 항목을 잃어 버렸습니다.
이 문제가 발생하지 않도록하려면 어떻게해야합니까?
키보드에서 위쪽 또는 아래쪽 화살표를 누른 다음 내 기록에서 무언가를 수정하면 영구적으로 변경됩니다. Ctrl-C를 눌렀다가 다시 불러 오더라도 여전히 변경됩니다. 내 기록에서 해당 항목을 잃어 버렸습니다.
이 문제가 발생하지 않도록하려면 어떻게해야합니까?
답변:
readline 설정을 원합니다 :
set revert-all-at-newline on
그것을 넣거나 ~/.inputrc
(아래 참고 참조)을 넣을 bind 'revert-all-at-newline on'
수 있습니다 ~/.bashrc
.
데모:
$ man bash
$ bind 'set revert-all-at-newline on'
$ man bsh # up arrow and edit
No manual entry for bsh
$ man bash # three up arrows
자세한 내용은 Bash 맨 페이지에 있습니다 .
revert-all-at-newline
'
on
'로 설정하면 readline은 accept-line이 실행될 때 리턴하기 전에 히스토리 라인에 대한 모든 변경 사항을 취소합니다. 기본적으로 히스토리 라인은 수정 될 수 있으며 readline 호출에서 개별 실행 취소 목록을 유지합니다. 기본값은 'off
'입니다.
노트 :
~/.inputrc
설정 목적으로 새 파일을 작성하는 경우revert-all-at-newline
bash는 파일에 있을 수있는 설정 대신 이 파일의 readline 설정을 사용 합니다/etc/inputrc
. 즉,에 지정된 모든 설정/etc/inputrc
이 더 이상 적용되지 않습니다. 따라서/etc/inputrc
파일이 존재~/.inputrc
하면 다음 줄로 시작하는 것이 좋습니다 .
$include /etc/inputrc
나는 입력 :
ls /tmp
- 훌륭한. 이제 들어가고 싶지 않아
ls /temp
그리고 기록을 입력하지 못하게 할 수 있으므로 공백으로 명령을 시작하면 ls / tmp를 덮어 쓰지 않습니다.
ls /temp
보기 힘들지만 알고 있다면 ...
그것은에 의해 제어
export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth
ignoreups는 중복 된 명령 만 무시하고 ignoreboth는 줄의 시작 부분에서 공백을 무시하므로 숨겨지지 않은 암호를 숨기는 데 유용합니다.
그러나 아마도 명령, 수정되지 않은 이전 명령 및 새 명령으로 끝나는 솔루션을 원할 것입니다. 내 버전의 bash 또는 설정은 다음과 같이 동작하지만 사용자와 다른 점을 모르겠습니다.