Bash, 현재 명령의 마지막으로 사용된 인수 삽입

Bash, 현재 명령의 마지막으로 사용된 인수 삽입

마지막 인수를 사용하여 이전 명령을 호출 !$하거나 이전 인수를 사용하여 루프를 호출 할 수 있다는 것을 알고 있지만 ALT + .현재 사용 중인 명령의 마지막 인수를 호출할 수 있습니까?

예를 들어,

root@chip:/# echo peckahs
root@chip:/# *_stuffthatdoesntmatter_*
root@chip:/# *_stuffthatdoesntmatter_*
root@chip:/# *_stuffthatdoesntmatter_*
root@chip:/# echo peckahs < used key shortcut to recall 'peckahs' the last used argument for echo

답변1

Bash를 사용하면 다음과 같이 요청하는 거의 모든 작업을 수행할 수 있습니다.

echo !echo:$

그래서 당신이 할 때

echo This is fun
ls
echo !echo:$

출력의 마지막 줄은 fun명령 과 일치하는 모든 인수를 생성하는 *대신 ;$

echo This is fun
ls
echo !echo:*

This is fun다시 출력하지만 그렇게 할 수도 있습니다.

!echo

이 경우.

이는 동일한 명령을 사용하여 명령의 매개변수를 반복하는 것으로 제한되지 않습니다.

printf !echo:*

바라보다배쉬 참조 매뉴얼더 알아보기. histverify이를 실행하기 전에 명령을 확인할 수 있는 기회를 제공하는 셸 옵션 과 결합하여 키보드 기반 대화형 기록의 완성에 더 가까워질 수도 있습니다 .

예를 들어 기록 확장은 어디에서나 사용할 수 있습니다.

lastechoargs="!echo:*"

마지막 명령의 모든 매개변수를 변수 echo에 저장합니다 lastechoargs.

이는 완전한 명령에도 적용됩니다. 예를 들어 복잡한 명령을 작성 git하고 이를 파일에 저장하려는 경우입니다.

echo !git > mygitcommand

또는 일부 디렉터리를 보관하고 싶지만 먼저 몇 개의 파일을 삭제하기로 결정했습니다.

ls dir1 dir2
rm dir2/somefile
tar cpzf archive.tar.gz !ls:*

답변2

예. 모든 POSIX 쉘에서 다음을 수행할 수 있습니다...

set -o vi
^[[num]-#^[[num]_

...여기서 키, 현재 첫 번째 명령에서 역방향으로 계산된 명령 기록을 나타내는 선택적 매개변수 , 마지막 명령에서 역방향으로 계산된 이전 명령의 첫 번째 매개변수를 ^[나타냅니다 . 키보드 구성에 따라 CTRL과 키 조합을 사용할 수도 있습니다.ESC[num]nn

이 시퀀스는 번호가 매겨진 명령을 호출하고 #명령 앞에 주석을 추가한 다음 이를 가장 최근 명령으로 쉘 기록에 다시 저장합니다. 그런 다음 바로가기는 ^[_마지막 명령의 마지막 매개변수를 호출합니다.

bash마지막 인수도 기본적으로 셸 매개변수에 저장되므로 $_첫 번째 부분을 완료한 후 마지막 인수도 이런 방식으로 확장할 수 있습니다.

답변3

Bash가 emacs 모드에 있는 경우 Ctrl+ w(마지막 단어 삭제)를 사용한 다음 Ctrl+ u(삭제된 문자열 입력)를 사용할 수 있습니다.

관련 정보