bash fájlnévben {...} ?

Fórumok

Mi az amit nem látok a bash manualban?
Ha egy könyvtárból több fájlt akarok felhasználni, akkor ugye megadhatom úgy, hogy

cat /teljes/eleresi/ut/{elso,masodik,harmadik}

Viszont mi van, ha a { } jelek közti nevek egy generált listából származnak, ami lehet egy vagy több elemű?
Több elemnél nincs gond, de az eggyel úgy tűnik, adódnak problémák:
A /teljes/eleresi/ut/{elso} 1:1-ben így jelenik meg, nem lesz belőle /teljes/eleresi/ut/elso.
Ha meg az elso után van egy vessző is, akkor második elemként maga a könyvtár jelenik meg, ami megintcsak nem nyerő.

Workaround van, csak érteni szeretném, hogy miért csak több elemnél működik a kapcsos zárójel úgy, ahogy, egynél miért nem?

Hozzászólások

Alapbol glob pattern-t hasznal find, ls, cat stb. ami ? * es range [12345] formatumokat ismer.

A kacsacsoros (curly braces) formatumu lista magadast a bash dolgozza fel ezek elott a brace expansion reven.
Abban pedig le van irva az elvart formatuma: "A correctly-formed brace expansion must contain unquoted opening and closing braces, and at least one unquoted comma or a valid sequence expression. Any incorrectly formed brace expansion is left unchanged. "

A find bizonyos szűrési feltételei hasonlóképp viselkednek, mint a shell globbingja.
De az egyrészt külön eset, másrészt, ott a shell-t explicit le kell beszéld arról, hogy a globing expression-t saját maga fejtse ki.
A másik különbség a kettő közt: a shell kifejti a glob-ot és behelyettesíti, a find pedig szűrési feltételként alkalmazza.

NE keverjük a szezont a fazonnal!

szerk.: Annyiban valóban pontatlan voltam az "idézésnél", hogy a find-ot egy kalap alá vettem a többi felhozott példával. De gondoltam tudunk fókuszálni a lényegre! ;-) Rosszul gondoltam. Explicit bele kellett volna írjam a konfúzió elkerülése végett, hogy a find is ismeri a globbingot a filter expression-ök közt.

"A correctly-formed brace expansion must contain unquoted opening and
closing braces, and at least one unquoted comma or a valid sequence
expression. Any incorrectly formed brace expansion is left unchanged."

No megeloztek :-)