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


Antworten:


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

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

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"

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.


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.


[-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 ....]


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.