4.6  Shell pattern matching (globbing)

Shell käyttää tiedostonimien tulkintaan ja joihinkin testikomentoihin (case) omaa, yksinkertaista merkkijonolausekesyntaksiaan. Erityisesti sitä käytetään tiedostonimien generoimiseen (sekä ulkoisten komentojen nimissä että argumenteissa). Myös jotkin ulkoiset komennot käyttävät samaa syntaksia (erityisesti find).

4.6.1  Tavalliset jokerimerkit

POSIX määrittelee seuraavat jokerimerkit:

? Vastaa yhtä mielivaltaista merkkiä
* Vastaa mielivaltaista (myös tyhjää) merkkijonoa
[...] Vastaa yhtä merkkiä hakasulkulausekkeen määräämästä joukosta (ks. alla).

Muut merkit vastaavat itseään (huomaa kuitenkin että kohdassa 4.3 luetellut shellin erikoismerkit on tarvittaessa suojattava).

Huomaa että jokerilausekkeen on vastattava verrattavaa merkkijonoa kokonaisuudessaan (a* vastaa vain a:lla alkavia), toisin kuin esim. grepin kanssa.

4.6.2  Hakasulkulausekkeet

Hakasulkulauseke voi sisältää

4.6.3  Tiedostonimien lisärajoitukset

Tiedostonimiä laajennettaessa on voimassa seuraavat rajoitukset:

4.6.4  Ksh:n lisäjokerit

Ksh tuntee edellisten lisäksi seuraavat listaoperaattorit, kun lista on joukko pystyviivalla | erotettuja merkkijonoja (joissa voi itsessään olla jokereita):

?(lista) Vastaa nollaa tai yhtä listan alkioista
*(lista) Vastaa nollaa tai useampaa listan alkioista
+(lista) Vastaa yhtä tai useampaa listan alkioista
@(lista) Vastaa tasan yhtä listan alkioista
!(lista) Vastaa mitä tahansa paitsi listan alkioita

Esim. ?(a|bb)+([xyz]|kala) vastaa merkkijonoja x, y, z, kala, ax, ay, az, akala, bbx, bby, bbz ja bbkala.

4.6.5  Tilde

Tilde ~ on tavallaan jokerimerkki, mutta se käsitellään eri tavalla ja eri vaiheessa kuin edellämainitut. Se korvataan vain rivin alussa tai tyhjän perässä ja muuttujasijoituksessa yhtäsuuruusmerkin sekä kaksoispisteen jäljessä, sitä seuraavan käyttäjätunnuksen tai jos sitä seuraa välittömästi / tai tyhjää, $HOME:n arvolla.

Sen aikaisesta käsittelystä seuraa erityisesti, että sitä voi käyttää muuttujasijoituksessa (vaikkapa PATHissa). Sen sijaan se ei toimi sijoituksennäköisessä argumentissa, esim.
make -k kala DIR=~/xyzzy
ei toimi.

Seuraava: 4.7-4.8 Komentorivin tulkinnasta
Edellinen: 4.4-4.5 Muuttujat, syöttö ja tulostus


File translated from TEX by TTH, version 1.98.
On 17 May 2001, 18:13.