ls bla.*
프롬프트에 글을 쓰고 커서가 여전히 =명령줄 섹션에 있는 동안 키를 누르면 bla.*
일치하는 파일 목록이 인쇄됩니다. bla.*
을 누르면 *해당 단어가 목록을 대체합니다.
쉘 글롭 패턴 대신 변수를 인용하면 비슷한 상황이 가능합니까?
즉, $THISVARIABLE
명령줄에 some_key커서가 열려 있는 동안 값을 누르면 값이 인쇄되거나 값이 바뀌는 것을 찾고 있습니다.$THISVARIABLE
another_key
내 .set editing-mode vi
~/.inputrc
답변1
쉘이 Emacs 편집 모드에 있는 경우 + (내 시스템에서는 )를 shell-expand-line
눌러 Readline 기능을 호출 할 수 있습니다.MetaCtrl+eMetaEscbash
삽화:
$ echo $PATH
Meta지금 +를 누르면 Ctrl+e쉘은 전체 라인을 다음으로 대체합니다.
$ echo /usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin
이는 또한 명령 대체를 확장하므로 확장에 필요한 명령줄의 일부가 실행될 수 있습니다. 이는 또한 완료되지 않은 작업으로 인해 $(
구문 오류가 발생할 수 있음을 의미합니다.
이는 쉘 글로빙 패턴을 확장하지 않습니다.
Vi 편집 모드에서 사용하고 싶다면shell-expand-line
, 기본적으로 바인딩되지 않으므로 함수를 키 시퀀스에 명시적으로 바인딩 해야 합니다 . 예를 들어, 에 바인딩하려면 다음을 Ctrl+e사용하세요.
bind '"\C-e": shell-expand-line'
EscVi 모드에는 특별한 기능이 있기 때문에 Emacs 모드와 동일한 키 시퀀스를 사용하는 데에는 분명히 문제가 있습니다 .