logo

Bash Scripting – Kako preveriti, ali datoteka obstaja

V tem članku bomo napisali skript bash za preverjanje, ali datoteke obstajajo ali ne.

Sintaksa:

  • test [izraz]
  • [ izraz ]
  • [[ izraz ]]

Tukaj v izrazu pišemo parameter in Ime datoteke . Poglejmo nekaj parametrov, ki jih je mogoče uporabiti v izrazu: –



  • f: Vrne True, če datoteka obstaja kot običajna (običajna) datoteka.
  • -d: vrne True, če imenik obstaja. -e : vrne True, če obstaja katera koli vrsta datoteke. -c : vrne True, če znakovna datoteka obstaja. -r : vrne True, če obstaja berljiva datoteka.
  • noter : vrne True, če obstaja zapisljiva datoteka .
  • -x : vrne True, če obstaja izvršljiva datoteka. -p : vrne True, če datoteka obstaja kot cev. -S : vrne True, če datoteka obstaja kot vtičnica. -s: vrne True, če datoteka obstaja in velikost datoteke ni enaka nič. -L : vrne True, če datoteka s simbolno povezavo obstaja . -g : vrne True, če datoteka obstaja in je nastavljena zastavica id-ja zadrži nastavljeno skupino. -G : jaz t vrne True, če datoteka obstaja in ima isti ID skupine, kot je v obdelavi. -k : vrne True, če datoteka obstaja in je nastavljena zastavica lepljivega bita.

Zdaj je na voljo še nekaj parametrov za primerjavo med obema datotekama.

    -ef: vrne True, če obe datoteki obstajata in označujeta isto datoteko.

Primer:

FirstFile -ef SecondFile>
    -nt: vrne True, če je FirstFile novejša od Secondfile.

Primer:



pawandeep rajan
FirstFile -nt FileOld>
    -ot: vrne True, če je FirstFile starejša od SecondFile.

primer:

FirstFile -ot SecondFile>

Vzemimo nekaj primerov na podlagi sintakse:

    [ izraz ]: Najprej ustvarite datoteko z imenom FirstFile.sh in vanjo napišite naslednji skript
#!/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>

Zdaj shranite in zaženite datoteko z naslednjim ukazom

$ chmod +x ./FirstFile.sh $ ./FirstFile.sh>

Izhod:



Izhod

Opomba: Ker je datoteka File.txt prisotna v sistemu. Torej je natisnjeno Datoteka obstaja.

    test [izraz]: Zdaj spremenite zgornji skript v FirstFile.sh, kot sledi
#!/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>

Zdaj znova shranite in zaženite datoteko z naslednjim ukazom

rimske številke 1-100
$ chmod +x ./FirstFile.sh $ ./FirstFile.sh>

Izhod:

Izhod

Opomba: Ker File2.txt ni prisoten v sistemu. Torej je natisnjeno Datoteka ne obstaja.

    [[ izraz ]]: Znova spremenite zgornji skript v FirstFile.sh, kot sledi
#!/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>

Zdaj znova shranite in zaženite datoteko z naslednjim ukazom

 $ chmod +x ./FirstFile.sh $ ./FirstFile.sh>

Izhod:

Izhod

Opomba: Ker je datoteka File3.txt prisotna v sistemu. Torej je natisnjeno Datoteka obstaja.

Oglejmo si primer, ki temelji na parametrih:

    Uporaba parametra -d: ustvarite datoteko z imenom FirstDir.sh in vanj napišite naslednji skript
!/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>

Zdaj shranite in zaženite datoteko z naslednjim ukazom

ipconfig za ubuntu
$ chmod +x ./FirstDir.sh $ ./FirstDir.sh>

Izhod:

Izhod

Opomba: Ker je GFG_dir prisoten v sistemu. Torej, natisnjeno Imenik obstaja.

Podobno lahko uporabite -f , -Je , -Noter , -r , -c itd. (glede na njihovo uporabo) namesto -d za preverjanje obstoja različnih vrst datotek.

Oglejmo si primer, ki temelji na primerjavi dveh datotek:

  • Uporaba -nt parameter

Ustvarite datoteko z imenom Comparison_File.sh in napišite naslednji skript

#!/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>

Zdaj shranite in zaženite datoteko z naslednjim ukazom

 $  chmod +x ./Comparison_File.sh $ ./Comparison_File.sh>

Izhod:

Izhod

Opomba: Ker sta obe datoteki prisotni v sistemu in je New_File.txt novejša od Old_File.txt

logotip java

Oglejmo si primer Preveri, če datoteka ne obstaja:

Ustvarite datoteko z imenom Check_Exist.sh in vanj napišite naslednji skript

#!/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>

Zdaj shranite in zaženite datoteko z naslednjim ukazom

 $ chmod +x ./Check_Exist.sh $  ./Check_Exist.sh>

Izhod:

Izhod

Opomba: GFG.txt ni prisoten v sistemu. Torej bo natisnjeno Datoteka ne obstaja

Oglejmo si primer brez uporabe pogoja If-else:

Ustvarite datoteko z imenom Geeks_File.sh in vanjo napišite naslednji skript

#!/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'>

Zdaj shranite in zaženite datoteko z naslednjim ukazom

 $ chmod +x ./Geeks_File.sh $ ./Geeks_File.sh>

Izhod:

Izhod

Opomba: Ker je datoteka GFG_File.txt prisotna v sistemu. Torej je natisnjeno Datoteka obstaja.