Android

Kuinka tarkistaa, onko tiedostoa tai hakemistoa olemassa bash-tiedostossa

Customizing Cloud9 and the CS50 IDE by Dan Armendariz

Customizing Cloud9 and the CS50 IDE by Dan Armendariz

Sisällysluettelo:

Anonim

Usein Shell-komentosarjoja kirjoitettaessa voi joutua tilanteeseen, jossa joudut suorittamaan toimenpiteen sen perusteella, onko tiedosto olemassa vai ei.

Bash-sovelluksessa voit käyttää testikomentoa tarkistaaksesi, onko tiedostoa olemassa ja määrittää tiedoston tyyppi.

Testikomento on yksi seuraavista syntaksimuodoista:

test EXPRESSION]

Tarkista, onko tiedosto olemassa

Kun tarkistetaan, onko tiedostoa olemassa, yleisimmin käytetyt TIEDOSTO-operaattorit ovat -e ja -f . Ensimmäinen tarkistaa, onko tiedosto olemassa tyypistä riippumatta, ja toinen palaa totta vain, jos TIEDOSTO on tavallinen tiedosto (ei hakemisto tai laite).

Luettavin vaihtoehto tarkistettaessa, onko tiedosto olemassa vai ei, on käyttää testikomentoa yhdessä if-lauseen kanssa. Mikä tahansa alla olevista katkelmista tarkistaa, onko /etc/resolv.conf olemassa:

FILE=/etc/resolv.conf if test -f "$FILE"; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if]; then echo "$FILE exist" fi

Jos haluat suorittaa toisen toiminnon sen perusteella, onko tiedosto olemassa vai et vain käytä if / then -konstruktia:

FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi Käytä aina lainausmerkkejä välttääksesi ongelmat käsitellessäsi tiedostoja, joiden nimessä on välilyönti.

Voit käyttää testikomentoa myös ilman if-käskyä. Komento && operaattorin jälkeen suoritetaan vain, jos && on totta, test -f /etc/resolv.conf && echo "$FILE exist"

&& echo "$FILE exist"

] && echo "$FILE exist"

&& { echo "$FILE exist"; cp "$FILE" /tmp/; }

Vastakohtana && lle || operaattori suoritetaan vain, jos testikomennon poistotila on false .

&& echo "$FILE exist" || echo "$FILE does not exist"

Tarkista, onko hakemisto olemassa

Operaattorit -d avulla voit testata onko tiedosto hakemisto vai ei.

Esimerkiksi tarkistaaksesi, onko käyttämäsi hakemisto /etc/docker :

FILE=/etc/docker if; then echo "$FILE is a directory" fi

&& echo "$FILE is a directory"

Voit käyttää myös kaksoishakasia , 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));

Tarkista, onko tiedostoa olemassa

Kuten monissa muissa kielissä, testilause voidaan nollata painikkeella ! (huutomerkki) looginen ei operaattori:

FILE=/etc/docker if; then echo "$FILE does not exist" fi

Sama kuin edellä:

&& echo "$FILE does not exist"

Tarkista, onko useita tiedostoja

Sen sijaan, että käytät monimutkaisia ​​sisäkkäisiä sisäkkäisiä, jos / else -konstrukteja, voit käyttää -a (tai && kanssa ; then echo "$FILE is a directory" fi

FILE=/etc/docker if; then echo "$FILE is a directory" fi

Vastaavat variantit käyttämättä IF-lauseketta:

&& echo "both files exist"

] && echo "both files exist"

Tiedostotestausoperaattorit

Testikomento sisältää seuraavat TIEDOSTO-operaattorit, joiden avulla voit testata erityyppisiä tiedostoja:

  • -b FILE - Totta, jos TIEDOSTO on olemassa ja se on lohkon erikoistiedosto. -c FILE - Totta, jos TIEDOSTO on olemassa ja se on erikoismerkkitiedosto. -d FILE - Totta, jos TIEDOSTO on olemassa ja on hakemisto. -e FILE - Totta, jos TIEDOSTO on olemassa ja on tiedosto riippumatta tyypistä (solmu, hakemisto, pistorasia jne.). -f FILE - Totta, jos TIEDOSTO on olemassa ja on tavallinen tiedosto (ei hakemisto tai laite). -G FILE - Totta, jos TIEDOSTO on olemassa ja siinä on sama ryhmä kuin komentoa käyttävällä käyttäjällä. -h FILE - Totta, jos TIEDOSTO on olemassa ja se on symbolinen linkki. -g FILE - Totta, jos TIEDOSTO on olemassa ja siinä on asetettu ryhmä-id (sgid) -lippu. -k FILE - Totta, jos TIEDOSTO on olemassa ja siinä on tarttuva bittilippu. -L FILE - Totta, jos TIEDOSTO on olemassa ja on symbolinen linkki. -O FILE - Totta, jos TIEDOSTO on olemassa ja sen omistaa komentoa käyttävä käyttäjä. -p FILE - Totta, jos TIEDOSTO on olemassa ja on putki. -r FILE - Totta, jos TIEDOSTO on olemassa ja luettavissa. -S FILE - Totta, jos TIEDOSTO on olemassa ja on pistorasia. -s FILE - Totta, jos TIEDOSTO on olemassa ja sen koko ei ole nolla. -u FILE - Totta, jos olemassa ja set-user-id (suid) lippu on asetettu. -w FILE - Totta, jos TIEDOSTO on olemassa ja se on kirjoitettavissa. -x FILE - Totta, jos TIEDOSTO on olemassa ja se voidaan suorittaa.

johtopäätös

Tässä oppaassa olemme osoittaneet, kuinka voit tarkistaa, onko tiedostoa tai hakemistoa olemassa Bashin avulla.

bash terminaali