Bir dizinin Linux komut satırında olup olmadığını nasıl kontrol edebilirim?


28

Bir dizinin Linux komut satırında olup olmadığını nasıl kontrol edebilirim?

Çözüm: [ -d ¨a¨ ]&&echo ¨exists¨||echo ¨not exists¨


4
Bu yüzden çözüm olarak işaretleyin.
BlueRaja - Danny Pflughoeft

Yanıtlar:


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

Komut satırında, komut dosyasında değil.

5
Bu komut satırı. Bunu doğrudan bash içine yazabilir veya devam ettirebilirsiniz test -d /the/dir: test -d /the/dir && echo "exist" || echo "does not exist"ama onlar gerçekten aynı.
David Rodríguez -

Herkesin kabuğu değil bash!
reinierpost

@reinierpost sonra sana iyi şanslar ...
Stefano Borini

@Stefano Borini: Hala kullanıyorum tcshçünkü yeniden yazmak için çok tembelim .tcshrc. Ancak konuya daha fazlası: Bu OP'nin sorununu açıklamış olabilir.
reinierpost

11

Kabuğunuzun BASH olduğunu varsayalım:

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

beklenmedik token `then 'yakınında sözdizimi hatası

O zaman kabuğunun ne olduğunu çöz. Belki cshya da tcsh?
reinierpost

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

Dizin olmasa bile bir metni göstermek için ELSE gibi bir şey alabilir miyim?

Geçici çözüm:[ -d /home/bla/ ] && echo "exist" ; [ ! -d /home/bla/ ] && echo "doesnt exist"
learningloop

7

Kurallı yol, test (1) yardımcı programını kullanmaktır:

test -d path

burada "yol", söz konusu dizinin yol adıdır.


Komut kendi başına yapıyor gibi görünmüyor, ancak a ile birleştirildiğinde echo "Directory Exists".
Ejaz

2

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

Örneğin:

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

çıktısı: root dir.


[-d: komut bunun ne olduğunu bulamadım

"[" İle "-" arasında bir boşluk olmalıdır. Bu Bourne ve Bash kabuğu üzerinde çalışmalıdır.

0

Bir dizinin kabuk betiğinde olup olmadığını kontrol etmek için aşağıdakileri kullanabilirsiniz:

dir=$1

if [ -d "$dir" ]; then

 #means that $dir exists.

fi

tersini kontrol etmek için !önce-d ->[ ! -d ....]


Süper Kullanıcıya Hoşgeldiniz! Bu, başka bir yanıtı çoğaltır ve yeni bir içerik eklemez. Gerçekten katkıda bulunacak yeni bir şeyiniz yoksa lütfen cevap yazmayın.
DavidPostill
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.