Bash에는 마지막 명령의 일부를 반복하는 편리한 연산자가 있습니다.
!^
이전 명령의 첫 번째 인수로 확장합니다. 예 :$ echo one "two three" one two three $ echo !^ echo one one
!$
이전 명령의 마지막 인수로 확장합니다. 예 :$ echo one "two three" one two three $ echo !$ echo "two three" two three
!*
이전 명령의 모든 인수로 확장됩니다. 예 :$ echo one "two three" one two three $ echo !* echo one "two three" one two three
(지금까지 내가 이해, 이들에 대한 문법 설탕 있습니다 !!:^
, !!:$
그리고 !!:*
각각 어디에 !!
이벤트 지정자 이전 명령으로 확장하고 있다는 것입니다 ^
, $
그리고 *
단어 지정자이다는 볼 배쉬 참조 설명서 또는 man bash
.)
이것들은 종종 매우 편리합니다. 그러나 키보드 단축키로 훨씬 더 시원해집니다.
당신이 공격 할 때 Alt+ .또는 Alt+를 _, 이전 명령의 마지막 인수는이 쓴 유사 것처럼, 현재의 명령에 삽입되어
!$
그 시점에서.그 시점에서 작성한 것처럼 Alt+ Ctrl+ y를 눌러 이전 명령의 첫 번째 인수를 삽입 할 수도 있습니다
!^
.
합니다 (참조 GNU의 Readline 라이브러리 또는 info readline
.)
실제로 명령을 실행하기 전에 삽입하는 내용을 볼 수 있기 때문에 Bash의 기록 연산자보다 키보드 단축키를 선호합니다. 그러나 이전 명령의 모든 단어, 즉 !*
작업 하는 단어를 모두 삽입 할 수있는 바로 가기가없는 것 같습니다 . 적어도 나는 그것을 찾을 수 없었다.
그런 지름길이 있습니까? 그렇지 않은 경우 readline 라이브러리를 구성하여 라이브러리를 추가 할 수 있습니까?
zsh
입력 echo !*
한 다음 Tab 키를 누르면 원하는 효과가 나타납니다. 일반적으로 readline 상태에서 TAB은 모든 확장 가능 파일을 확장합니다. 매우 편리합니다. 아마도 bash는 동일한 효과에 대한 구성을 가지고 있습니까? @ Seth, 이것이 터미널 에뮬레이터가 아닌 bash의 readline이라고 생각합니다.
man bash
(라인 3030 어딘가에)
\e.
및 \e_
readline에 기능에 매핑된다 yank-last-arg
와 \e\C-y
매핑된다 yank-nth-arg
. 슬프게도 여러 개의 이전 인수를 한 번에 추가하는 (단일) 명령이없는 것 같습니다.