A minta behelyettesítése
A shell a minta helyére behelyettesíti az összes olyan
fájlnevet (az adott könyvtárban), ami illeszkedik a
mintára, abc sorrendben. Például, ha egy könyvtárban
a következõ fájlok vannak:
$ ls
README.Debian isodemo pvmpov.doc.gz
README.data isodocs res1024.ini
README.pvmpov low.ini res120.ini
allscene.ini pngflc.ini res320.ini
changelog.Debian.gz pov3demo res640.ini
changelog.gz povray.doc.gz res800.ini
copyright povray.ini slow.ini
docsdemo povscn texsamps
gamma.gif ppmmpeg.ini tgafli.ini
gamma.gif.txt pvm_install.doc
$
akkor a
''*.ini'' helyére az
''allscene.ini povray.ini
res120.ini res800.ini low.ini ppmmpeg.ini res320.ini slow.ini pngflc.ini
res1024.ini res640.ini tgafli.ini'' kerül. Tehát az
$ ls *.ini
parancs kiadásakor a shell behelyettesítése miatt
valójában a következõ parancs lesz végrehajtva:
$ ls allscene.ini povray.ini res120.ini res800.ini low.ini ppmmpeg.ini res320.ini slow.ini pngflc.ini res1024.ini res640.ini tgafli.ini
vagyis kilistázza a fenti fájlokat. A behelyettesítést
nem az
ls hajtja végre, hanem a shell.
Ha nincs olyan fájl, ami a mintára illeszkedik, akkor
a parancs magát a mintát kapja meg. Ez az ls esetében
azt jelenti, hogy egy - a mintával azonos nevû - fájlt
szeretnénk kiiratni - s mivel ilyen nem létezik, az ls
kiírja, hogy nem találja a fájlt.
$ ls *xxx
ls: *xxx: No such file or directory
$
Sok parancsnak adható meg több fájlnév. Ha a
cp és
mv parancsoknak több fájlnevet adunk
meg, akkor ezek után egy könyvtárat kell megadnunk,
melybe a felsorolt fájlok kerülnek. Az
rm parancs is
használható több fájlnévvel. Ebben az
esetben a felsorolt fájlok mind törlõdnek.
Veszély |
Más operációs rendszerek esetében
két minta egymás után írása használható
speciális feladatokra, például DOS alatt a ren
*.txt *.doc[1]
minden .txt kiterjesztésû fájlt átnevez
.doc
kiterjesztésûre. Linux alatt ez nem használható,
mivel mind a két minta kibontásra kerül, így
az mv parancs egymásután megkapja a két mintának
megfelelõ fájlneveket, nem tudván, hogy azok két
mintához tartoztak. |
A minták behelyettesítését két módon
lehet megakadályozni. Tehetünk egy
\ karaktert minden
speciális karakter elé, például így:
$ ls \*\?
ls: *?: No such file or directory
$
vagy a mintát két
' karakter közé foglalva:
$ ls '***?'
ls: ***?: No such file or directory
$
Speciális karaktereket (
*,
? és
[)
tartalmazó fájlnevek használata lehetséges,
de nem javasolt.