Bash-komentosarjaa luodessasi saatat kohdata tilanteen, jossa sinun on selvitettävä onko tiedostoa olemassa tehdä joitakin toimintoja sen kanssa. Voit käyttää testikomentoa tarkistaaksesi onko tiedosto olemassa ja minkä tyyppinen se on.
Tässä opetusohjelmassa näytämme, kuinka voit tarkistaa, onko tiedosto olemassa Linux-käyttöjärjestelmissä.
Testikomennon perussyntaksi
Testikomennon perussyntaksi tarkistamaan, onko tiedosto olemassa alla olevan kuvan mukaisesti:
test -e file
Tai
test -f file
Missä:
- -e
Tämä vaihtoehto tarkistaa, onko tiedosto olemassa tyypistä riippumatta. - -f
Tämä vaihtoehto tarkistaa, onko tiedosto olemassa vain, jos TIEDOSTO on tavallinen tiedosto.
Testikomennon man-sivun pitäisi näkyä alla olevan kuvan mukaisesti:
man test
Sinun pitäisi nähdä seuraava näyttö :
Testaa, onko tiedosto olemassa komentorivillä
Tässä osiossa näytämme sinulle kuinka tarkistaa, onko tiedosto olemassa komentorivillä:
Suorita seuraava komento tarkistaaksesi, onko tiedosto / etc / fstab olemassa (T rue):
test -f /etc/fstab
Suorita sitten seuraava komento asettaaksesi poistumiskoodiksi 0 tai 1 aina kun testi onnistui tai ei.
echo $?
Tulos:
0
Lähtö on 0, mikä tarkoittaa, että tiedosto / etc / fstab on olemassa.
Voit myös tarkista, onko tiedosto olemassa seuraavan komennon avulla:
echo $0
Tulos:
0
Suorita seuraavaksi seuraava komento testataksesi, onko tiedosto / etc / fabab olemassa ( Väärä).
test -f /etc/fabab
echo $?
Tulos:
1
Lähtö on 1, mikä tarkoittaa, että tiedostoa / etc / fabab ei ole olemassa.
Sinä voi myös testata, onko tiedosto /etc/rc.local olemassa, tai ei käytä bashin ehdollista suoritusta alla olevan kuvan mukaisesti:
test -f /etc/rc.local && echo "Exists" || echo "Not Exists"
Tai
&& echo "Exists" || echo "Not Exists"
Jos tiedosto nimeltä /etc/rc.local on olemassa, sinun pitäisi nähdä seuraava tulos:
Exists
Voit myös tarkistaa, onko useita tiedostoja olemassa vai ei, käyttämällä yhtä komentoa:
&& echo "both files exist"
Tai
test -f /etc/passwd -a -f /etc/crontab && echo "both files exist"
Sinun pitäisi nähdä seuraava tulos:
both files exist
Testaa, onko tiedosto olemassa Bashissa
Tässä osassa luomme bash-komentosarjan ja tarkistamme, onko tiedosto olemassa vai ei, tulostamalla viestin.
Luo, luo tiedosto test.sh ja tarkista onko tiedosto /etc/rc.local on olemassa tai ei:
nano test.sh
Lisää seuraavat rivit:
#!/bin/bash
FILE=/etc/rc.local
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi
Tallenna ja sulje tiedosto ja suorita komentosarja seuraavalla komennolla:
bash test.sh
Sinun pitäisi nähdä seuraava tulos:
The file "/etc/rc.local" exists.
Luodaan nyt tiedosto test.sh ja testataan, onko tiedosto / etc / rc.localad ei ole olemassa:
nano test.sh
Lisää seuraavat rivit:
#!/bin/bash
FILE=/etc/rc.localad
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi
Tallenna ja sulje tiedosto ja suorita komentosarja seuraavalla komennolla:
bash test.sh
Sinun pitäisi nähdä seuraava tulos:
The file "/etc/rc.localad" is not exists.
Voit myös selvittää, onko tiedosto olemassa vai ei, ja suorittaa jonkin toiminnon sillä bash-komentosarjassa. p> Etsi esimerkiksi tiedosto nimeltä / etc / hosts ja kopioi se hakemistoon / opt, jos tiedosto on olemassa.
Luo niin tekemällä tiedosto nimeltä test.sh:
nano test.sh
Lisää seuraavat rivit:
FILE=/etc/hosts
if ; then
cp $FILE /opt
fi
Tallenna ja sulje tiedosto ja suorita komentosarja seuraavalla komennolla:
Testaa nyt / opt-hakemisto seuraavalla komennolla:
ls /opt/hosts
Sinun pitäisi nähdä hosts-tiedosto seuraavassa lähdössä:
/opt/hosts
Voit käyttää myös ilmausta! tarkistaaksesi, onko tiedostoa olemassa.
Suorita esimerkiksi seuraava komento tarkistaaksesi, ettei tiedostoa / etc / hosting ole olemassa:
&& echo "File does not exist"
Tai
test ! -f /etc/hosting && echo "File does not exist"
Sinun pitäisi nähdä seuraava tulos:
File does not exist
Testaa, onko hakemisto olemassa
Voit myös selvittää, onko hakemisto olemassa vai ei, käyttämällä -d-vaihtoehtoa.
Esimerkiksi, onko hakemisto / etc / apache2 olemassa vai ei.
&& echo "Directory is exists"
Tai
test -d /etc/apache2 && echo "Directory is exists"
Sinun pitäisi nähdä seuraava tulos:
Directory is exists
Voit myös luoda bash-komentosarjan ehdollisilla lausekkeilla tarkistaaksesi, onko hakemisto olemassa vai ei.
Luo tiedosto test.sh kuten alla on esitetty:
nano test.sh
Lisää seuraavat rivit:
Tallenna ja sulje tiedosto, kun olet valmis. Anna sitten oikea käyttöoikeus seuraavalla komennolla:
chmod 755 test.sh
Testaa seuraavaksi, onko hakemisto / etc / nginx käytettävissä vai ei seuraavalla komennolla:
./test.sh /etc/nginx
Sinun pitäisi nähdä seuraava tulos:
Directory /etc/nginx/ exists.
Testaa seuraavaksi, onko hakemisto / etc / linux käytettävissä vai ei, seuraavalla komennolla:
./test.sh /etc/linux
Sinun pitäisi nähdä seuraava tulos:
Directory /etc/linux does not exists
Bash-tiedostojen testausoperaattorit
Seuraavat tiedostojen testausoperaattorit auttavat sinua tarkistamaan, onko tiedostoa olemassa ja onko sillä erityistyyppejä:
- -b
TIEDOSTO on olemassa ja se on erityinen lohko - -c
TIEDOSTO on olemassa ja se on erityinen merkki - -d
TIEDOSTO on olemassa ja on hakemisto - -e
FILE on olemassa - -f
FILE on olemassa ja on tavallinen tiedosto - -g
FILE on olemassa ja on set-group-ID - -G
TIEDOSTO ex on olemassa ja sen omistaa tehokas ryhmätunnus. - -h
TIEDOSTO on olemassa ja se on symbolinen linkki (sama kuin -L). - -k
TIEDOSTO on olemassa ja on sen tahmea bittijoukko - -L
TIEDOSTO on olemassa ja se on symbolinen linkki (sama kuin -h) - -O
TIEDOSTO on olemassa ja tosiasiallisen käyttäjän omistuksessa Tunnus - -p
TIEDOSTO on olemassa ja se on nimetty putki - -r
TIEDOSTO on olemassa ja lukuoikeus myönnetään - -s
FILE on olemassa ja sen koko on suurempi kuin nolla - -S
FILE on olemassa ja se on liitäntä - -u
FILE on olemassa ja sen set-user-ID-bitti on asetettu - -w
FILE on olemassa ja kirjoitusoikeus myönnetään - -x
FILE on olemassa ja suoritus (tai haku) lupa myönnetään