나는 종종 쉘 파일 이름 글로빙을 사용하여 all , /dev/sda
등에 대한 작업과 같은 작업을 수행합니다 . 그러나 이는 디스크에 존재하는 패턴과 일치하는 파일에 의존합니다. 오늘은 각각 등에서 실행 하고 싶었지만 디스크에 패턴과 일치하는 파일 이름 이 없기 때문에 작동하지 않았습니다./dev/sdb
/dev/sdc
/dev/sd[a-f]
gitk
master@{1}
master@{2}
gitk master@{[1-5]}
실제 디스크 파일에 관계없이 쉘이 글로빙을 수행하도록 하려면 어떻게 해야 합니까?
답변1
일치하는 파일이 없으면 쉘 글로빙이 불가능합니다. 당신은해야합니다버팀대 확장:
gitk master@{{1..5}}
또는:
gitk master@{{1,2,3,4,5}}
양식은 나중에, 나중에, 나중에 {x..y}
필요합니다 .zsh 2.6-beta4
bash 3.0
ksh93r
{x,y}
처음에는 csh
Bourne에 Shell First로 복사되었습니다 ksh
.
답변2
적어도 bash에서는 범위를 사용할 수 있습니다.
$ echo gitk master@{{1..5}}
gitk master@{1} master@{2} master@{3} master@{4} master@{5}
분명히 echo는 무슨 일이 일어나고 있는지 보여주기 위해 위에서 사용되었습니다.
문자에도 작동합니다.
$ echo /dev/sd{x..z}
/dev/sdx /dev/sdy /dev/sdz
참고: 이는 전역 일치와 정규식 일치입니다. 이것은 두 가지 다른 것입니다. 글로벌 매칭을 위한 쉘. 그래서쉘 정규식 와일드카드별거 아닙니다.