Bash 명령 줄에서 *를 확장하는 방법 방법이 있는지 궁금합니다. Ctrl + X

난 당신이 입력하면 이해 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-wordman 에서 함수 를 사용할 수 있습니다 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 *

Enter 키를 누르기 전에 복잡한 줄을 확장하십시오


답변

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.


답변