Kuinka tarkistaa, onko tiedosto tai hakemisto Bashissa

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:

Käytä aina lainausmerkkejä välttääksesi tiedostoja käsiteltäessä ongelmia jotka sisältävät nimissä välilyönnin.

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.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *