Bash-komentosarjat - Kuinka tarkistaa, onko tiedosto olemassa
Tässä artikkelissa kirjoitamme bash-komentosarjan tarkistaaksemme, onko tiedostoja olemassa vai ei.
Syntaksi :
- testi [lauseke]
- [ ilmaisu ]
- [[ ilmaisu ]]
Tässä ilmaisussa kirjoitamme parametri ja Tiedoston nimi . Katsotaanpa joitain parametreja, joita voidaan käyttää lausekkeessa: –
- – f: Se palauttaa True, jos tiedosto on olemassa yleisenä (tavallisena) tiedostona. -d : palauttaa True, jos hakemisto on olemassa. -e : Palauttaa True, jos jokin tiedostotyyppi on olemassa. -c : Palauttaa True, jos merkkitiedosto on olemassa. -r : Palauttaa True, jos luettava tiedosto on olemassa.
- – Sisään : Palauttaa True, jos kirjoitettava tiedosto on olemassa . -x : Palauttaa True-arvon, jos suoritettava tiedosto on olemassa. -p : Palauttaa True, jos tiedosto on olemassa putkena. -S : Palauttaa True, jos tiedosto on olemassa socketina. -s : se palauttaa arvon True, jos tiedosto on olemassa ja tiedoston koko ei ole nolla. -L : Palauttaa True, jos symbolisen linkin tiedosto on olemassa . -g : Palauttaa True, jos tiedosto on olemassa ja hold set group id -lippu on asetettu. -G : minä t palauttaa arvon True, jos tiedosto on olemassa ja sillä on sama ryhmätunnus, joka on käynnissä. -k : Palauttaa True, jos tiedosto on olemassa ja sticky bit -lippu on asetettu.
Nyt on joitain muita parametreja näiden kahden tiedoston vertailua varten.
- -ef: Palauttaa True, jos molemmat tiedostot ovat olemassa ja osoittavat samaa tiedostoa.
Esimerkki:
FirstFile -ef SecondFile
- -nt: Palauttaa True, jos FirstFile on uudempi kuin Secondfile.
Esimerkki:
FirstFile -nt FileOld
- -ot: Palauttaa True, jos FirstFile on vanhempi kuin SecondFile.
Esimerkki:
FirstFile -ot SecondFile
Otetaan muutamia esimerkkejä syntaksin perusteella:
- [ lauseke ]: Luo ensin tiedosto nimeltä FirstFile.sh ja kirjoita siihen seuraava komentosarja
#!/bin/bash # using [ expression ] syntax and in place # of File.txt you can write your file name if [ -f 'File.txt' ]; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi
Tallenna ja suorita nyt tiedosto seuraavalla komennolla
$ chmod +x ./FirstFile.sh $ ./FirstFile.sh
Lähtö:
Lähtö
Huomautus: Koska tiedosto.txt on järjestelmässä. Joten se tulostettu Tiedosto on olemassa.
- testi [lauseke]: Muokkaa nyt yllä olevaa komentosarjaa FirstFile.sh:ssa seuraavasti
#!/bin/bash # using test expression syntax and in place # of File2.txt you can write your file name if test -f 'File2.txt' ; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi
Tallenna ja suorita tiedosto nyt uudelleen seuraavalla komennolla
$ chmod +x ./FirstFile.sh $ ./FirstFile.sh
Lähtö:
Lähtö
Huomautus: Koska tiedosto2.txt ei ole järjestelmässä. Joten se tulostettu Tiedostoa ei ole olemassa.
- [[ lauseke ]]: Muokkaa yllä olevaa komentosarjaa FirstFile.sh-tiedostossa uudelleen seuraavasti
#!/bin/bash # using [[ expression ]] syntax and in place # of File3.txt you can write your file name if test -f 'File3.txt' ; then # if file exist the it will be printed echo 'File is exist' else # is it is not exist then it will be printed echo 'File is not exist' fi
Tallenna ja suorita tiedosto nyt uudelleen seuraavalla komennolla
$ chmod +x ./FirstFile.sh $ ./FirstFile.sh
Lähtö:
Lähtö
Huomautus: Koska tiedosto3.txt on läsnä järjestelmässä. Joten se tulostettu tiedosto on olemassa.
Katsotaanpa esimerkkiä parametrien perusteella:
- Parametrin -d käyttäminen: Luo tiedosto nimeltä FirstDir.sh ja kirjoita siihen seuraava kirjoitus
!/bin/bash if [[ -d 'GFG_dir' ]] ; # Here GFG_dir is directory and in place of GFG_dir you can write your Directory name then echo 'Directory is exist' # If GFG_dir exist then it will be printed else echo 'Directory is not exist' # If GFG_dir is not exist then it will be printed fi
Tallenna nyt ja suorita tiedosto seuraavalla komennolla
$ chmod +x ./FirstDir.sh $ ./FirstDir.sh
Lähtö:
Lähtö
Huomautus: Koska GFG_dir on järjestelmässä. Joten se painettu hakemisto on olemassa.
Vastaavasti voit käyttää -f , -Se on , -Sisään , -r , -c ,jne. ( niiden käyttötarkoitusten mukaan ) tilalle -d erityyppisten tiedostojen olemassaolon tarkistamiseen.
Katsotaanpa esimerkkiä, joka perustuu kahden tiedoston vertailuun:
- Käyttämällä -nt parametri
Luo tiedostonimi Comparison_File.sh ja kirjoita seuraava komentosarja
#!/bin/bash # New_file.txt and Old_File.txt are names of two files. if [[ 'New_File.txt' -nt 'Old_File.txt' ]] ; then # This will be printed if Condition is true echo 'New_File.txt is newer than Old_File.txt' else # This will be printed if Condition is False echo 'New_File.txt is not newer than Old_File.txt' fi
Tallenna nyt ja suorita tiedosto seuraavalla komennolla
$ chmod +x ./Comparison_File.sh $ ./Comparison_File.sh
Lähtö:
Lähtö
Huomautus: Koska molemmat tiedostot ovat järjestelmässä ja New_File.txt on uudempi kuin Old_File.txt
Katsotaanpa esimerkkiä Tarkista, ettei tiedostoa ole olemassa:
Luo tiedosto nimeltä Check_Exist.sh ja kirjoita siihen seuraava kirjoitus
#!/bin/bash # using ! before -f parameter to check if # file does not exist if [[ ! -f 'GFG.txt' ]] ; then # This will printed if condition is True echo 'File is not exist' else # This will be printed if condition is False echo 'File is exist' fi
Tallenna nyt ja suorita tiedosto seuraavalla komennolla
$ chmod +x ./Check_Exist.sh $ ./Check_Exist.sh
Lähtö:
Lähtö
Huomautus: GFG.txt-tiedostoa ei ole järjestelmässä. Joten se tulostaa Tiedostoa ei ole olemassa
Katsotaanpa esimerkkiä ilman If-else-ehtoa:
Luo tiedosto nimeltä Geeks_File.sh ja kirjoita siihen seuraava komentosarja
#!/bin/bash # If File exist then first statement will be # printed and if it is not exist then 2nd # statement will be printed. [ -f 'GFG_File.txt' ] && echo 'File is exist' || echo 'File is not exist'
Tallenna nyt ja suorita tiedosto seuraavalla komennolla
$ chmod +x ./Geeks_File.sh $ ./Geeks_File.sh
Lähtö:
Lähtö
Huomautus: Koska GFG_File.txt on järjestelmässä. Joten se tulostettu tiedosto on olemassa.