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.