마지막 인수를 사용하여 이전 명령을 호출 !$
하거나 이전 인수를 사용하여 루프를 호출 할 수 있다는 것을 알고 있지만 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]
n
n
이 시퀀스는 번호가 매겨진 명령을 호출하고 #
명령 앞에 주석을 추가한 다음 이를 가장 최근 명령으로 쉘 기록에 다시 저장합니다. 그런 다음 바로가기는 ^[_
마지막 명령의 마지막 매개변수를 호출합니다.
bash
마지막 인수도 기본적으로 셸 매개변수에 저장되므로 $_
첫 번째 부분을 완료한 후 마지막 인수도 이런 방식으로 확장할 수 있습니다.
답변3
Bash가 emacs 모드에 있는 경우 Ctrl+ w(마지막 단어 삭제)를 사용한 다음 Ctrl+ u(삭제된 문자열 입력)를 사용할 수 있습니다.