Bash Controlla se il file non esiste

Bash Controlla se il file non esiste
Bash Scripting è un linguaggio di programmazione che può essere utilizzato rapidamente in Linux e in altri ambienti del sistema operativo per automatizzare le attività. Quando si scrivono script bash spesso dobbiamo operare sui file nel filesystem. Tuttavia, se il nostro codice tenta di accedere a un file e non esiste possiamo ottenere un errore imprevisto. Pertanto le sue migliori pratiche verificano l'esistenza dei file prima di provare a fare riferimento al file in un bash script.

Esempio 01

Dobbiamo aggiungere il supporto bash come '##!/bin/bash '. Dopo questo, abbiamo inizializzato a 'FILE' variabile con il percorso del file stesso 'file.sh' io.e., '/home/linuxhint/file.sh'. Per verificare che il file esista o no, useremo il 'Se poi' Dichiarazione che prende le sue condizioni tra parentesi quadrate singole in questo codice bash. Per verificare se esiste il file, dobbiamo usare il '-F' Opzione seguita dalla variabile a doppia quota "FILE" con il personaggio del dollaro "$". Questo per verificare se il percorso dato al file contiene un file con il nome 'file.sh' o no.

La condizione termina qui e il 'Poi' parte dell'affermazione inizia. Se il file esiste, visualizzerà il messaggio che il file 'file.sh' esiste nel percorso dato usando il 'eco' dichiarazione. IL 'Se' L'istruzione termina qui con la sintassi finale 'fi'.

#!/Bin/Bash
File =/home/linuxhint/file.sh
if [-f "$ file"]; Poi
Echo "$ $ esiste!"
fi

Ora, salva il file del codice bash ed esegui il file utilizzando la riga di comando in basso:

File bash.sh

Ecco l'output quando si esegue il comando:

Linuxhint@U22: ~ $ Bash File.sh
/home/linuxhint/file.esiste sh!

Se modifichiamo lo script e cambiamo il 'FILE' a un file che non esiste e eseguono la sceneggiatura non otteniamo alcun output dallo script.

Esempio 02

In questo esempio aggiungeremo un'istruzione Else all'istruzione IF nell'esempio precedente. In questo modo se il file non esiste, riceveremo un messaggio di errore appropriato stampato sull'output standard o sulla schermata. Ecco il nuovo codice:

#!/Bin/Bash
File =/home/linuxhint/file.sh
if [-f "$ file"]; Poi
Echo "$ $ esiste!"
altro
Echo "$ File non esiste!"
fi

Possiamo eseguire gli script come segue:

$ Bash File.sh

Otteniamo lo stesso output di prima:

Linuxhint@U22: ~ $ Bash File.sh
/home/linuxhint/file.esiste sh!

Ma ora se hackiamo il nome file per essere un file che non esiste, riceveremo un messaggio di errore corretto:

Linuxhint@U22: ~ $ Bash File.sh
/Home/Linuxhint/Nofile.Sh non esiste!

Esempio 03

Diciamo, vuoi usare il 'non' carattere quindi stai prima verificando se il file non esiste. Ad esempio, se il file non esiste, potresti voler stampare un messaggio di errore, ma potresti non richiedere nemmeno un altro in questo contesto in quanto ti interessa solo se il file non esiste, altrimenti lo script potrebbe continuare normalmente senza uscire errore.

Ecco la sintassi per usare il '!' carattere per invertire il controllo per controllare Se il file non esiste:

#!/Bin/Bash
File =/home/linuxhint/nofile.sh
Se [ ! -f "$ file"]; Poi
Echo "$ File non esiste!"
altro
Echo "$ $ esiste!"
fi

Eseguimo prima lo script con il nome file rotto:

$ Bash File.sh

L'output quando innesca la condizione di errore è qui sotto:

Linuxhint@U22: ~ $ Bash File.sh
/Home/Linuxhint/Nofile.Sh non esiste!

Ora possiamo fissare il nome file per essere il file che esiste:

#!/Bin/Bash
File =/home/linuxhint/file.sh
Se [ ! -f "$ file"]; Poi
Echo "$ File non esiste!"
altro
Echo "$ $ esiste!"
fi

Ecco l'output con il file che esiste:

Linuxhint@U22: ~ $ Bash File.sh
/home/linuxhint/file.esiste sh!
Linuxhint@u22: ~ $

Esempio 04

In questo esempio mostreremo una rapida sintassi dalla shell senza scrivere uno script e introdurre gli operatori logici per stampare il successo o gli errori. Ecco lo script che puoi eseguire sul terminale:

Linuxhint@U22: ~ $ [-f File.sh] && echo "file esiste" || Echo "File non esiste"
il file esiste
Linuxhint@u22: ~ $

Nel codice sopra scriviamo il codice direttamente sul terminale interattivo. Usiamo un test condizionale per il controllo se il file esiste. Restituirà 0 per il successo. Gli operatori logici o logici e logici vengono utilizzati per indicare quale messaggio deve essere stampato, successo o fallimento.

Esempio 05

Puoi anche utilizzare un approccio simile come mostrato in questo articolo per verificare l'esistenza di una directory utilizzando il '-D' opzione nella sua condizione anziché '-F'. Diciamo, abbiamo una directory 'test' nella nostra cartella di casa e abbiamo usato lo stesso script con il '-D' Opzione per verificarlo e visualizzare il messaggio String in base all'output della condizione.

Ecco il codice con la directory check in file 'Dir.sh':

#!/Bin/Bash
File =/home/linuxhint/test
if [-d "$ file"]; Poi
Echo "Directory $ File esiste!"
altro
Echo "Directory $ File non esiste!"
fi

Per eseguire il codice eseguire:

$ Bash Dir.sh
Linuxhint@U22: ~ $ Bash Dir.sh
esiste directory/home/linuxhint/test!

E il codice di test negativo e l'output:

#!/Bin/Bash
File =/home/linuxhint/test
Se [ ! -d "$ file"]; Poi
Echo "Directory $ File non esiste!"
altro
Echo "Directory $ File esiste!"
fi
Linuxhint@U22: ~ $ Bash Dir.sh
Directory/Home/Linuxhint/Test non esiste!

Conclusione

Questo riguarda l'uso degli script bash per verificare se esistono file e directory. Inoltre, abbiamo utilizzato il codice diretto nella console bash utilizzando operazioni di test e operatori logici.