Bash skriptēšana - kā pārbaudīt, vai fails pastāv
Šajā rakstā mēs uzrakstīsim bash skriptu, lai pārbaudītu, vai faili pastāv.
Sintakse :
- pārbaude [izteiksme]
- [izteiciens]
- [[ izteiksme ]]
Šeit, izteiksmē, mēs rakstām parametrs un faila nosaukums . Apskatīsim dažus parametrus, kurus var izmantot izteiksmē: -
- – f: Tas atgriež True, ja fails pastāv kā kopīgs (parasts) fails. -d: tas atgriež True, ja direktorijs pastāv. -e: tas atgriež True, ja pastāv kāda veida fails. -c: tas atgriež True, ja pastāv rakstzīmju fails. -r: tas atgriež True, ja pastāv lasāms fails.
- – In : Tas atgriež True, ja pastāv ierakstāms fails . -x: tas atgriež True, ja eksistē izpildāms fails. -p: tas atgriež True, ja fails pastāv kā caurule. -S: Tas atgriež True, ja fails pastāv kā ligzda. -s: tas atgriež True, ja fails pastāv un faila lielums nav nulle. -L: Tas atgriež True, ja pastāv simboliskās saites fails . -g : Tas atgriež True, ja fails pastāv un ir iestatīts aizturēšanas kopas grupas ID karodziņš. -G: es t atgriež True, ja fails eksistē un tajā ir tas pats grupas ID, kas tiek apstrādāts. -k : Tas atgriež True, ja fails pastāv un ir iestatīts lipīgo bitu karodziņš.
Tagad ir vēl daži parametri abu failu salīdzināšanai.
- -ef: tas atgriež True, ja abi faili pastāv un norāda vienu un to pašu failu.
Piemērs :
FirstFile -ef SecondFile
- -nt: tas atgriež True, ja FirstFile ir jaunāks par Secondfile.
Piemērs :
FirstFile -nt FileOld
- -ot: tas atgriež vērtību True, ja FirstFile ir vecāks par SecondFile.
Piemērs:
FirstFile -ot SecondFile
Ņemsim dažus piemērus, pamatojoties uz sintaksi:
- [ izteiksme ]: vispirms izveidojiet failu ar nosaukumu FirstFile.sh un ierakstiet tajā šādu skriptu
#!/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
Tagad saglabājiet un palaidiet failu, izmantojot šo komandu
$ chmod +x ./FirstFile.sh $ ./FirstFile.sh
Izvade:
Izvade
Piezīme: Tā kā fails File.txt atrodas sistēmā. Tātad, tas izdrukāts Fails pastāv.
- tests [izteiksme]: Tagad modificējiet iepriekš minēto skriptu vietnē FirstFile.sh šādi
#!/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
Tagad vēlreiz saglabājiet un palaidiet failu, izmantojot šo komandu
$ chmod +x ./FirstFile.sh $ ./FirstFile.sh
Izvade:
Izvade
Piezīme: Tā kā fails File2.txt sistēmā nav pieejams. Tātad tas izdrukāts Fails neeksistē.
- [[ izteiksme ]]: vēlreiz modificējiet iepriekš minēto skriptu failā FirstFile.sh šādi
#!/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
Tagad vēlreiz saglabājiet un palaidiet failu, izmantojot šo komandu
$ chmod +x ./FirstFile.sh $ ./FirstFile.sh
Izvade:
Izvade
Piezīme: Tā kā fails File3.txt atrodas sistēmā. Tātad, tas izdrukāts Fails pastāv.
Apskatīsim piemēru, pamatojoties uz parametriem:
- Izmantojot parametru -d: izveidojiet failu ar nosaukumu FirstDir.sh un ierakstiet tajā šādu skriptu
!/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
Tagad saglabājiet un palaidiet failu, izmantojot šo komandu
$ chmod +x ./FirstDir.sh $ ./FirstDir.sh
Izvade:
Izvade
Piezīme: Tā kā sistēmā ir GFG_dir. Tātad drukātais direktorijs pastāv.
Līdzīgi varat izmantot -f , -Tas ir , -Iekšā , -r , -c utt. (atbilstoši to lietojumam ) vietā -d lai pārbaudītu dažādu veidu failu esamību.
Apskatīsim piemēru, kura pamatā ir divu failu salīdzinājums:
- Izmantojot -nt parametrs
Izveidojiet faila nosaukumu Comparison_File.sh un uzrakstiet šādu skriptu
#!/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
Tagad saglabājiet un palaidiet failu, izmantojot šo komandu
$ chmod +x ./Comparison_File.sh $ ./Comparison_File.sh
Izvade:
Izvade
Piezīme: Tā kā sistēmā ir abi faili un fails New_File.txt ir jaunāks par Old_File.txt
Apskatīsim piemēru Pārbaudiet, vai fails neeksistē:
Izveidojiet failu ar nosaukumu Check_Exist.sh un ierakstiet tajā šādu skriptu
#!/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
Tagad saglabājiet un palaidiet failu, izmantojot šo komandu
$ chmod +x ./Check_Exist.sh $ ./Check_Exist.sh
Izvade:
Izvade
Piezīme: Faila GFG.txt sistēmā nav. Tātad, tas tiks izdrukāts Fails neeksistē
Apskatīsim piemēru, neizmantojot nosacījumu If-else :
Izveidojiet failu ar nosaukumu Geeks_File.sh un ierakstiet tajā šādu skriptu
#!/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'
Tagad saglabājiet un palaidiet failu, izmantojot šo komandu
$ chmod +x ./Geeks_File.sh $ ./Geeks_File.sh
Izvade:
Izvade
Piezīme: Tā kā fails GFG_File.txt atrodas sistēmā. Tātad, tas izdrukāts Fails pastāv.