De multe ori când scrieți scripturi Shell, vă puteți găsi într-o situație în care trebuie să efectuați o acțiune bazată pe existența sau nu a unui fișier .
În Bash, puteți utiliza comanda test pentru a verifica dacă există un fișier și pentru a determina tipul fișierului.
Comanda test are una dintre următoarele forme de sintaxă:
Dacă doriți ca scriptul dvs. să fie portabil, ar trebui să preferați să folosiți vechiul test ; then echo "$FILE exists."fi
Dacă doriți să efectuați o acțiune diferită în funcție de existența sau nu a fișierului pur și simplu utilizați construcția if / then:
Puteți utiliza și comanda test fără instrucțiunea if. Comanda după operatorul &&
va fi executată numai dacă starea de ieșire a comenzii de testare este adevărată,
Dacă doriți să rulați o serie de comenzi după ce operatorul &&
include pur și simplu comenzile între paranteze bucle separate de ;
sau &&
:
Opus &&
, declarația de după ||
operatorul va fi executat numai dacă starea de ieșire a comenzii de testare este false
.
Verificați dacă Directory Exist #
Operatorii -d
vă permit să testați dacă un fișier este un director sau nu.
De exemplu, pentru a verifica dacă există directorul /etc/docker
, veți utiliza:
Puteți utiliza și paranteze duble ; then echo "$FILE does not exist."fi
La fel ca mai sus:
Verificați dacă există mai multe fișiere #
În loc să folosiți construcții imbricate complicate dacă / else puteți utiliza -a
(sau &&
cu ; then echo "Both files exist."fi
Variante echivalente fără utilizarea instrucțiunii IF:
Operatori de testare a fișierelor #
Comanda de testare include următorii operatori FILE care vă permit să testați anumite tipuri de fișiere:
-
-b
FILE
– Adevărat dacă FIȘIERUL există și este un fișier bloc special. -
-c
FILE
– Adevărat dacă FIȘIERUL există și este un fișier de caractere special. -
-d
FILE
– Adevărat dacă FIȘIERUL există și este un director. -
-e
FILE
– Adevărat dacă FIȘIERUL există și este un fișier, indiferent de tip (nod, director, soclu etc.). -
-f
FILE
– Adevărat dacă FIȘIERUL există și este un fișier obișnuit (nu un director sau un dispozitiv). -
-G
FILE
– Adevărat dacă FIȘIERUL există și are același grup cu utilizatorul care execută comanda. -
-h
FILE
– Adevărat dacă FIȘIERUL există și este o legătură simbolică. -
-g
FILE
– Adevărat dacă FIȘIERUL există și are set-group-id (sgid
) setat. -
-k
FILE
– Adevărat dacă FIȘIERUL există și are setat un semnalizator de biți lipicios. -
-L
– Adevărat dacă FIȘIERUL există și este o legătură simbolică. -
-O
FILE
– Adevărat dacă FIȘIERUL există și este deținut de utilizatorul care execută comanda. -
-p
FILE
– Adevărat dacă FIȘIERUL există și este o conductă. -
-r
FILE
– Adevărat dacă FIȘIERUL există și este lizibil. -
-S
FILE
– Adevărat dacă FIȘIERUL există și este un socket. -
-s
FILE
– Adevărat dacă FIȘIERUL există și are dimensiuni diferite de zero. -
-u
FILE
– Adevărat dacă FIȘIERUL există și dacă setul set-user-id (suid
) este setat. -
-w
FILE
– Adevărat dacă FIȘIERUL există și se poate scrie. -
-x
FILE
– Adevărat dacă FIȘIERUL există și este exe decupabil.
Concluzie #
În acest ghid, v-am arătat cum să verificați dacă există un fișier sau un director în Bash.