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:
-
-bFILE– Adevărat dacă FIȘIERUL există și este un fișier bloc special. -
-cFILE– Adevărat dacă FIȘIERUL există și este un fișier de caractere special. -
-dFILE– Adevărat dacă FIȘIERUL există și este un director. -
-eFILE– Adevărat dacă FIȘIERUL există și este un fișier, indiferent de tip (nod, director, soclu etc.). -
-fFILE– Adevărat dacă FIȘIERUL există și este un fișier obișnuit (nu un director sau un dispozitiv). -
-GFILE– Adevărat dacă FIȘIERUL există și are același grup cu utilizatorul care execută comanda. -
-hFILE– Adevărat dacă FIȘIERUL există și este o legătură simbolică. -
-gFILE– Adevărat dacă FIȘIERUL există și are set-group-id (sgid) setat. -
-kFILE– 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ă. -
-OFILE– Adevărat dacă FIȘIERUL există și este deținut de utilizatorul care execută comanda. -
-pFILE– Adevărat dacă FIȘIERUL există și este o conductă. -
-rFILE– Adevărat dacă FIȘIERUL există și este lizibil. -
-SFILE– Adevărat dacă FIȘIERUL există și este un socket. -
-sFILE– Adevărat dacă FIȘIERUL există și are dimensiuni diferite de zero. -
-uFILE– Adevărat dacă FIȘIERUL există și dacă setul set-user-id (suid) este setat. -
-wFILE– Adevărat dacă FIȘIERUL există și se poate scrie. -
-xFILE– 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.