Cum să verificați dacă există un fișier sau un director în Bash

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:

Utilizați întotdeauna ghilimele duble pentru a evita problemele atunci când vă ocupați de fișiere conținând spații albe în numele lor.

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.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *