Bagaimana cara memeriksa apakah direktori ada di baris perintah Linux?

28

Bagaimana cara memeriksa apakah direktori ada di baris perintah Linux?

Larutan: [ -d ¨a¨ ]&&echo ¨exists¨||echo ¨not exists¨

studiohack
sumber
4
Jadi tandai sebagai solusi.
BlueRaja - Danny Pflughoeft

Jawaban:

40
$ if test -d /the/dir; then echo "exist"; fi 
Stefano Borini
sumber
Saya membutuhkannya di baris perintah, bukan di skrip.
5
Itu adalah baris perintah. Anda dapat mengetikkannya ke bash secara langsung, atau Anda dapat melanjutkannya ke test -d /the/dir: test -d /the/dir && echo "exist" || echo "does not exist"tetapi semuanya benar-benar sama.
David Rodríguez - dribeas
Tidak semua shell bash!
reinierpost
@reinierpost lalu semoga sukses untuk Anda ...
Stefano Borini
@Stefano Borini: Saya masih menggunakan tcshkarena saya terlalu malas untuk menulis ulang .tcshrc. Tetapi lebih tepatnya: ini mungkin menjelaskan masalah OP.
reinierpost
11

Dengan asumsi shell Anda BASH:

if [ -d /the/dir ]; then echo 'Exists'; else echo 'Not found'; fi
Brian Showalter
sumber
kesalahan sintaksis dekat token yang tidak terduga `then '
Kemudian cari tahu apa cangkang Anda. Mungkin cshatau tcsh?
reinierpost
8
[ -d /home/bla/ ] && echo "exits"

sumber
Bisakah saya memiliki sesuatu seperti ELSE, untuk menampilkan teks bahkan jika direktori tidak ada?
Penanganan masalah:[ -d /home/bla/ ] && echo "exist" ; [ ! -d /home/bla/ ] && echo "doesnt exist"
learningloop
7

Cara kanonik adalah dengan menggunakan utilitas tes (1):

test -d path

di mana "path" adalah pathname dari direktori yang dimaksud.

Steve Emmerson
sumber
Perintah itu tampaknya tidak melakukan dengan sendirinya tetapi ketika bergabung dengan a echo "Directory Exists".
Ejaz
2

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

misalnya:

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

Output akan: root dir.

Ejaz
sumber
[-d: perintah tidak ditemukan inilah yang saya dapatkan
Antara "[" dan "-" HARUS spasi. Ini harus bekerja pada Bourne dan Bash shell.
0

Untuk memeriksa apakah direktori ada dalam skrip shell, Anda dapat menggunakan yang berikut ini:

dir=$1

if [ -d "$dir" ]; then

 #means that $dir exists.

fi

untuk memeriksa yang sebaliknya, tambahkan !sebelum-d ->[ ! -d ....]

roval
sumber
Selamat Datang di Pengguna Super! Ini menggandakan jawaban lain dan tidak menambahkan konten baru. Tolong jangan memposting jawaban kecuali Anda benar-benar memiliki sesuatu yang baru untuk disumbangkan.
DavidPostill