* nix 명령 행에서 첫 번째 문자로 되돌아가는 방법은 무엇입니까?


17

* nix에서 스크립트 명령 줄에서 긴 명령을 작성하고 인스턴스 A의 (시작 부분에 무언가를 추가하기 위해, 다시 첫 번째 문자에 갈 필요하면 nohup이 과정이 긴 하나, 또는 것 실현할 때 sudo, 때를 루트 권한이 필요하다는 것을 인식하십시오. 커서가 첫 번째 문자로 되돌아가는 데 시간이 오래 걸릴 수 있습니다 ...

바로 뛸 수있는 지름길이 있습니까?

Mac을 사용하고 있으므로 Home옵션이 아닙니다.


2
Apple 랩톱을 사용하는 경우 Fn + Left / Right는 Home / End와 같습니다. (및 관련하여, Fn + Up / Down은 PageUp / Down입니다.)
duskwuff -inactive-

2
이 질문을 읽는 사람들에게는 쉘, 특히 쉘의 명령 줄 편집에 대해 묻는 것입니다. 이전의 Ctrl-A 대답은 기본값 인 Emacs 스타일 편집에서 bash입니다.
Rich Homolka

4
추가해야하는 대안 sudo은 type sudo !!입니다. 은 !!이전 명령으로 대체됩니다.
Matthew Crumley

답변:


29

Ctrl+A작동해야합니다. Ctrl+E명령 행의 끝에 해당합니다.


1
큰! 이것은 Mac에서도 완벽하게 작동합니다!
clami219

1
이것은 많은 코드 편집기에도 적용됩니다.
Jwosty

2
@ clami219 : 실제로 OSX의 대부분의 텍스트 컨텍스트에서 작동합니다. 이맥스 바인딩은 ... 멋진 일이다
tommyo

감사합니다. Linux에서도 작동합니다.
기드온 바부

10

이것은 해당 쉘에 따라 다릅니다.

AT & T ksh88과 같은 일부 쉘은 사실상 입력 라인 편집을 제공하지 않습니다.

vi모드 편집을 구현하는 셸 (으로 활성화해야 할 수도 있음 set -o vi) Esc에서 (삽입 모드에서 전환하기 위해)를 누른 다음 0줄 시작으로 이동하거나 $줄 끝으로 이동하면됩니다. 그런 다음 i– 을 눌러 삽입 모드를 다시 입력하십시오. – 커서가있는 그대로 – 또는 a– 커서가 오른쪽으로 이동하여 텍스트를 추가합니다.

vi 모드 편집은 최근 POSIX 표준에 의해 의무화되었습니다.

훨씬 더 일반적인 emacs 모드 편집 사용을 (가 이맥스 편집기 - 슬래시 - 운영 체제와는 아무 상관이없는, 신에게 감사) Ctrl-A라인의 시작 부분으로 이동하고 Ctrl-E줄의 끝으로 이동합니다. 이 모드에서는 set -o emacs많은 셸 (대부분 AT & T ksh93) 에서 실행해야 하지만 mksh 및 GNU bash 에서 기본적으로 활성화되어 있습니다.

대부분의 최신 쉘은 모드 emacsvi모드를 모두 지원 합니다. (이 두 가지 모드 모두 작동하려면 tty가 필요합니다.)

많은 쉘에서 키 바인딩을 사용자 정의 할 수 있습니다. emacs일부 쉘에서는 vi모드 의 키 바인딩을 사용자 정의 할 수도 있지만 일반적으로 모드의 경우입니다. 당신이 키를 가지고 있으면 오히려,이 결합은 예를 들어, 내 시스템에, (생산 키 시퀀스 알아 내기 위해 먼저 있어야 할 것 Alt-CursorLeft생산을 Esc+[+1+;+3+D( ^[[1;3D; ^X입니다 Ctrl-X^[이다 Esc), 내가 좋아하는 뭔가를 입력 할 수 있도록

bind '^[[1;3D=beginning-of-line'
bind '"\e[1;3D":beginning-of-line'

셸에 따라이 키 바인딩이 변경됩니다. 일반적으로 시작 파일 ( ~/.mkshrc, ~/.kshrc) 또는 GNU bash ( 에서 ) 에 유지할 수 있습니다 ~/.inputrc. 모든 셸이 모든 버전의 모든 키 바인딩을 지원하지는 않습니다.

일반적으로 cat셸에서 실행 하고 키를 입력하고 관찰 하면 키가 생성하는 문자를 찾을 수 있습니다 . 그런 다음 ^C( Ctrl-C)를 눌러 중단하십시오 cat.


저는 유닉스 끝 문자 인 ^ D를 사용하여 고양이를 끝내고 싶습니다. 제 생각에는 텍스트 스트림이 "완료"되었기 때문에 ^ D입니다.
Aaron Hall

@AaronHall : 이미 줄에 무언가가 있으면 작동하지 않습니다. 또한, 우리는 그것을 중단하고 끝내고 싶지 않습니다. ;-) 그러나 그렇습니다. 정상적인 경우에는 옳습니다. 그러나 이것은 특별한 경우입니다.
mirabilos

터미널도 라인 편집을 수행 할 수 있습니다.
Samuel Edwin Ward

@mirabilos 줄 바꿈없이 EOF를 보내려면 ^ D ^ D를 수행하면됩니다 (예 : D를 두 번 누릅니다).
Potatoswatter 2014 년

@ Potatoswatter yes (재미, 나는 그것을 스스로 몰랐다), 그러나 나는 여기서 여기서 중단하고 싶다. 보낼 ^D^D때도 여전히 "정크"가 울
립니다

2

Home 키를 사용해 보셨습니까? MobXterm을 사용하여 Linux 상자에 연결하고 키보드의 Home 및 End 키를 사용하여 명령의 첫 번째 또는 마지막 문자로 이동합니다.


당신이 맞아요! 나는 맥을 사용하고 있음을 명시해야했다 ...
clami219

2

당신이로 전환 한 경우 vi사용 모드 set -o vi, 당신은 칠 수 Esc및 하나 I또는 A시작 또는 줄의 끝에서 텍스트를 입력 할 수 있습니다. 또는 커서를 이동하려는 경우 ^$입니다.


어떤 쉘의 vi 모드?
David Richerby 2014 년

2

emacs 모드 (:로 전환 set -o emacs)에서 다음을 누릅니다.

  • Ctrl+ACtrl+E
  • HomeEnd
  • Esc+band Esc+f(커서를 현재 단어의 앞뒤로 이동)

set -o vi명령 모드 ( Esc)에 있을 때 vi 모드 (:로 전환 )에서 다음을 누릅니다.

  • 0/ ^$(명령 모드를 유지합니다)
  • IA(가 편집 모드로 전환 할 수 있습니다)

또한보십시오:

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.