입력한 명령을 실행하지 않고 저장하는 방법은 무엇입니까? [복사]

입력한 명령을 실행하지 않고 저장하는 방법은 무엇입니까? [복사]

모든 Linux 사용자는 이런 짜증나는 일을 경험했습니다. 길고 지루한 명령을 입력하기 시작했는데 더 일찍 다른 명령을 실행해야 한다는 것을 깨달았습니다. 나중에 실행하기 위해 첫 번째 항목을 어떻게 저장합니까?

당신은 입력을 시작합니다

mycommand -a -F --conf /very/long/path --and /another/one /input/file.txt

cp f.txt /input/file.txt그러나 "Enter"를 누르기 전에 먼저 작업을 완료했어야 한다는 것을 깨닫게 됩니다.

따라서 명령이 중단되어 명령을 누르지 않으면 Enterbash 기록을 사용하여 복원할 수 없습니다.

이 문제를 처리하는 가장 좋은 방법은 무엇입니까?

답변1

Hit CTRL- U(킬 라인 - 쉘의 킬 링에 라인을 저장합니다), 해야 할 일을 수행한 다음 새 프롬프트에서 CTRL- Y(킬 링에서 끌어오기)를 눌러 원래 명령을 되돌립니다.

while또는 중첩된 명령(예: 또는 for루프) 에 있는 경우 CTRL-를 누르면 C명령을 실행하지 않고 기록에 추가하고 줄을 지우므로 기록 메커니즘의 셸을 사용하여 다음 작업을 수행할 수 있는 경우 특히 유용합니다. 그것을 부르세요: 당신은 그것을 사용할 준비가 되었습니다.

답변2

해당 줄에 주석을 달고 Enter를 누르세요.

Ctrl-A
#
Enter

그러니 이 대사를 역사에 남겨두세요

답변3

Bash 및 Korn 셸(Emacs 모드)에서 Esc- 처음에 a를 추가하고 다음을 누르는 것과 #같습니다 .#Enter

예:

$ find /{,usr/}{,s}bin/ -type f -ls | awk '$3~/^...s/' | nl

Esc #;

$ #find /{,usr/}{,s}bin/ -type f -ls | awk '$3~/^...s/' | nl
$ _

노트

1: 일부 터미널에서는 Alt+를 whatever화음으로 보내는 또 다른 방법이고 Esc그 뒤에는whatever

2: "#"을 얻으려면 아무 키나 눌러야 함을 의미하므로 + 또는 + +를 #눌러야 할 수도 있습니다.EscShift3AltShift3

(@vi님 감사합니다)

맞춤화

Bash에서는 다음과 같은 줄을 추가하여 접두사를 제어할 수 있습니다 .inputrc.

set comment-begin "## "

(따옴표는 선행 또는 후행 공백이 있는 경우에만 필요합니다.)

다른 바인딩을 설정하고 기본값 바인딩을 해제할 수도 있습니다 Esc.#

"\e'": insert-comment
"\e#": nop

https://www.gnu.org/software/bash/manual/html_node/Readline-Init-File-Syntax.html

답변4

특별히 명령을 저장하고 싶다면 저는 보통 Emmanuel의 조언을 따릅니다. 그러나 현재 명령 앞에 다른 명령을 입력하려는 경우 해당 명령을 저장할 필요가 없습니다. 줄의 시작 부분으로 이동하여 다른 명령을 입력하고 세미콜론을 추가합니다.

Ctrl-A cp f.txt /input/file.txt ; Enter

그러면 원하는 순서대로 두 명령이 실행됩니다. 또한 기록에 함께 저장되므로 나중에 두 번째 명령을 다시 실행하고 Ctrl- 를 사용하여 해당 명령에 도달 하면 R실행하기 전에 있어야 한다는 알림과 함께 첫 번째 명령이 표시됩니다. (이 경우 항상 두 가지를 모두 실행해야 합니다).

&&두 번째 명령을 실행하려면 대신 세미콜론을 사용할 수도 있습니다.오직 처음으로 작동하는 경우.

관련 정보