Bash 기록 수정을 취소할 수 있는 방법이 있습니까?

Bash 기록 수정을 취소할 수 있는 방법이 있습니까?

위쪽 화살표 키를 누르면 이전에 입력한 명령을 탐색할 수 있습니다. 그 중 하나를 수정하면 기록이 변경된다는 것을 알았습니다. 예를 들어, 다음을 입력하면:

echo a
echo b
echo c
[up][up][backspace]d[ctrl+c]

이제 기록에 따르면 두 번째 명령은 echo d가 아니라 였습니다 echo b. 어떻게 하면 echo b역사상 1위를 유지할 수 있을까요?

예를 들어, 많은 옵션이 포함된 매우 긴 명령을 실행한다고 가정해 보겠습니다. 그런 다음 다시 실행하고 싶고 약간 변경하고 싶었기 때문에 기록을 다시 살펴보고 변경했지만 실제로 다시 실행할 필요가 없다는 것을 깨달았고 대신 다른 옵션을 생각했습니다. 그런 다음 나중에 돌아가서 내가 실행한 명령을 기억하고 싶습니다. 하지만 잠깐만요. 이제 기록에 잘못된 내용이 표시됩니다!

이런 일이 거의 발생하지 않지만 발생하면 짜증이납니다. 원본 기록을 자동으로 저장하는 방법이 있나요?

답변1

당신의~/.inputrc

 set revert-all-at-newline on

어떤 경우에는 기본값(off)으로 찾을 수 있습니다. 반환하기 전에 실행하면 기록 행에 대한 모든 변경 사항을
강제로 취소해야 합니다 . (자세한 내용을 참조하십시오 ).readlineaccept-lineman 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

답변2

대개:

CTRL-a # ENTER

그렇게 할 것이다.

수정된 명령을 실행하면 원래 명령이 기억됩니다. 물론 실제로 실행하고 싶지는 않으므로 #.

귀하의 예에서 기록에는 echo a, echo b, echo c, 가 포함됩니다 # echo d.

관련 정보