logo

Bash pārbaudiet, vai fails eksistē

Lielāko daļu laika mēs varam atrast situāciju, kad mums, iespējams, būs jāveic darbība, kas pārbaudīs, vai fails pastāv.

Programmā Bash mēs varam izmantot “testa komandu”, lai pārbaudītu, vai fails pastāv, un noteiktu faila veidu.

Tālāk ir norādītas testa komandas sintakses, un mēs varam izmantot jebkuru no šīm komandām:

 test expression [ expression ] [[ expression ]] 

Lai mūsu skripts būtu pārnēsājams visiem POSIX čaulām, mums ir jāizmanto viena iekavas komanda “[”. Testa komandas jauninātajā versijā ir dubultiekavas “[[”, kas tiek atbalstīts lielākajā daļā mūsdienu sistēmu, kurās kā noklusējuma apvalks tiek izmantots Bash, Zsh un Ksh.

Pārbaudiet, vai fails eksistē

Pārbaudot, vai fails pastāv, visbiežāk izmantotie failu operatori ir -e un -f. Opciju “-e” izmanto, lai pārbaudītu, vai fails pastāv neatkarīgi no tā veida, savukārt opcija “-f” tiek izmantota, lai atgrieztu patieso vērtību tikai tad, ja fails ir parasts fails (nevis direktorijs vai ierīce).

Visizplatītākā iespēja, lai pārbaudītu, vai fails pastāv, ir izmantot testa komandu ar “if nosacījuma paziņojumu”.

Tālāk ir sniegti piemēri, lai pārbaudītu, vai fails 'read_file.txt' pastāv:

1. metode

 #!/bin/bash File=read_file.txt if test -f '$File'; then echo '$File exist ' fi 

2. metode

 #!/bin/bash File=read_file.txt if [ -f '$File' ]; then echo '$File exist ' fi 

3. metode

 #!/bin/bash File=read_file.txt if [[ -f '$File' ]]; then echo '$File exist ' fi 

Izvade

Visu trīs metožu izvade būs šāda, jo direktorijā ir fails (read_file.txt):

java šķirošanas saraksts
 read_file.txt exist 

Ja mēs vēlamies veikt darbību, kas nodrošinās rezultātu, pamatojoties uz to, vai fails pastāv vai ne, mēs varam izmantot if/then konstrukciju šādā veidā:

Piemērs

 #!/bin/bash File=read_file.txt if [ -f '$File' ]; then echo '$File exist' else echo '$File does not exist' fi 

Izvade

 read_file.txt exist 

Mēs varam izmantot arī testa komandu bez if paziņojuma. Mēs varam izmantot jebkuru no šīm metodēm:

1. metode

 #!/bin/bash File=read_file.txt test -f read_file.txt && echo '$File exist' 

2. metode

 #!/bin/bash File=read_file.txt [ -f read_file.txt ] && echo '$File exist' 

3. metode

 #!/bin/bash File=read_file.txt [[ -f read_file.txt ]] && echo '$File exist' 

Izvade

Visu trīs metožu izvade būs šāda, jo direktorijā ir fails (read_file.txt):

 read_file.txt exist 

Ja aiz operatora && ir jāizpilda vairākas komandas, ievietojiet komandas cirtainās iekavās, atdalot tās ar semikolu (;) vai AND (&&), t.i.:

Piemērs

 #!/bin/bash File=read_file.txt [ -f read_file.txt ] && { echo '$File exist'; echo 'Task Completed'; } 

Atšķirībā no &&, paziņojums aiz || operators tiek izpildīts tikai tad, ja testa komandas izejas statuss ir “false”.

Piemērs

 #!/bin/bash File=read_file.txt [ -f read_file.txt ] && echo '$File exist' || echo '$File does not exist' 

Izvade

 read_file.txt exist 

Šīs ir Bash visbiežāk izmantotās metodes, lai pārbaudītu, vai fails pastāv vai ne.

Pārbaudiet, vai direktorijs pastāv

Operators “-d” ļauj mums pārbaudīt, vai fails ir vai nav direktorijs.

Tālāk ir norādītas metodes, lai pārbaudītu, vai 'Javatpoint' direktorijs pastāv:

int virknē java

1. metode

 #!/bin/bash File=Javatpoint if [ -d '$File' ]; then echo '$File is a directory' fi 

2. metode

 #!/bin/bash File=Javatpoint [ -d '$File' ] && echo '$File is a directory' 

Piezīme:Mēs varam arī izmantot dubultiekavas '[[' vienas iekavas '[' vietā.

Izvade

Abu iepriekš minēto metožu izvade būs šāda, jo norādītajā vietā mums ir direktorijs (ar nosaukumu Javatpoint):

 Javatpoint is a directory 

Pārbaudiet, vai fails neeksistē

Testa izteiksmi var noliegt, izmantojot izsaukuma zīmi (! -logical NOT operators). Apskatiet šādu piemēru:

Piemērs

 #!/bin/bash File=missing_read_file.txt if [ ! -f '$File' ]; then echo '$File does not exist' fi 

Iepriekš minēto skriptu var uzrakstīt arī šādi:

 #!/bin/bash File=missing_read_file.txt [ ! -f '$File' ] && echo '$File unavailable' 

Izvade

 missing_read_file.txt unavailable 

Failu pārbaudes operatori

Testa komandas ietver šādus failu operatorus, kas ļauj mums pārbaudīt noteiktu veidu failus:

-b Failu atgriež “True”, ja FILE pastāv kā bloka īpašs fails.
-c Failu atgriež “True”, ja FILE pastāv kā speciālo rakstzīmju fails.
-d Failu atgriešana “True”, ja FILE pastāv kā direktorijs.
-e Failu atgriešana “True”, ja FILE pastāv kā fails neatkarīgi no tā veida (mezgls, direktorijs, ligzda utt.).
-f Fails atgriež “True”, ja FILE pastāv kā parasts fails (nevis direktorijs vai ierīce).
-G faila atgriešana “True”, ja FILE pastāv un tajā ir tā pati grupa, kurā lietotājs izpilda komandu.
-h Fails atgriež “True”, ja FILE pastāv kā simboliska saite.
-g Fails atgriež “True”, ja FILE pastāv un satur set-group-id (sgid) karoga kopu.
-k Fails atgriež “True”, ja FILE pastāv un tajā ir lipīgo bitu karoga kopa.
-L Failu atgriešana “True”, ja FILE pastāv kā simboliska saite.
-O Failu atgriešana “True”, ja FILE pastāv un pieder lietotājam, kurš izpilda komandu.
-p Fails atgriež “True”, ja FILE pastāv kā caurule.
-r Fails atgriež “True”, ja FILE pastāv kā lasāms fails.
-S faila atgriešana “True”, ja FILE pastāv kā ligzda.
-s Failu atgriešana “True”, ja FILE pastāv un tā lielums nav vienāds ar nulli.
-u Failu atgriešana “True”, ja FILE pastāv un ir iestatīts karogs set-user-id (suid).
-w Fails atgriež “True”, ja FILE pastāv kā ierakstāms fails.
-x fails atgriež “True”, ja FILE pastāv kā izpildāms fails.