Jak sprawdzić, czy katalog istnieje w wierszu poleceń systemu Linux?

28

Jak sprawdzić, czy katalog istnieje w wierszu poleceń systemu Linux?

Rozwiązanie: [ -d ¨a¨ ]&&echo ¨exists¨||echo ¨not exists¨

studiohack
źródło
4
Oznacz to jako rozwiązanie.
BlueRaja - Danny Pflughoeft

Odpowiedzi:

40
$ if test -d /the/dir; then echo "exist"; fi 
Stefano Borini
źródło
Potrzebuję go w wierszu poleceń, a nie w skrypcie.
5
To jest linia poleceń. Możesz wpisać to bezpośrednio w bash lub wznowić to w test -d /the/dir: test -d /the/dir && echo "exist" || echo "does not exist"ale tak naprawdę są takie same.
David Rodríguez - dribeas
Nie każdy jest skorupą bash!
reinierpost
@reinierpost to powodzenia ...
Stefano Borini
@Stefano Borini: Nadal używam, tcshponieważ jestem zbyt leniwy, aby przepisać moje .tcshrc. Ale bardziej do rzeczy: mogło to wyjaśniać problem PO.
reinierpost
11

Zakładając, że twoja skorupa to BASH:

if [ -d /the/dir ]; then echo 'Exists'; else echo 'Not found'; fi
Brian Showalter
źródło
błąd składni w pobliżu nieoczekiwanego tokena „następnie”
Następnie dowiedz się, jaka jest twoja skorupa. Być może cshczy tcsh?
reinierpost
8
[ -d /home/bla/ ] && echo "exits"

źródło
Czy mogę mieć coś takiego jak ELSE, aby wyświetlać tekst, nawet jeśli katalog nie istnieje?
Obejście:[ -d /home/bla/ ] && echo "exist" ; [ ! -d /home/bla/ ] && echo "doesnt exist"
learningloop
7

Kanonicznym sposobem jest użycie narzędzia test (1):

test -d path

gdzie „ścieżka” to nazwa ścieżki do danego katalogu.

Steve Emmerson
źródło
Wydaje się, że polecenie nie działa samo, ale po połączeniu z echo "Directory Exists".
Ejaz
2

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

na przykład:

[ -d / ] && echo "root dir

Wyjście będzie: root dir.

Ejaz
źródło
[-d: komenda nie znalazła tego właśnie otrzymuję
Pomiędzy „[” a „-” MUSI znajdować się spacja. To powinno działać na powłoce Bourne'a i Basha.
0

Aby sprawdzić, czy katalog istnieje w skrypcie powłoki, możesz użyć:

dir=$1

if [ -d "$dir" ]; then

 #means that $dir exists.

fi

aby sprawdzić odwrotnie, dodaj !przed-d ->[ ! -d ....]

Roval
źródło
Witamy w Super User! To powiela inną odpowiedź i nie dodaje żadnej nowej treści. Nie publikuj odpowiedzi, chyba że masz coś nowego do dodania.
DavidPostill