Bash-komentosarjat - Kuinka tarkistaa, onko tiedosto olemassa

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.