Come verificare se un percorso è una directory o qualcos'altro nello script bash

Come verificare se un percorso è una directory o qualcos'altro nello script bash

Stiamo tentando di sviluppare uno script Ubuntu molto semplice che ci consentirà di fornire le informazioni, che si tratti di un nome file o forse di una cartella. Come posso verificare se una cartella esiste all'interno di uno script di shell sotto Linux o macchine virtuali simili a Unix? O come vedo se esiste un file? Come distinguerà un utente se il percorso menzionato è una directory o un file? Quindi, facciamo alcuni esempi in una sceneggiatura da bash per elaborare questo concetto. Assicurati di accedere prima dal tuo sistema. Stiamo utilizzando Ubuntu 20.04. Dopo l'accesso, apri l'applicazione della console per eseguire esempi.

Esempio 01:

Per l'apertura del guscio, prova "Ctrl+alt+t". Creazione di un file bash prima a partire da un semplice esempio di controllo se il percorso menzionato in un file bash è un file o una directory. Per creare un file di codice bash, digita "tocco" nel terminale menzionando il nome di un file con ".sh"Estensione. Quindi, abbiamo chiamato il file "test.sh". Colpisci la chiave "accedere"Per elaborare la query.

$ touch test.sh

Puoi facilmente trovare il file bash appena creato all'interno della home directory. Per aggiungere un codice bash, dobbiamo aprirlo in alcuni editor. Quindi, abbiamo utilizzato un editore GNU incorporato di Ubuntu 20.04. Quindi, abbiamo provato la query sotto in una shell e l'abbiamo aperta in un editore.

$ nano test.sh

Il file è stato lanciato in un editor. Scrivi lo script mostrato di seguito in esso. In primo luogo, aggiungi l'estensione bash nel file come "#!/bin/bash ". Abbiamo dichiarato una nuova variabile "V1" e gli abbiamo assegnato un "percorso" di un file come valore. È chiaro dal percorso che indica alcuni file bash. L'istruzione "if" è stata inizializzata. All'interno delle parentesi graffe [], dobbiamo usare la bandiera di "-D" che rappresenta la directory nella sua parte di condizione. Controllerà se il valore variabile menzionato è una directory o qualcos'altro. Se la condizione si soddisfa, eseguirà la parte "allora" e visualizzerà "$ v1 è una directory". Altrimenti, eseguirà la parte altro dell'istruzione "if" e visualizzando "$ v1 è un file" nel terminale della shell. La "Fi" afferma che la dichiarazione "if" è stata terminata qui. Dopo aver salvato questo codice bash, torneremo alla console tramite "Ctrl+s" E "Ctrl+X" consecutivamente.

Ora il tempo è eseguire il file bash “Test.sh". Pertanto, abbiamo usato l'istruzione bash nella nostra console con il nome del file per controllare l'output. L'output per questa istruzione mostra che il percorso menzionato nel file sta specificando un file. Quindi, possiamo dire che la parte "altro" deve essere stata eseguita il suo tempo.

$ Bash Test.sh

Esempio 02:

Vediamo il risultato per una directory questa volta. Questa volta, vedremo come funziona il flag "-d" su una variabile contenente un percorso per una directory. Quindi, abbiamo aperto il file "Test.Sh "di nuovo nell'editore tramite la query" nano "nella shell.

$ nano test.sh

Dopo averlo aperto, abbiamo aggiornato il valore della variabile "V1" e modificato il percorso in un percorso di directory. Abbiamo sostituito il file "file.sh "con una directory" immagini/". Lo script bash rimanente è lo stesso in tutto il file in un editor. Devi salvare semplicemente e rapidamente il codice bash aggiornato ed uscire dall'editor usando prima "ctrl+s" e poi "ctrl+x" dopo.

Quindi, eseguiamo di nuovo il nostro file. Per l'esecuzione, la stessa query sopra è stata utilizzata nella console. Questa volta l'esecuzione mostra che il percorso menzionato nello script bash è una directory all'interno della home directory di Ubuntu 20.04.

$ Bash Test.sh

Esempio 03:

Nei due esempi sopra, hai visto come utilizzare un flag "-D" per vedere se la variabile del percorso menzionata è una directory o no. Questa volta, utilizzeremo un altro flag, "-f", nel nostro esempio specificando se il percorso menzionato è un file o no. D'altra parte, useremo un'istruzione "if-else" nidificata nel nostro codice bash per utilizzare i flag "-d" e "-f". Abbiamo aperto il "test.File SH "nell'editor GNU tramite il terminale utilizzando ancora una volta l'istruzione" Nano ".

$ nano test.sh

Dopo aver aperto il documento Bash, abbiamo scritto la sceneggiatura di Bash di seguito al suo interno. Aggiunto l'estensione bash e inizializzato una variabile V1, contenente un percorso del file come valore. Inoltre, l'istruzione "if-else" nidificata è stata utilizzata correttamente per verificare se il percorso di una variabile è un file o una directory. Quindi, all'interno della prima istruzione IF, abbiamo menzionato una condizione per verificare se il valore variabile è una directory tramite il flag "-D". Se la condizione si soddisfa, stamperà "$ V è una directory"; Altrimenti, l'altra parte di una dichiarazione verrà compilata. All'interno della parte "else", c'è un'altra dichiarazione "if-else" menzionata. All'interno della parte "if" di questa istruzione, la condizione è stata utilizzata per verificare se il percorso variabile "V" contiene un file o meno tramite il flag "-f". Se il percorso contiene un file, stamperà che "$ V è un file"; Altrimenti, l'istruzione "else" eco si compilerà al terminale.

Dopo che il codice è stato salvato, questo è il momento di compilare lo script bash tramite una query bash. Pertanto, abbiamo usato la query "bash" con il nome del file menzionato al suo interno. L'output è lo stesso quanto ci aspettavamo. Poiché il valore variabile contiene il percorso che specifica il percorso del file, visualizza che "$ V è un file".

$ Bash Test.sh

Esempio 04:

Nell'esempio sopra illustrata, abbiamo usato il percorso per un file per vedere come reagisce l'istruzione nidificata "if-else" mentre usa le flag "-d" e "-f". Questa volta useremo il percorso della directory. Apri nuovamente il file e aggiorna il valore del percorso variabile. Abbiamo sostituito "Test.txt "con" documenti/". Lo script rimanente è lo stesso.

Dopo aver compilato con successo uno script bash, il percorso dichiarato nel valore variabile "V" è una directory, E.G., Download.

$ Bash Test.sh

Esempio 05:

L'ultimo e un esempio bonus è per la pratica extra. Apri il nuovo file "File.sh ”e riempilo con il codice seguente. Sono state dichiarate due variabili per mostrare il percorso del file e della directory consecutivamente. Le istruzioni "if-else" sono state utilizzate con il flag "-d" per specificare il tipo di percorso, E.G., directory o file.

Una volta compilato il codice, la prima variabile contiene un file e la seconda contiene una directory secondo l'output seguente.

$ Bash File.sh

Conclusione:

In questa guida, abbiamo visto come scoprire che il percorso menzionato è un file, una directory o qualcos'altro. Abbiamo usato le dichiarazioni "if-else" e nidificate "if-else" utilizzando flag "-d" e "-f" nei nostri esempi per elaborare meglio.