난 당신이 입력하면 이해 ls *
실제로 확장되어 ls a b c
현재는 직접 파일을 가질 때 a
, b
그리고 c
.
엔터를 누르기 전에 이것을 확장 할 수있는 방법이 있는지 궁금합니다. Ctrl + X 작동 방식 또는 탭 완성 작동 방식과 유사 합니다.
나 자신을 분명히하기 위해
$ ls *
<press magic key>
$ ls a b c
비슷한 방법으로 :
$ ls ~/
<press tab>
$ ls /home/username
나는 이것을 전에 본 적이 있다고 생각했지만 실수했을 수도 있습니다.
답변
glob-expand-word
man 에서 함수 를 사용할 수 있습니다 bash
.
포인트 앞의 단어는 경로명의 패턴으로 취급됩니다 확장하고 일치하는 파일 이름 목록이 삽입됩니다. 단어를 대체합니다. 숫자 인수가 제공되면 경로 이름 확장 전에 별표가 추가됩니다.
다음과 같이 추가하십시오 ~/.inputrc
:
Control-x: glob-expand-word
그래서 $ ls *
다음 Ctrl-X에 확장됩니다 $ ls a b c
귀하의 예제에서,.
답변
bash에서는 readline 기능이 호출 되고 기본적으로 glob-expand-word
바인딩됩니다 CtrlX*.
답변
vi
모드 ( set -o vi
) 에있을 때 “매직 키”는 Esc*입니다. 이 모두 작동 bash
하고 ksh
.
답변
$ bind -q glob-expand-word glob-expand-word는 "\ Cx *"를 통해 호출 할 수 있습니다. $ bind -q 삽입 완료 삽입 완료는 "\ e *"를 통해 호출 할 수 있습니다.
그래서 이것을 사용하기 위해 우리는 할 수 있습니다
ls *
Ctrl+x *
또는
ls *
Esc *
답변
glob-expand-word (\ Cx *)에 대한 대안은 삽입 완료 (\ e *)입니다. 끝에 별표없이 작동하지만 숨겨진 파일과 같은 다른 완성도 포함됩니다. ~ / .inputrc에서 둘 다 리바운드했습니다.
# insert glob results (\C-x* by default)
"\C-g": glob-expand-word
# insert completion list (\e* by default)
"\ei": insert-completions
glob-complete-word (\ eg)를 사용하여 예 /System/Library/Launch*/*Finder
를 들어로 변환 할 수 있습니다 /System/Library/LaunchAgents/com.apple.Finder.plist
.