Come verificare se esiste una directory nella riga di comando di Linux?


28

Come verificare se esiste una directory nella riga di comando di Linux?

Soluzione: [ -d ¨a¨ ]&&echo ¨exists¨||echo ¨not exists¨


4
Quindi contrassegnalo come soluzione.
BlueRaja - Danny Pflughoeft,

Risposte:


40
$ if test -d /the/dir; then echo "exist"; fi 

Ne ho bisogno nella riga di comando, non in uno script.

5
Questa è la riga di comando. Puoi digitarlo direttamente in bash o puoi riprenderlo a test -d /the/dir: test -d /the/dir && echo "exist" || echo "does not exist"ma sono davvero gli stessi.
David Rodríguez - dribeas,

Non è il guscio di tutti bash!
reinierpost,

@reinierpost allora buona fortuna a te ...
Stefano Borini,

@Stefano Borini: lo uso ancora tcshperché sono troppo pigro per riscrivere il mio .tcshrc. Ma più precisamente: questo potrebbe aver spiegato il problema del PO.
reinierpost,

11

Supponendo che la tua shell sia BASH:

if [ -d /the/dir ]; then echo 'Exists'; else echo 'Not found'; fi

errore di sintassi vicino token imprevisto `then '

Quindi scopri qual è la tua shell. Forse csho tcsh?
reinierpost,

8
[ -d /home/bla/ ] && echo "exits"

Posso avere qualcosa come ELSE, per mostrare un testo anche se la directory non esiste?

Soluzione alternativa:[ -d /home/bla/ ] && echo "exist" ; [ ! -d /home/bla/ ] && echo "doesnt exist"
learningloop,

7

Il modo canonico è usare l'utilità test (1):

test -d path

dove "percorso" è il nome percorso della directory in questione.


Il comando non sembra eseguire da solo, ma quando viene unito a echo "Directory Exists".
Ejaz,

2

[ -d "YOUR_DIR" ] && echo "is a dir"

per esempio:

[ -d / ] && echo "root dir"

stamperà: root dir.


[-d: comando non trovato questo è quello che ottengo

Tra "[" e "-" DEVE essere uno spazio. Questo dovrebbe funzionare sulla shell Bourne e Bash.

0

Per verificare l'esistenza di una directory in uno script di shell è possibile utilizzare quanto segue:

dir=$1

if [ -d "$dir" ]; then

 #means that $dir exists.

fi

per verificare il contrario, aggiungere !prima di-d ->[ ! -d ....]


Benvenuto in Super User! Questo duplica un'altra risposta e non aggiunge nuovi contenuti. Per favore, non pubblicare una risposta a meno che tu non abbia effettivamente qualcosa di nuovo da contribuire.
DavidPostill
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.