행을 여러 번 변경 한 경우 원래 명령으로 되 돌리십시오 .
revert-line (M-r)
Undo all changes made to this line. This is like
executing the undo command enough times to get back to the beginning.
M
메타 키 altr입니다.
무료이지만 도움이되는 정보
OP가 이전에 수행 한 것과 같은 명령 을 실행 했을 때 (발생), 명령은 GNU Readline 라이브러리에 의해 처리되고 기억되며 쉘이 종료 될 때까지 기록되지$HISTFILE
않기 때문에 "실행 취소"할 것이 없습니다 . 내가 언급 한 이유는 당신 이 기대할 수 grep
있는 $HISTFILE
것과 같을 수 없으며 쉘을 종료하는 것이 이상적이지 않기 때문입니다.
다음은 이전의 모든 readline 명령을 스크롤하지 않아도되는 몇 가지 옵션입니다.
명령 중 일부를 기억하는 경우ctrl +를 누르고 해당 문자열이 포함 된 이전 명령r 을 검색 하기 위해 기억하는 내용을 입력하십시오 . ctrl+를 r다시 누르면 가장 최근에 다음 검색이 표시됩니다.
예를 들어, 이전에 찾은 명령을 찾는 데 걸리는 횟수만큼 ls -l
then ctrl+ r를 입력 하십시오. 지나서 스크롤하면 ctrl+ s가 현재 위치에서 앞으로 검색합니다.
fc
명령 내장 배쉬는 이전의 readline 명령과 함께 인덱스 번호를 나열하는 것이 도움이된다.
fc -l -100
이전 100 개의 명령을 readline에 나열합니다.
또한 OP가 이전 ls -l
명령을 찾고 있음을 알고 있으면 grep
다음과 같이 출력을 파이프 할 수 있습니다.fc -l -100 | grep 'ls -l'
이전 ls -l
명령 목록과 색인 번호 가 출력되어야합니다 . 결과는 다음과 같습니다.
2065 ls -l
이제 이벤트 지정자 사용할 수있는 인덱스 번호입니다. 이 예에서 실행 은으로 확장됩니다 .!n
n
!2065
ls -l
사실 이후에는 도움이되지 않지만 이전 명령을 수정할 때 최근 명령 기록을 유지하려는 사람은의 HISTORY EXPANSION
섹션을 참조하십시오 man bash
. 히스토리를 덮어 쓰지 않고 이전 명령을 수정하는 몇 가지 대체 방법이 있습니다.
이 Event Designators
섹션에서는 가장 최근에 사용한 명령에서 문자열을 쉽게 편집하는 방법을 보여줍니다.
^string1^string2^
Quick substitution. Repeat the previous command, replacing string1 with string2. Equivalent to
``!!:s/string1/string2/'' (see Modifiers below).
예:
$ echo foo
foo
$ ^foo^bar
echo bar
bar
가장 최근의 명령이 이제 표시됩니다 :
echo foo
echo bar
위의 예제는 sed
이벤트 지정자에서 문자열을 바꾸는 방법도 설명합니다 .
!-n Refer to the current command minus n.
따라서 히스토리에 3 개의 명령이 있으면 echo foo
다음을 사용하십시오.
!-3:s/foo/bar
이벤트 지정자는이 경우 명령이 실행 된대로 내역에 나타납니다 echo bar
. 이력에는로 표시되지 않습니다 !-3:s/foo/bar
.
OP가 찾고있는 "실행 취소"솔루션보다 "하지 말 것"에 더 가깝더라도 밀접한 관련이있는 것처럼 보이기 만하면됩니다.
ksh
예를 들어, 역사 항목을 편집 할 수 있습니다 및 항목의 "이전 버전"을 삭제하지 않고 그들을 호출; 호출 된 모든 명령을 사용할 수 있습니다.