Durante lo scripting in Bash, gli utenti si imbattono spesso in situazioni in cui devono verificare se esiste o meno un file o una directory.
I comandi if e test vengono utilizzati insieme per verificare se un file esiste o meno in Bash. In genere utilizzerai espressioni come -e o -f per verificare l’esistenza di un file, mentre -d viene utilizzato nel caso delle directory.
Oltre a ulteriori informazioni su questi, abbiamo anche dettagliato come verificare se un file esiste utilizzando i caratteri jolly e come verificare esclusivamente se un file non esiste in questo articolo.
Se volete continuare a leggere questo post su "[page_title]" cliccate sul pulsante "Mostra tutti" e potrete leggere il resto del contenuto gratuitamente. ebstomasborba.pt è un sito specializzato in Tecnologia, Notizie, Giochi e molti altri argomenti che potrebbero interessarvi. Se desiderate leggere altre informazioni simili a [page_title], continuate a navigare sul web e iscrivetevi alle notifiche del blog per non perdere le ultime novità.
Sommario
Controlla se il file o la directory esiste
Per prima cosa, parliamo delle espressioni primarie, cioè primarie. Puoi usare il comando man test
per controllare la pagina man di test per l’elenco completo dei primari, ma qui ci sono quelli più comunemente usati:
Espressione | Descrizione |
-un file | Il file esiste. |
-d FILE | FILE esiste ed è una directory. |
-e FILE | Il file esiste. |
-f FILE | FILE esiste ed è un file normale. |
-r FILE | FILE esiste ed è leggibile. |
-x FILE | FILE esiste ed è eseguibile o ricercabile. |
Iniziamo con qualcosa di base. Nell’esempio seguente, memorizziamo il percorso del file in $FILE. Dalla tabella sopra, -e significa che se FILE esiste è vero, allora l’output di $FILE esiste verrà ripetuto. Se FILE non esiste, allora $FILE non esiste sarà invece l’output che viene ripetuto.
FILE=/file/path
if [[ -e "$FILE" ]]; then
echo "$FILE exists."
else
echo "$FILE doesn't exist."
fi
Potresti fare la stessa cosa in modo più efficiente come tale:
test -e /file/path && echo “File exists.” || echo “File doesn't exist.”
Puoi anche usare i caratteri jolly per questo:
[ -e /file/path ] && echo “File exists.” || echo “File doesn't exist.”
Dovresti usare l’espressione -d per verificare se una directory esiste o meno:
[ -d /directory/path ] && echo “Directory exists.” || echo “Directory doesn't exist.”
Controlla se un file non esiste
Se stai solo cercando di verificare se il file non esiste, puoi utilizzare l’operatore NOT (!) come tale:
if [ ! -e /file/path ]; then
echo "File doesn't exist."
fi
Ma ancora una volta, puoi fare la stessa cosa in modo più efficiente come tale:
[ ! -e /file/path ] && echo "File doesn't exist."
Controlla se esistono più file
Se stai cercando di verificare se esistono più file contemporaneamente, puoi utilizzare l’espressione -a o l’operatore &&.
Usare un
Il primo metodo è come tale:
if [ -e /file/one -a -e /file/two ]; then
echo "Both files exist."
fi
Considerando che una variante più efficiente sarebbe simile a questa:
[ -e /file/one -a -e /file/two ] && echo "Both files exist."
Utilizzo di &&
Il primo metodo è come tale:
if [[ -e /file/one && -e /file/two ]]; then
echo "Both files exist."
fi
Una variante equivalente sarebbe simile a questa:
[[ -e /file/one && -e /file/two ]] && echo "Both files exist."
Controlla se esiste uno dei due file
Se stai cercando di verificare se esiste uno dei due file, puoi utilizzare il seguente comando:
if [ -f /file/path ] || [ ! -f /file/path ] ; then echo Exists; fi
Se stai cercando di verificare se uno dei due file non esiste, puoi invece applicare ! a uno dei percorsi di file in quanto tale:
if [ -f /file/path ] || [ ! -f /file/path ] ; then echo Missing; fi