다음과 같은 파일이 포함된 디렉터리가 있다고 가정해 보겠습니다.
$ ls
file0001.txt file0002.txt file0003.txt file0004.txt file0005.txt someotherfile.txt
다음 명령을 실행하고 싶다고 가정해 보겠습니다.
$ cat file0001.txt file0002.txt file0003.txt file0004.txt file0005.txt
bash 단축키를 사용하여 다음과 같이 파일 이름을 자동 완성할 수 있습니다.cat file000
ESC *
이제 특정 정규식(regex)만을 기반으로 자동 완성과 유사한 방식으로 단축키를 사용할 수 있습니까? 예를 들면 cat file000[1-3]
ESC *다음과 같습니다.
$ cat file0001.txt file0002.txt file0003.txt
편집: 더 이해하기 위해 위의 예에서 정규식을 사용해야 했습니다. file000[1-3].txt
또는file000[1-3]*
명확하게 말하자면, 내 질문은 정규 표현식을 사용하여 bash를 자동 완성하는 방법입니다. 대신 cat
bash 스크립트를 사용하거나 정규식 for
/ while
문을 사용하여 일부 파일을 함께 묶는 방법 은 무엇입니까 ?
답변1
당신이 찾고 있는 기능이 바로 여기에 있습니다. *
귀하의 예에는 누락 된 내용이 있습니다 . 입력 cat file000[1-3]*
ESC*하면 작동합니다. 나는 이것이 어떤 파일과도 일치하지 않는 경우 insert-completions
(에 바인딩된 ) readline 함수가 ESC*glob 패턴을 확장하지 않기 때문에 그런 경우라고 생각합니다. 마지막 항목이 없으면 *
파일과 일치하지 않습니다.
당신은 할 수 있습니다매뉴얼 페이지, "확장" 섹션 "경로 이름 확장".
답변2
교정기만 있으면 됩니다
cat file000{1,2,3}.txt
이는 다음과 같이 번역됩니다.
cat file0001.txt file0002.txt file0003.txt