Quando si lavora con Bash e gli script di shell, potrebbe essere necessario controllare se una directory o una esiste o meno sul tuo filesystem.
In base a questa condizione, puoi uscire dallo script o visualizzare un messaggio di avviso per lutente finale, ad esempio.
Per verificare se un esiste un file o una directory con Bash, utilizzerai “Bash test”.
In questo tutorial imparerai come controllare se un file o una directory esiste in uno script Bash.
Sommario
Controlla se il file esiste
Per controllare se esiste un file in Bash , devi usare lopzione “-f” (per file) e specificare il file che vuoi controllare.
Ad esempio, diciamo che vuoi controllare se il file “/ etc / passwd” esiste o meno sul tuo filesystem.
In uno script, dovresti scrivere quanto segue se istruzione.
Controlla lesistenza del file utilizzando moduli più brevi
In alcuni casi, potresti essere interessato a controllare se un file esiste o meno direttamente nella tua shell Bash.
Per verificare se esiste un file in Bash utilizzando forme più brevi, specifica lopzione “-f” tra parentesi e aggiungi il comando che vuoi eseguire se ha successo.
Usando lesempio usato prima, se vuoi controllare se il file “/ etc / passwd” esiste usando forme più brevi, scrivi il seguente comando
Allora come funziona questo comando?
Le forme più brevi sono strettamente correlate agli stati di uscita.
Quando esegui un comando su Bash, esce sempre con uno stato di errore: 0 per errori e numeri maggiori di 0 per errori (1, 2 .. 6 e così via)
In questo caso, la sintassi “& &” controllerà se lo stato di uscita del comando a sinistra è uguale a zero: se è così, eseguirà il comando a destra, altrimenti non lo eseguirà.
Protip: puoi usa “echo $ {?}” per vedere lo stato di uscita dellultimo comando eseguito
Controllo di più file
In in alcuni casi, potresti voler controllare se più file esistono o meno sul tuo filesystem.
Per controllare se più file esistono in Bash, usa il flag “-f” e specifica i file da controllare separati dalloperatore “& &”.
Controlla se il file non esiste
Daltra parte, potresti voler controllare se un file non esiste sul tuo filesystem.
Per controllare se un file non esiste usando Bash, devi usare il “!” simbolo seguito dallopzione “-f” e dal file che desideri controllare.
Allo stesso modo, puoi utilizzare moduli più brevi se desideri controllare rapidamente se un file non esiste direttamente nel tuo terminale.
Tieni presente che è anche possibile controllare se un file non esiste utilizzando “||” operatore.
Loperatore “||” Loperatore eseguirà il comando a destra se e solo se il comando a sinistra fallisce (cioè esce con uno stato maggiore di zero).
Per verificare se un file non esiste usando il “||” operatore, controlla semplicemente se esiste utilizzando il flag “-f” e specifica il comando da eseguire se fallisce.
Controlla se la directory esiste
Per controllare se una directory esiste in Bash, devi usare lopzione “-d” e specificare il nome della directory da controllare.
Come esempio, diciamo che vuoi controllare con Bash se la directory / etc esiste sul tuo sistema.
Per verificarne lesistenza, dovresti scrivere il seguente script Bash
Quando si esegue questo script, si otterrà il seguente output
Controlla lesistenza della directory utilizzando forme più brevi
In alcuni casi, potresti essere interessato a controllare se una directory esiste o meno direttamente nella tua shell Bash.
Per controllare se esiste una directory in Bash usando short moduli, specifica lopzione “-d” tra parentesi e aggiungi il comando che desideri eseguire se riesce.
Supponiamo che tu voglia controllare se la directory” / etc “esiste, ad esempio.
Usando la sintassi più breve, dovresti scrivere il seguente comando.
Creazione di uno script Bash completo
Se ti ritrovi a controllare più volte al giorno se un file (o più) esiste o meno sul tuo filesystem, potrebbe essere utile avere uno script in grado di automatizzare questo compito.
In questa sezione creerai uno script Bash che può accettare più nomi di file e restituirli se esistono o meno.
In caso contrario, verrà visualizzato un semplice messaggio di notifica sullo standard output.
Crea un nuovo script Bash e rendilo eseguibile utilizzando chmod.
Di seguito è riportato il contenuto dello script da utilizzare per verificare dinamicamente se i file esistono.
Salva lo script e aggiungi la cartella “bin” appena creata alla variabile di ambiente PATH.
Ora che il tuo script è accessibile ovunque ti trovi nel sistema, puoi richiamarlo e iniziare a controllare ing se i file esistono o meno.
Fantastico!
Hai creato un custom per controllare se i file esistono o meno sul tuo filesystem.
Conclusione
In questo tutorial, hai imparato come controllare se un file esiste o meno usando i test Bash e la sintassi breve di Bash.
Allo stesso modo, hai imparato come è possibile verificare se una directory esiste.
Infine, hai scritto uno script Bash completo che accetta argomenti dinamici per verificare se esistono o meno file multipli.
Se sei interessato alla programmazione Bash o allamministrazione del sistema Linux, abbiamo una sezione completa ad essa dedicata sul sito web, quindi assicurati di dare unocchiata!