Wie überprüfe ich, ob ein Verzeichnis in der Linux-Befehlszeile existiert?

28

Wie überprüfe ich, ob ein Verzeichnis in der Linux-Befehlszeile existiert?

Lösung: [ -d ¨a¨ ]&&echo ¨exists¨||echo ¨not exists¨

Studiohack
quelle
4
Kennzeichnen Sie es als die Lösung.
BlueRaja - Danny Pflughoeft

Antworten:

40
$ if test -d /the/dir; then echo "exist"; fi 
Stefano Borini
quelle
Ich brauche es in der Kommandozeile, nicht in einem Skript.
5
Das ist die Kommandozeile. Sie können dies entweder direkt in bash eingeben oder wie folgt fortsetzen test -d /the/dir: test -d /the/dir && echo "exist" || echo "does not exist"Aber sie sind wirklich gleich.
David Rodríguez - Dribeas
Nicht jedermanns Oberteil ist bash!
Reinierpost
@ Reinierpost dann viel Glück für Sie ...
Stefano Borini
@Stefano Borini: Ich benutze immer noch, tcshweil ich zu faul bin, meine umzuschreiben .tcshrc. Aber mehr auf den Punkt gebracht: Dies könnte das Problem des OP erklärt haben.
Reinierpost
11

Angenommen, Ihre Shell ist BASH:

if [ -d /the/dir ]; then echo 'Exists'; else echo 'Not found'; fi
Brian Showalter
quelle
Syntaxfehler in der Nähe von unerwartetem Token `then '
Dann finde heraus, was deine Muschel ist. Vielleicht cshoder tcsh?
Reinierpost
8
[ -d /home/bla/ ] && echo "exits"

quelle
Kann ich so etwas wie ELSE haben, um einen Text anzuzeigen, auch wenn das Verzeichnis nicht existiert?
Umgehung:[ -d /home/bla/ ] && echo "exist" ; [ ! -d /home/bla/ ] && echo "doesnt exist"
learningloop
7

Die kanonische Methode besteht darin, das Dienstprogramm test (1) zu verwenden:

test -d path

Dabei ist "Pfad" der Pfadname des betreffenden Verzeichnisses.

Steve Emmerson
quelle
Der Befehl scheint nicht von alleine zu sein, sondern wenn er mit einem verknüpft ist echo "Directory Exists".
Ejaz
2

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

z.B:

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

AUSGABE: root dir.

Ejaz
quelle
[-d: Befehl nicht gefunden, das ist, was ich bekomme
Zwischen "[" und "-" MUSS ein Leerzeichen stehen. Dies sollte auf Bourne- und Bash-Shell funktionieren.
0

Um zu überprüfen, ob ein Verzeichnis in einem Shell-Skript vorhanden ist, können Sie Folgendes verwenden:

dir=$1

if [ -d "$dir" ]; then

 #means that $dir exists.

fi

Um das Gegenteil zu überprüfen, fügen Sie !vor dem-d ->[ ! -d ....]

roval
quelle
Willkommen bei Super User! Dies dupliziert eine andere Antwort und fügt keinen neuen Inhalt hinzu. Bitte posten Sie keine Antwort, es sei denn, Sie haben tatsächlich etwas Neues beizutragen.
DavidPostill