GNU/Linux >> Linux Esercitazione >  >> Linux

Come verificare se esiste un file o una directory in Bash Shell

Se stai lavorando su uno script Bash che interagisce con file e directory, potresti incontrare una situazione in cui devi assicurarti che il file o la directory esistano. Questo aiuta a evitare possibili errori per l'esecuzione di determinate azioni su un file che non esiste.

In questo tutorial, ti mostrerò un paio di modi per verificare se il file o la directory esiste o meno nello script bash. Iniziamo prima con il file.

Verifica se il file esiste nello script bash

L'idea qui è di usare l'operatore -f che restituisce true solo quando è un file normale (non una directory).

Diciamo che vuoi controllare se il file /home/user/my_file esiste o meno. Ecco come puoi controllare tra parentesi quadre

#!/bin/bash
 
if [ -f /home/user/my_file ]
then
    echo "My file exists"
fi

Ma non otterrai sempre il nome del file in anticipo, vero? Puoi averlo in una variabile e, in tal caso, puoi usarlo in questo modo.

#!/bin/bash

FILE=/home/user/my_file
 
if [ -f "$FILE" ]
then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

Fondamentalmente, ciò che conta è la condizione che usi nel comando if. Sta a te decidere come utilizzare l'istruzione if.

Ad esempio, puoi scriverlo con due parentesi quadre, mantenendo 'allora' nella stessa riga di 'se' con l'aiuto del punto e virgola in questo modo:

#!/bin/bash

FILE=/home/user/my_file
 
if [ -f "$FILE" ]; then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

oppure metti insieme l'intera dichiarazione in questo modo:

[ -f /home/user/my_file ] && echo "My file exists" || echo "My file doesn't exist"

Controlla che il file esista in bash con test

Puoi anche usare test in bash per vedere se il file esiste o meno. È praticamente la stessa cosa solo che non usi le parentesi quadre nell'istruzione if:

#!/bin/bash

FILE=/home/user/my_file
 
if test -f "$FILE" 
then
    echo "My file exists"
else 
    echo "My file doesn't exist"
fi

Puoi anche utilizzare il codice sopra in una riga singola in questo modo:

test -f /home/user/my_file && echo "My file exists" || echo "My file doesn't exist"

Verifica se il file non esiste nello script bash

E se fosse il contrario e volessi controllare se il file non esiste in bash? Puoi usare più o meno lo stesso codice di cui sopra usando l'operatore di negazione:

#!/bin/bash

FILE=/home/user/my_file
 
if [ ! -f "$FILE" ]
then
    echo "My file doesn't exist"
fi

Ora che sai come gestire i file, passiamo alle directory.

Verifica se la directory esiste nello script bash

Il codice per controllare la directory è lo stesso che hai visto nella sezione precedente. L'unica differenza è che utilizzerai -d invece di -f. -d restituisce true solo per le directory.

#!/bin/bash
 
if [ -d /home/user/my_dir ]
then
    echo "My directory exists"
fi

Puoi anche usare test qui:

#!/bin/bash

DIR=/home/user/my_dir
 
if test -d "$DIR" 
then
    echo "My directory exists"
else 
    echo "My directory doesn't exist"
fi

Verifica se la directory non esiste in bash

Puoi usare di nuovo la negazione per verificare se la directory non esiste:

#!/bin/bash

DIR=/home/user/my_dir
 
if [ ! -d "$DIR" ]
then
    echo "My directory doesn't exist"
fi

Questo è tutto. Questo è tutto ciò che devi fare per verificare se esiste una directory di file nella shell bash o meno.

Spero che tu possa trovare utile questo consiglio bash. Se hai domande o suggerimenti, non esitare a lasciare un commento qui sotto.


Linux
  1. Come analizzare un file CSV in Bash?

  2. Come controllare syslog in Bash su Linux?

  3. Come verificare se un file è vuoto in Bash?

  4. Come includere un file in uno script di shell bash

  5. Come ottengo la directory assoluta di un file in bash?

Come verificare se esiste un file o una directory in Bash

Come verificare se un file o una directory esiste in Bash

Come leggere un file riga per riga in Bash

Come eseguire uno script bash?

Come eseguire il grep di una sezione di un file nella shell bash

Come posso usare sudo per verificare se esiste un file?