위로 누르면 이전에 입력 한 명령을 통과 할 수 있습니다. 그중 하나를 수정하면 기록이 변경된다는 것을 알았습니다. 예를 들어, 내가 입력하면 :
echo a
echo b
echo c
[up][up][backspace]d[ctrl+c]
역사는 이제 두 번째 명령이 echo d
아니라는 것을 보여줍니다 echo b
. echo b
역사상 처음 을 어떻게 유지 합니까?
예를 들어, 많은 옵션을 사용하여 정말 긴 명령을 실행한다고 가정 해보십시오. 그런 다음 사소한 변경으로 다시 실행하고 싶습니다. 따라서 역사를 찾아서 변경하고 변경했지만 실제로 다른 옵션을 생각하면서 다시 실행할 필요가 없다는 것을 알고 있습니다. 대신에. 나중에, 나는 되돌아 가서 내가 실행 한 명령이 무엇인지 상기시키고 싶다. 그러나 잠깐, 역사는 이제 잘못된 것을 보여주고있다!
이것은 매우 드물게 나타나지만, 그것이 자극적이라는 것을 알게됩니다. 원본 기록을 자동으로 보존 할 수있는 방법이 있습니까?
답변
당신의 것을 넣어보십시오 ~/.inputrc
set revert-all-at-newline on
경우에 따라 기본값 (끄기)에서 찾을 수 있습니다. 실행 시 리턴하기 전에 히스토리 라인의 모든 변경 사항을
강제 readline
로 실행 취소 해야합니다 accept-line
. (에 대한 자세한 정보 man bash
).
편집 :
CTRL+c
그리고 set revert-all-at-newline on
이후 잘 작동합니다 bash-4.3.30
.
# GNU bash, version 4.3.30(1)-release
# Emacs-mode
echo c
[up][backspace]d[Ctrl+c][up] # you should see echo c
그러나:
echo c
[up][backspace]d[down][Ctrl+r]echo[Ctrl+j][Ctrl+c][up] # you should see echo d
답변
보통:
CTRL-a # ENTER
할 것입니다.
수정 된 명령을 실행하면 원래 명령이 기억됩니다. 물론 실제로 실행하고 싶지 않기 때문에로 줄을 주석 처리 할 수 있습니다 #
.
당신의 예에서, 당신은 다음 역사상 것 : echo a
, echo b
, echo c
, # echo d
.