Bash 및 느낌표 명령, 실행 전에 실제 명령을 미리 보시겠습니까?

Bash 및 느낌표 명령, 실행 전에 실제 명령을 미리 보시겠습니까?

!문자열 앞에 접두사를 붙이면 해당 문자열의 일부로 시작하는 명령 버퍼의 모든 명령이 실행됩니다. 또한 다른 용도도 있습니다. 예를 들어 참조하십시오.Bash의 느낌표(!) 이해하기

제 질문은 실행될 명령을 실행하기 전에 어떻게 미리 볼 수 있느냐는 것입니다. 예를 들어, 이 작업을 수행 !for하고 이전에 "for"로 시작하는 여러 명령을 작성한 경우 마지막 명령이라고 생각했던 명령이 실제로 그렇게 생각했던 명령인지 완전히 확신할 수 없습니다. bash가 실제로 명령을 실행하기 전에 명령이 무엇인지 보여줄 수 있다면 매우 도움이 될 것입니다. Bash에서 이 작업을 수행할 수 있는 방법이 있나요?

답변1

Bash는 를 상속합니다 !. csh두 셸 모두에서 명령을 미리 보는 방법은 :p끝에 를 추가하는 것입니다.

!for:p

답변2

histverify셸 옵션을 사용할 수 있습니다 .

histverify
    If set, and readline is being used, the results of history substitution
    are not immediately passed to the shell parser.  Instead,
    the resulting line is loaded into the readline editing buffer,
    allowing further modification.

예:

$ shopt -s histverify
$ !shopt

또 다른 유용한 옵션은 다음과 같습니다 histreedit.

histreedit
    If set, and readline is being used, a user is given the opportunity
    to re-edit a failed history substitution.

답변3

나는 일반적으로 (IMO가 깨짐) !대체를 포기하고 대신 쉘 히스토리 기능을 사용합니다.vi 모드(다음에서 확실히 동등한 옵션을 찾을 수 있습니다.이맥스 모드) 마지막 항목을 검색하고 <Esc> / for <Enter>(원하는 명령이 아닌 경우) for해당 키를 사용하여 다음 항목 에 대한 검색을 반복하고 n(또는 N다른 방향으로 이동) 원하는 명령이 다음인지 확인합니다. 와 동일합니다 <Enter>.

답변4

vi모드( )를 사용하는 경우 또는 , 또는 를 set -o vi누르면 기록이 위로 올라가고, 또는 을 누르면 아래로 내려갑니다. 를 사용하여 얻은 내용을 편집하거나 실행할 수 있습니다 .EscC-[kUPjDOWNEnter

관련 정보