De cele mai multe ori, putem găsi o situație în care ar putea fi necesar să efectuăm o acțiune care să verifice dacă există sau nu un fișier.
În Bash, putem folosi o „comandă de testare” pentru a verifica dacă există un fișier și pentru a determina tipul unui fișier.
Următoarele sunt sintaxele comenzii de testare și poate utiliza oricare dintre aceste comenzi:
Ni se cere să folosim o singură paranteză comanda „[” pentru a face scriptul nostru portabil pentru toate shell-urile POSIX. Versiunea actualizată a comenzii de testare conține paranteze duble „[[” care este acceptată pe majoritatea sistemelor moderne care utilizează Bash, Zsh și Ksh ca shell implicit.
Verificați dacă fișierul există
În timp ce verificați dacă există un fișier, cei mai utilizați operatori de fișiere sunt -e și -f. Opțiunea „-e” este utilizată pentru a verifica dacă există un fișier indiferent de tip, în timp ce opțiunea „-f” este utilizată pentru a returna valoarea adevărată numai dacă fișierul este un fișier obișnuit (nu un director sau un dispozitiv).
Cea mai obișnuită opțiune pentru a verifica dacă fișierul există sau nu este să folosiți comanda test cu instrucțiunea „if condițională”.
Următoarele sunt exemplele pentru a verifica dacă fișierul „read_file”. txt „fișier există:
Metoda 1
Metoda 2
Metoda 3
Ieșire
Ieșirea pentru toate cele trei metode va fi cea de mai jos, deoarece avem un fișier (read_file.txt) prezent în director:
read_file.txt exist
Dacă dorim să efectuăm o acțiune care va oferi un rezultat bazat pe existența sau nu a fișierului, putem utiliza construcția if / then din următorul mod:
Exemplu
Ieșire
read_file.txt exist
Putem folosi și comanda test fără instrucțiunea if. Putem folosi oricare dintre următoarele metode:
Metoda 1
Metoda 2
Metoda 3
Ieșire
Ieșirea pentru toate cele trei metode va fi cea de mai jos, deoarece avem un fișier (read_file.txt) prezent în director:
read_file.txt exist
Exemplu
Spre deosebire de & &, declarația de după || operatorul este executat numai dacă starea de ieșire a comenzii de testare este „falsă”.
Exemplu
Ieșire
read_file.txt exist
Acestea sunt metodele utilizate în mod obișnuit în Bash pentru a verifica dacă fișierul există sau nu.
Verificați dacă directorul există
Operatorul „-d” ne permite să testăm dacă un fișier este sau nu un director.
Următoarele sunt metodele pentru a verifica dacă directorul „Javatpoint” există:
Metoda 1
Metoda 2
Notă: Putem folosi și paranteze duble „[[” în loc de o paranteză simplă „[” .
Ieșire
Ieșirea pentru ambele metode de mai sus va fi la fel de jos pe cât avem un director (numit Javatpoint) prezent în locația specificată:
Javatpoint is a directory
Verificați dacă fișierul nu există
Expresia testului poate fi negată folosind semnul exclamării (operator! -logical NOT). Consultați următorul exemplu:
Exemplu
Scriptul de mai sus poate fi scris și mai jos:
Ieșire
missing_read_file.txt unavailable
Operatori de testare a fișierelor
Comenzile de testare includ următorii operatori de fișiere care ne permit să test pentru anumite tipuri de fișiere:
-b FileReturns | „True” dacă FIȘIERUL există ca un bloc special fișier. |
-c FileReturns | „Adevărat” dacă FIȘIERUL există ca fișier cu caractere speciale. |
-d FileReturns | „True” dacă FIȘIERUL există ca director. |
-e FileReturns | „True „dacă FIȘIERUL există ca fișier, indiferent de tip (nod, director, soclu etc.). |
-f FileReturns | „ True ” dacă FIȘIERUL există ca fișier obișnuit (nu ca director sau dispozitiv). |
-G FileReturns | „Adevărat” dacă FIȘIERUL există și conține același grup cu utilizatorul rulează comunicarea și. |
-h FileReturns | „Adevărat” dacă FIȘIERUL există ca o legătură simbolică. |
-g FileReturns | „True” dacă FIȘIERUL există și conține set-group-id (sgid) set de semnalizatori. |
-k FileReturns | „Adevărat” dacă FIȘIERUL există și conține un set de semnalizatori de biți lipicioși. |
-L FileReturns | „Adevărat” dacă FILE există ca o legătură simbolică. |
-O FileReturns | „True” dacă FILE există și este deținut de utilizatorul care execută comanda. |
-p FileReturns | „Adevărat” dacă FIȘIERUL există ca o conductă. |
– r FileReturns | „True” dacă FIȘIERUL există ca fișier lizibil. |
-S FileReturns | „True” dacă FILE există ca soclu. |
-s FileReturns | „Adevărat” dacă FIȘIERUL există și are dimensiuni diferite de zero. |
-u FileReturns | „Adevărat” dacă FIȘIERUL există, iar set-user-id (suid) este setat. |
-w FileReturns | „Adevărat” dacă FIȘIERUL există ca fișier care se poate scrie. |
-x FileReturns | „Adevărat” dacă FIȘIERUL există ca fișier executabil. |