Bagaimana cara memeriksa apakah direktori ada di baris perintah Linux?


Jawaban:


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

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

kesalahan sintaksis dekat token yang tidak terduga `then '

Kemudian cari tahu apa cangkang Anda. Mungkin cshatau tcsh?
reinierpost

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

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.


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.


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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.