Monesti kirjoittaessasi Shell-komentosarjoja saatat joutua tilanteeseen, jossa sinun on suoritettava toiminto sen perusteella, onko tiedosto olemassa vai ei. .
Bashissa voit testikomennolla tarkistaa, onko tiedosto olemassa, ja määrittää tiedoston tyypin.
Testikomennolla on jokin seuraavista syntaksimuodoista:
Jos haluat, että komentosarjasi on kannettava, sinun tulisi mieluummin käyttää vanhaa testiä ; then echo "$FILE exists."fi
Jos haluat suorittaa toisen toiminnon sen perusteella, onko tiedosto olemassa vai ei käytä if / then-rakennetta:
Voit käyttää testikomentoa myös ilman if-käskyä. &&
-operaattorin jälkeen oleva komento suoritetaan vain, jos testikomennon poistumistila on tosi,
Jos haluat Suorita komentosarja sen jälkeen, kun &&
-operaattori yksinkertaisesti liittää komennot kiharissa sulkeissa erotettuna ;
tai &&
:
Päinvastoin lausekkeen &&
kanssa ||
-operaattori suoritetaan vain, jos testikomennon poistumistila on false
.
Tarkista, onko hakemisto olemassa #
Operaattoreiden -d
avulla voit testata, onko tiedosto hakemisto vai ei.
Esimerkiksi tarkistaaksesi, onko /etc/docker
-hakemisto olemassa:
Voit käyttää myös kaksoissulkeita ; then echo "$FILE does not exist."fi
Sama kuin yllä:
Tarkista, onko olemassa useita tiedostoja #
Monimutkaisten sisäkkäisten if / else-rakenteiden käyttämisen sijaan voit käyttää -a
(tai &&
kanssa ; then echo "Both files exist."fi
Vastaavat variantit ilman IF-käskyä:
tiedostotestioperaattorit #
Testikomento sisältää seuraavat FILE-operaattorit, joiden avulla voit testata tietyntyyppisiä tiedostoja:
-
-b
FILE
– Tosi, jos TIEDOSTO on olemassa ja se on erityinen lohkotiedosto. -
-c
FILE
– Tosi jos TIEDOSTO on olemassa ja se on erikoismerkkitiedosto. -
-d
FILE
– Tosi, jos TIEDOSTO on olemassa ja se on hakemisto. -
-e
FILE
– Tosi, jos FILE on olemassa ja se on tiedosto, tyypistä (solmu, hakemisto, socket jne.) riippumatta. -
-f
FILE
– Tosi, jos TIEDOSTO on olemassa ja se on tavallinen tiedosto (ei hakemisto tai laite). -
-G
FILE
– Tosi, jos TIEDOSTO on olemassa ja sillä on sama ryhmä kuin komennon suorittavalla käyttäjällä. -
-h
FILE
– Tosi, jos TIEDOSTO on olemassa ja se on symbolinen linkki. -
-g
FILE
– Tosi, jos TIEDOSTO on olemassa ja set-group-id (sgid
) -lippu on asetettu. -
-k
FILE
– Tosi, jos TIEDOSTO on olemassa ja siihen on asetettu tahmea bitti. -
-L
– Tosi, jos TIEDOSTO on olemassa ja se on symbolinen linkki. -
-O
FILE
– Tosi, jos FILE on olemassa ja sen omistaa komentoa suorittava käyttäjä. -
-p
FILE
– Tosi, jos TIEDOSTO on olemassa ja se on putki. -
-r
FILE
– Tosi, jos TIEDOSTO on olemassa ja luettavissa. -
-S
FILE
– Tosi, jos TIEDOSTO on olemassa ja se on liitäntä. -
-s
FILE
– Tosi, jos TIEDOSTO on olemassa ja sen koko on nolla. -
-u
FILE
– Tosi, jos TIEDOSTO on olemassa, ja set-user-id (suid
) -lippu on asetettu. -
-w
FILE
– Tosi, jos TIEDOSTO on olemassa ja kirjoitettavissa. -
-x
FILE
– Tosi, jos TIEDOSTO on olemassa ja se on exe leikattu.
Päätelmä #
Tässä oppaassa olemme osoittaneet, kuinka voit tarkistaa, onko Bashissa tiedosto tai hakemisto.