당황스럽게도 이전 명령을 많이 반복하는 경우가 많습니다. Up Up Up첫 주문을 찾으러 갔어요 . Enter. 그런 다음 Up Up Up두 번째 명령을 다시 실행하십시오. 등.
명령을 다시 실행한 후 기록의 다음 명령으로 이동하는 방법이 있습니까? 마지막 세 개의 명령을 다시 실행 하기 위해 Up Up Up Shift+++를 실행하는 것과 비슷 합니다 .Enter ShiftEnter ShiftEnter
알아요 fc
. 하지만 쉘에만 관한 것이 아닙니다. 저는 Python 인터프리터와 기본적으로 명령을 입력하는 모든 곳에서 이 문제에 직면했습니다.
답변1
이 모든 것은 귀하의 쉘 기록과 관련이 있으며 bash
, 방금 귀하가 Python에 대해 질문하고 있다는 것을 알았습니다. 이게 도움이 되길 바란다.
당신이 history
다음과 같다면:
1000 command A
1001 other command B
1002 yet another command C
다음을 실행할 수 있습니다.
!com
그러면 ' ' 로 시작하는 마지막 명령이 실행됩니다 com
. 문자 수( !c
또는 !command
)를 사용할 수 있으며 그 뒤에 !oth
및 !yet
각 명령을 순서대로 실행할 수 있습니다.
재실행 기록 항목 #1000을 실행 하면 다음 두 명령을 !1000
알고 실행 !1001
하게 됩니다 .!1002
개인적으로 이와 같은 일련의 명령을 실행하려면 동일한 명령과 같은 여러 명령을 실행하고 기록 항목을 제공할 것입니다.
command A; other command B && yet another command C
또는 별칭을 만듭니다.
$ alias doThing="command A; other command B && yet another command C"
$ doThing
또는 함수:
doThing() {
command A
other command B && yet another command C
# Can also use positional arguments: echo $1
}
$ doThing
이 모든 것을 고려해 볼 때, 제가 정확히 당신이 기대하는 바를 해낼 수 있을지 모르겠습니다. 죄송합니다.
답변2
bash
실행하고 history
1000, 1001, 1002라는 세 가지 명령을 실행하는 경우 :
$ history | tail
...
1000 echo foo
1001 echo bar
1002 echo baz
1003 history | tail
에서는 bash
줄 번호 앞에 를 붙여서 그 중 하나만 실행할 수 있습니다 !
. 세미콜론으로 구분하여 한 줄에 모두 실행할 수도 있습니다.
$ !1000;!1001;!1002
echo foo;echo bar;echo baz
foo
bar
baz
참고: 평소와 같이 !
히스토리를 사용하여 명령을 실행하면 먼저 실행할 명령줄이 표시됩니다.
이는 Python 인터프리터나 대부분의 다른 프로그램에서는 동일하지 않을 수 있습니다. 유사한 역사적 기능을 가진 다른 일부 쉘에서도 유사하게 작동합니다.
그런데 이 결합된 명령은 이제 기록에서 단 한 줄로 표시됩니다.
$ history | tail -2
1004 echo foo;echo bar;echo baz
1005 history | tail -2
를 사용하여 다시 실행할 수 있습니다 !1004
.
답변3
예 Ctrl+ O. Up, Up, + , + , + 를 사용 Up하여 마지막 세 명령을 실행할 수 있습니다 .CtrlOCtrlOCtrlO
명령이 기록에 다시 추가되면 Ctrl+를 길게 눌러 O명령 순서를 반복할 수 있습니다.
~에서온라인 문서 읽기:
operate-and-get-next
Ctrl+ O:개행 문자가 입력된 것처럼 호출 애플리케이션으로 돌아가기 위해 현재 줄을 승인하고 편집을 위해 기록에서 현재 줄과 관련된 다음 줄을 가져옵니다. 제공된 경우 숫자 인수는 현재 줄 대신 사용할 기록 항목을 지정합니다.
이는 Readline 8.1에 비교적 새로운 추가 사항입니다. (2020년 12월.)