Bash 명령 줄에서 *를 확장하는 방법


34

난 당신이 입력하면 이해 ls *실제로 확장되어 ls a b c현재는 직접 파일을 가질 때 a, b그리고 c.

엔터를 누르기 전에 이것을 확장 할 수있는 방법이 있는지 궁금합니다. Ctrl + X 작동 방식 또는 탭 완성 작동 방식과 유사 합니다.

나 자신을 분명히하기 위해

$ ls *
<press magic key>
$ ls a b c

비슷한 방법으로 :

$ ls ~/
<press tab>
$ ls /home/username

나는 이것을 전에 본 적이 있다고 생각했지만 실수했을 수도 있습니다.


글쎄, 나는 거의 알지 못하지만 내가 아는 가장 좋은 것은 $ echo * <ENTER> ls * 명령 전에 할 수있다. 탭을 누르는 것은 물론 탭을 확장하는 지름길은 아닙니다.
barlop

그러나 아마도 리눅스 사용자는 ls * much 'cos와 같이 필요하지 않을 것입니다. ls에는 필요하지 않을 것입니다. 그러나 globbing은 다른 쉘에서 다르게 동작하므로 이식성이 없지만 편리 할 때 편리합니다. 그러나 ls의 경우에는 필요하지 않습니다. ls * /는 디렉토리를 나열하지만 ls가 수행하도록 설계된 것은 아닙니다.
barlop

답변:


19

glob-expand-wordman 에서 함수 를 사용할 수 있습니다 bash.

포인트 앞의 단어는 경로명의 패턴으로 취급됩니다
확장하고 일치하는 파일 이름 목록이 삽입됩니다.
단어를 대체합니다. 숫자 인수가 제공되면
경로 이름 확장 전에 별표가 추가됩니다.

다음과 같이 추가하십시오 ~/.inputrc:

Control-x: glob-expand-word

그래서 $ ls *다음 Ctrl-X에 확장됩니다 $ ls a b c귀하의 예제에서,.


8
이미 묶여 ​​있어야합니다. 그리고 Ctrl-x는 이미 많은 것들에 대한 접두사로 바인딩되어 있습니다. 수행 bind -p | grep 'C-x'을 참조하십시오.
추후 공지가있을 때까지 일시 중지되었습니다.

바로 내가 찾던 것입니다! 감사합니다
19 분 54 초

@Dennis, 아직 바인딩되지 않았지만 내 .inputrc에 추가했습니다. 나는 그것이 데비안의 기본값이라고 생각합니다.
bramp

3
@ 데니스 : C-x*내 시스템에 묶여 있습니다.
cYrus


11

vi모드 ( set -o vi) 에있을 때 "매직 키"는 Esc*입니다. 이 모두 작동 bash하고 ksh.


비머를 명확히하기 위해 먼저 명령 줄을 정상적으로 입력하는 동안 별표를 입력 한 다음 편집 모드에서 빠져 나옵니다. 즉시 탈출하면 커서가 별표에서 찾은 다음 별표에있는 커서로 별표를 누르면 글로브가 나타납니다. 편집 모드에서 다시 확장 및 드롭합니다.
NeilG

4
$ bind -q glob-expand-word
glob-expand-word는 "\ Cx *"를 통해 호출 할 수 있습니다.

$ bind -q 삽입 완료
삽입 완료는 "\ e *"를 통해 호출 할 수 있습니다.

그래서 이것을 사용하기 위해 우리는 할 수 있습니다

ls * Ctrl+x *

또는

ls * Esc *

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


이는 정확한 환경에 따라 다른 키 바인딩을 찾을 수 있기 때문에 가장 좋은 방법입니다.
wisbucky

0

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.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.