Bash Check if File Exists – Tutorial e comandi da usare

Durante la creazione di uno script bash, potresti incontrare una situazione in cui devi scoprire se un file esiste o meno per eseguire alcune azioni con esso. Puoi utilizzare il comando test per verificare se il file esiste e di che tipo è.

In questo tutorial, ti mostreremo come verificare se il file esiste nei sistemi operativi basati su Linux.

Sintassi di base del comando di prova

La sintassi di base del comando di prova per verificare se il file esiste come mostrato di seguito:

test -e file

Oppure

test -f file

Dove:

  • -e
    Questa opzione controllerà se esiste un file indipendentemente dal tipo.
  • -f
    Questa opzione controlla se un file esiste solo se il FILE è un file normale.

Dovresti vedere la pagina man del comando test come mostrato di seguito:

man test

Dovresti vedere la seguente schermata :

Verifica se il file esiste utilizzando la riga di comando

In questa sezione ti mostreremo come verificare se il file esiste utilizzando la riga di comando:

Eseguire il seguente comando per verificare se esiste un file chiamato / etc / fstab rue):

test -f /etc/fstab

Successivamente, esegui il seguente comando per impostare il codice di uscita su 0 o 1, ogni volta che il test ha avuto successo non.

echo $?

Risultato:

0

L’output è 0 che significa che il file / etc / fstab esiste.

Puoi anche utilizza il seguente comando per verificare se il file esiste:


echo $0

Risultato:

0

Successivamente, esegui il seguente comando per verificare se il file / etc / fabab esiste ( Falso).

test -f /etc/fabab
echo $?

Risultato:

1

L’output è 1 che significa che il file / etc / fabab non esiste.

Tu può anche verificare se un file chiamato /etc/rc.local esiste o non utilizza l’esecuzione condizionale bash come mostrato di seguito:

test -f /etc/rc.local && echo "Exists" || echo "Not Exists"

Oppure

&& echo "Exists" || echo "Not Exists"

Se il file denominato /etc/rc.local esiste, dovresti vedere il seguente output:

Exists

Puoi anche controllare se esistono o meno più file utilizzando un singolo comando:

&& echo "both files exist"

Oppure

test -f /etc/passwd -a -f /etc/crontab && echo "both files exist"

Dovresti vedere il seguente output:

both files exist

Verifica se il file esiste in Bash

In questa sezione, creeremo uno script bash e controlleremo se un file esiste o meno, stampando un messaggio.

Creiamo un file chiamato test.sh e controlliamo se un file /etc/rc.local esiste o no:

nano test.sh

Aggiungi le seguenti righe:

#!/bin/bash
FILE=/etc/rc.local
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Salva e chiudi il file, quindi esegui lo script con il seguente comando:

bash test.sh

Dovresti vedere il seguente output:

The file "/etc/rc.local" exists.

Ora, creiamo un file test.sh e testiamo se il file / etc / rc.localad esiste di not:

nano test.sh

Aggiungi le seguenti righe:

#!/bin/bash
FILE=/etc/rc.localad
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Salva e chiudi il file, quindi esegui lo script con il seguente comando:

bash test.sh

Dovresti vedere il seguente output:

The file "/etc/rc.localad" is not exists.

Puoi anche scoprire se un file esiste o meno ed eseguire alcune azioni su di esso nello script bash.

Ad esempio, trova un file chiamato / etc / hosts e copialo nella directory / opt se il file esiste.

Per farlo, crea un file chiamato test.sh:

nano test.sh

Aggiungi le seguenti righe:

FILE=/etc/hosts
if ; then
cp $FILE /opt
fi

Salva e chiudi il file, quindi esegui lo script utilizzando il seguente comando:

Ora, prova la directory / opt con il seguente comando:

ls /opt/hosts

Dovresti vedere il file hosts nel seguente output:

/opt/hosts

Puoi anche usare l’espressione! per verificare se il file non esiste.

Ad esempio, esegui il seguente comando per verificare se il file / etc / hosting non esiste:

&& echo "File does not exist"

Oppure

test ! -f /etc/hosting && echo "File does not exist"

Dovresti vedere il seguente output:

File does not exist

Verifica se la directory esiste

Puoi anche scoprire se una directory esiste o meno usando l’opzione -d.

Ad esempio, controlla se la directory / etc / apache2 esiste o meno.

&& echo "Directory is exists"

Oppure

test -d /etc/apache2 && echo "Directory is exists"

Dovresti vedere il seguente output:

Directory is exists

Puoi anche creare uno script bash con espressioni condizionali per verificare se una directory esiste o meno.

Crea un file denominato test.sh come mostrato di seguito:

nano test.sh

Aggiungi le seguenti righe:

Salva e chiudi il file quando hai finito. Quindi, dai il permesso appropriato con il seguente comando:

chmod 755 test.sh

Quindi, verifica se la directory / etc / nginx è disponibile o meno con il seguente comando:

./test.sh /etc/nginx

Dovresti vedere il seguente output:

Directory /etc/nginx/ exists.

Successivamente, verifica se la directory / etc / linux è disponibile o meno con il seguente comando:

./test.sh /etc/linux

Dovresti vedere il seguente output:

Directory /etc/linux does not exists

Operatori di test di file in Bash

I seguenti operatori di test di file ti aiuteranno a verificare se un “file” esiste e ha tipi specifici:

  • -b
    FILE esiste ed è un blocco speciale
  • -c
    FILE esiste ed è un carattere speciale
  • -d
    FILE esiste ed è un directory
  • -e
    FILE esiste
  • -f
    FILE esiste ed è un file normale
  • -g
    FILE esiste ed è set-group-ID
  • -G
    FILE ex ists ed è di proprietà dell’ID gruppo effettivo
  • -h
    FILE esiste ed è un collegamento simbolico (uguale a -L)
  • -k
    FILE esiste e ha il suo sticky bit è impostato
  • -L
    FILE esiste ed è un collegamento simbolico (uguale a -h)
  • -O
    FILE esiste ed è di proprietà dell’utente effettivo ID
  • -p
    FILE esiste ed è una pipe con nome
  • -r
    FILE esiste e viene concesso il permesso di lettura
  • -s
    FILE esiste e ha una dimensione maggiore di zero
  • -S
    FILE esiste ed è un socket
  • -u
    FILE esiste e il suo bit set-user-ID è impostato
  • -w
    FILE esiste e il permesso di scrittura è concesso
  • -x
    FILE esiste ed è concesso il permesso di esecuzione (o ricerca)

Conclusione

Leave a Reply

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *