Bash에서 두 번째 인접 명령을 반복하는 단축키가 있습니까?

Bash에서 두 번째 인접 명령을 반복하는 단축키가 있습니까?

우리 모두는 !!bash에서 마지막으로 실행한 명령을 반복하는 것이 가능하다는 것을 알고 있습니다.

하지만 때로는 다음과 같은 작업을 수행해야 할 때도 있습니다.

$ python test.py
$ vim test.py

$ python test.py # here is where I need to repeat the second proximate bash command

위쪽 화살표 키를 사용하여 이 작업을 수행할 수 있지만 그러려면 오른손을 불편한 위치로 움직여야 합니다. 그렇다면 비슷한 명령이 !!작동하는지 궁금합니다 .

답변1

당신은 그것을 사용할 수 있습니다!-2:

$ echo foo
foo
$ echo bar
bar
$ !-2
echo foo
foo

이것은 오른손에 무슨 일이 일어나고 있는지 도움이 되지 않을 수도 있습니다.

당신은 또한 사용할 수 있습니다!string이러한 사례에 대한 과거 검색:

$ python test.py
$ vim test.py
$ !py
python test.py # Printed, then run

이 방법을 사용하는 것이 더 편리할 수도 있습니다. 다음과 같이 실행됩니다.

기록 목록에서 현재 위치 이전의 가장 최근 명령으로 시작됩니다..

그것뿐이라고 해도 !p. 이를 사용하여 !?string시작 부분뿐만 아니라 전체 명령줄을 검색할 수 있습니다.

답변2

!-2

더 많은 즐거움이 있습니다. 파일 작업을 계속하고 싶다고 가정해 보겠습니다(위에서 언급한 대로 test.py를 재사용합니다).

cp foo.py thing.py
edit $_
python $_
!-2
^thing^foo
  • 기존 파일을 다음 위치로 복사thing.py
  • edit(vim, emacs - Emacs-OS를 실행하는 경우 왜 명령줄을 사용하는지 모르겠습니다) thing.py- 이전 명령줄의 마지막 단어
  • python thing.py
  • 편집하다thing.py
  • 편집하다foo.py

역사를 조작하는 것은 정말 재미 있습니다. 노력하다 man history. 기록을 재사용하려고 하면 명령 자체보다 훨씬 더 많은 내용을 입력하게 될 수 있습니다. 마지막 명령 대체(thing.py를 foo.py로 대체함)가 이에 대한 예입니다. 문자를 줄이려면 명령과 이름을 입력하기만 하면 됩니다. :)

기록 교체는 시도할 때 이상한 메시지가 나타나는 이유이기도 합니다.

$ echo "This is a disaster!"
-bash: !": event not found

느낌표는 기록 참조로 사용되며 큰따옴표가 있는 이전 명령은 찾을 수 없습니다.

관련 정보