이전 명령을 반복하는 데 사용할 수 있다는 것을 알고 있습니다 Up. 달리다마지막명령에는 Up+ 만 포함됩니다 Enter. 그런데 원래 사고 싶었던 건해피 해커 키보드왜냐하면 나는 에서 많은 시간을 보내기 때문이다 vim
.
이 키보드에는 화살표 키가 없으며 이 동작을 수행하는 방법을 아는 유일한 방법은 Ctrl+를 누르고 R이전 명령을 반복하기 시작하는 것입니다.
Up화살표 키를 사용하지 않고 UNIX 터미널에서 +를 시뮬레이션하는 쉬운 방법이 있습니까 ?Enter
답변1
히스토리 교체( , , )와 같은 것을 구현하는 쉘을 csh
사용 하십시오 .csh
tcsh
bash
zsh
!!
그 다음에 Enter.
또는또는:
!-1
그 다음에 Enter.
또는 Ctrl+ P,Enter
마법의 공간
또한 실행하기 전까지는 !!
및 은 자동으로 확장되지 않습니다 !-1
(이 시점에서는 너무 늦을 수 있음).
를 사용하는 경우 명령을 입력한 후 누르면 자동으로 인라인으로 확장되므로 실행하기 전에 검사할 수 있습니다 bash
. 이는 얼마 전에 실행된 명령의 기록 확장에 특히 유용합니다. 예를 들어 로 시작하는 마지막 명령은 pulled 입니다 . Magic Space를 사용하면 명령을 실행하기 전에 미리 볼 수 있습니다.bind Space:magic-space
~/.bashrc
Space!echo
echo
bindkey ' ' magic-space
tcsh
이는 또는 의 역할 과 동일합니다 zsh
.
답변2
명령줄 편집 기능이 있는 대부분의 쉘은 Emacs 키 바인딩을 지원합니다. (아주 작은 부분 집합)
Up Ctrl+P
Down Ctrl+N
Left Ctrl+B
Right Ctrl+F
Home Ctrl+A
End Ctrl+E
Delete Ctrl+D
set -o vi
또는 vi 명령을 사용하여 쉘 시작 파일(예:)에 추가하여 쉘을 편집 모드로 설정할 수 있습니다 ~/.bashrc
. 예를 들어, 다음을 수행할 수 있습니다.
- EsckEnter
이전 명령을 다시 실행하는 데 사용됩니다 ( 와 동일
!!
). 빼기 키는 -"위로 이동" 명령으로도 작동합니다. -
처음 12개 명령을 다시 실행하려면 EsckkkkkkkkkkkkEnter
또는 를 사용하십시오 ( 와 동일 ).Esc12kEnter
!-12
- Esc및 동작 명령을 사용하고 (즉, k적절하게 반복), 그런 다음편집하다거기에서 찾을 수 있는 bash 명령줄. 여전히 명령 모드에 있으므로 실제로 명령을 기록에 추가하려면 편집 명령(예: , , 또는 해당 소문자 중 하나)을
vi
사용해야 합니다 . 예를 들어 와 같습니다 .vi
IACR
EsckisudoSpaceEntersudo !!
- 고급 사용자의 경우: 복사할 수도 있습니다(와이ank) 텍스트 한 줄을 입력하고 붙여넣습니다(피ut) 다른 것 위에 놓으면
!-2:- !$
. (안타깝게도 명명된 버퍼를 지원하지 않는 것 같습니다.)
답변3
내가 가장 좋아하는 것은 CTRL+ P다음 CTRL+O
기본적으로 추가 구성이 필요하지 않습니다. ^P는 마지막 명령으로 전환하고, ^O는 현재 줄을 실행하게 합니다.
CTRL+ 는 O필요에 따라 여러 번 사용할 수 있습니다.
답변4
구현하는 POSIX 쉘을 사용하십시오.사용자 이식성옵션( ksh
, zsh
, bash
, 포함)이 있는 경우 다음 명령을 yash
사용할 수도 있습니다 .fc
fc -e : -1
예를 살펴보세요:
$ echo "hello"
hello
$ fc -e : -1
echo "hello"
hello
자세한 내용은기록에서 일련의 명령을 실행합니다.조나단 레플러(Jonathan Leffler)의 답변입니다.