GNU/Linux >> Linux Esercitazione >  >> Linux

Come verificare se esiste un file o una directory in Bash

Introduzione

Ci sono diverse funzioni in Linux che funzionano solo se esiste un particolare file o directory. Bash è una shell che interpreta i comandi. Puoi usare un

In questa guida, scopri come utilizzare un comando bash per verificare se esiste un file o una directory.

Prerequisiti

  • Un sistema operativo Linux
  • Accesso a una finestra del terminale/riga di comando (Ctrl-Alt-T / Ctrl-Alt-F2)

Come verificare se esiste un file

Per verificare il file /tmp/test.log , inserisci quanto segue dalla riga di comando:

test –f /tmp/test.txt

La prima riga esegue il test per vedere se il file esiste. Il secondo comando, eco , visualizza i risultati 0 significa che il file esiste, 1 significa che nessun file è stato trovato.

echo $?

Nel nostro esempio, il risultato era 1.

Ora prova a creare un file, quindi provalo:

touch /tmp/test.txt
test –f /tmp/test.txt
echo $?

Poiché abbiamo creato il file in precedenza, il risultato ora è 0:

Puoi anche utilizzare parentesi quadre invece del test comando:

[ –f /tmp/test.txt ]
echo $?

Come verificare se esiste una directory

Per verificare se esiste una directory, disattiva –f opzione nel test comando per –d (per rubrica):

test –d /tmp/test
echo $?

Crea quella directory ed esegui nuovamente il test:

touch /tmp/test
test –d /tmp/test
echo $?

Questo comando funziona come per i file, quindi usa le parentesi invece del test il comando funziona anche qui.

Come verificare se un file non esiste

In genere, il test di un file restituisce 0 (true) se il file esiste e 1 (false) se il file non esiste. Per alcune operazioni, potresti voler invertire la logica. È utile scrivere uno script per creare un file particolare solo se non esiste già.

Per creare un file se non ne esiste già uno, inserisci quanto segue da una riga di comando:

[ ! –f /tmp/test.txt ] && touch /tmp/test.txt

Il punto esclamativo ! sta per non . Questo comando assicura che non sia presente un file denominato test.txt nel /tmp directory. Non vedrai succedere nulla.

Per vedere se il sistema ha creato il file, inserisci quanto segue:

ls /tmp

Dovresti vedere test.txt elencato. Puoi usare un comando simile per una directory:sostituisci –f opzione con –d :

[ ! –d /tmp/test ] && touch /tmp/test 

Come verificare la presenza di più file

Per testare due file contemporaneamente, usa && opzione per aggiungere un secondo file:

[ -f /tmp/test.txt && -f /tmp/sample.txt ] && echo “Both files were found”

Per verificare la presenza di più file con un carattere jolly, ad esempio un asterisco * per rappresentare vari caratteri:

[ -f /tmp/*.jpg ] && echo “Files were found”

Come al solito, modificando –f opzione su –d ti consente di eseguire lo stesso test per più directory.

Operatori di test di file per trovare tipi particolari di file

Di seguito sono riportati diversi comandi da testare per trovare tipi specifici di file:

  • -f – file
  • -d – directory
  • L – collegamento simbolico
  • -r – leggibile
  • -x – eseguibile
  • noi – scrivibile

Ci sono molte altre opzioni disponibili. Si prega di consultare la pagina principale (test ––help) per ulteriori opzioni.

Utilizzo degli snippet di codice

I comandi precedenti funzionano bene per un semplice comando a due righe al prompt dei comandi. Puoi anche usare bash con più comandi. Quando più comandi sono messi insieme, sono chiamati script .

Uno script di solito viene salvato come file ed eseguito. Lo scripting utilizza anche operatori logici per verificare una condizione, quindi esegue un'azione in base ai risultati del test.

Per creare un file di script, usa l'editor Nano per aprire un nuovo file:

sudo nano bashtest.sh

Inserisci uno degli snippet dal basso, incluso #!/bin/bash identificatore. Usa Ctrl-o per salvare il file, quindi Ctrl-x per uscire da Nano. Quindi, esegui lo script immettendo:

bash bashtest.sh

Il frammento di codice seguente verifica la presenza di un file particolare. Se il file esiste, lo script visualizza File esistente sullo schermo.

#!/bin/bash

if [ -f /tmp/test.txt ]

then

echo “File exists”

fi

Funziona allo stesso modo se stai cercando una directory. Sostituisci semplicemente –f opzione con –d :

#!/bin/bash

if [ -d /tmp/test ]

then 

echo “File exists”

fi

Questo comando verifica la directory /tmp/test . Se esiste, il sistema visualizza File esistente .


Linux
  1. Come posso verificare che un file esista ed eseguire un comando in caso contrario?

  2. Controlla se esiste un determinato tipo/estensione di file nella directory

  3. Come analizzare un file CSV in Bash?

  4. Come controllare syslog in Bash su Linux?

  5. Come posso verificare se esiste una directory?

Ansible:controlla se esiste un file

Come verificare se un file o una directory esiste in Bash

Come leggere un file riga per riga in Bash

Come utilizzare gli operatori di test di file Bash in Linux

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

Come posso usare sudo per verificare se esiste un file?