Când lucrați cu scripturile Bash și shell, poate fi necesar să verificați dacă un director sau un fișierul există sau nu în sistemul dvs. de fișiere.
Pe baza acestei condiții, puteți ieși din script sau afișa un mesaj de avertizare pentru utilizatorul final, de exemplu.
Pentru a verifica dacă un fișier sau un director există cu Bash, veți folosi „teste Bash”.
În acest tutorial, veți afla cum să verificați dacă există un fișier sau director într-un script Bash.
Cuprins
Verificați dacă există fișier
Pentru a verifica dacă există un fișier în Bash , trebuie să utilizați opțiunea „-f” (pentru fișier) și să specificați fișierul pe care doriți să îl verificați.
De exemplu, să spunem că doriți să verificați dacă fișierul „/ etc / passwd” există sau nu pe sistemul dvs. de fișiere.
Într-un script, ați scrie următoarele dacă declarație.
Verificați existența fișierului utilizând formulare mai scurte
În unele cazuri, este posibil să fiți interesat să verificați dacă există sau nu un fișier direct în shell-ul dvs. Bash.
Pentru a verifica dacă există un fișier în Bash folosind formulare mai scurte, specificați opțiunea „-f” între paranteze și adăugați comanda pe care doriți să o rulați dacă reușește.
Folosind exemplul folosit anterior, dacă doriți să verificați dacă fișierul „/ etc / passwd” există folosind formulare mai scurte, scrieți următoarea comandă
Deci, cum funcționează această comandă?
Formularele mai scurte sunt strâns legate de stările de ieșire.
Când executați o comandă pe Bash, ea iese întotdeauna cu o stare de eroare: 0 pentru erori și numere mai mari de 0 pentru erori (1, 2 .. 6 și așa mai departe)
În acest caz, sintaxa „& &” va verifica dacă starea de ieșire a comenzii din stânga este egal cu zero: dacă acesta este cazul, va executa comanda din dreapta, altfel nu o va executa.
Protip: puteți utilizați „echo $ {?}” pentru a vedea starea de ieșire a ultimei comenzi executate
Verificarea mai multor fișiere
În în unele cazuri, poate doriți să verificați dacă există mai multe fișiere pe sistemul dvs. de fișiere sau nu.
Pentru a verifica dacă există mai multe fișiere în Bash, utilizați marcajul „-f” și specificați fișierele care trebuie verificate separat de operatorul „& &”.
Verificați dacă fișierul nu există
Pe de altă parte, vă recomandăm să verificați dacă un fișier nu există în sistemul dvs. de fișiere.
Pentru a verifica dacă un fișier nu există folosind Bash, trebuie să folosiți „!” simbol urmat de opțiunea „-f” și fișierul pe care doriți să îl verificați.
În mod similar, puteți utiliza formulare mai scurte dacă doriți să verificați rapid dacă un fișier nu există direct în terminalul dvs.
Rețineți că este, de asemenea, posibil să verificați dacă un fișier nu există folosind „||” operator.
„||” operatorul va executa comanda din dreapta dacă și numai dacă comanda din stânga eșuează (adică iese cu o stare mai mare de zero).
Pentru a testa dacă un fișier nu există folosind „||” operator, pur și simplu verificați dacă există folosind semnalizatorul „-f” și specificați comanda de executat dacă nu reușește.
Verificați dacă directorul există
Pentru a verifica dacă există un director în Bash, trebuie să utilizați opțiunea „-d” și să specificați numele directorului care trebuie verificat.
Ca exemplu, să presupunem că doriți să verificați cu Bash dacă directorul / etc există în sistemul dvs.
Pentru a verifica existența acestuia, ați scrie următorul script Bash
Când executați acest script, veți obține următoarea ieșire
Verificați existența directorului utilizând formulare mai scurte
În unele cazuri, ați putea fi interesat să verificați dacă există sau nu un director direct în shell-ul dvs. Bash.
Pentru a verifica dacă există un director în Bash utilizând mai scurt , specificați opțiunea „-d” între paranteze și adăugați comanda pe care doriți să o rulați dacă reușește.
Să spunem că doriți să verificați dacă directorul„ / etc ”există, de exemplu.
Folosind sintaxa mai scurtă, veți scrie următoarea comandă.
Crearea unui script Bash complet
Dacă vă constatați că verificați de mai multe ori pe zi dacă există sau nu un fișier (sau mai multe) pe sistemul de fișiere, ar putea fi la îndemână pentru a avea un script care poate automatiza această sarcină.
În această secțiune, veți crea un script Bash care poate lua mai multe nume de fișiere și se poate întoarce dacă există sau nu.
Dacă nu, un mesaj de notificare simplu va fi afișat pe ieșirea standard.
Creați un nou script Bash și faceți executabil folosind chmod.
Iată conținutul scriptului care va fi utilizat pentru a verifica dinamic dacă există fișiere.
Salvați scriptul și adăugați folderul „bin” pe care tocmai l-ați creat în variabila de mediu PATH.
Acum că scriptul dvs. este accesibil oriunde vă aflați în sistem, puteți să îl apelați și să începeți verificarea dacă există sau nu fișiere.
Minunat!
Ați creat un obiect personalizat pentru a verifica dacă fișierele există sau nu pe sistemul de fișiere.
Concluzie
În acest tutorial, ați aflat cum puteți verifica dacă un fișier există sau nu folosind testele Bash și sintaxa scurtă Bash.
În mod similar, ați învățat cum este posibil să verificați dacă există un director.
În cele din urmă, ați scris un script Bash complet care acceptă argumente dinamice pentru a verifica dacă există sau nu mai multe fișiere.
Dacă sunteți interesat de programarea Bash sau de administrarea sistemului Linux, avem o secțiune completă dedicată acestuia pe site, așa că asigurați-vă că o verificați!