How to Check if a File or Directory Exist Using Bash
Isi kandungan:
- Periksa sama ada Fail ada
- Semak apakah Direktori ada
- Periksa sama ada Fail Tidak Ada
- Periksa jika Pelbagai Fail Ada
- Pengendali ujian fail
- Kesimpulannya
Banyak kali ketika menulis skrip Shell, anda mungkin mendapati diri anda dalam situasi di mana anda perlu melakukan tindakan berdasarkan apakah ada file atau tidak.
Di Bash, anda boleh menggunakan arahan ujian untuk memeriksa apakah ada fail dan tentukan jenis fail.
Perintah ujian mengambil salah satu bentuk sintaks yang berikut:
Periksa sama ada Fail ada
Apabila menyemak jika ada fail, pengendali FILE yang paling biasa digunakan ialah
-e
dan
-f
. Yang pertama akan memeriksa sama ada fail wujud tanpa mengira jenisnya, sementara yang kedua akan kembali benar hanya jika FILE adalah fail biasa (bukan direktori atau peranti).
Opsyen yang paling boleh dibaca apabila memeriksa sama ada fail wujud atau tidak adalah dengan menggunakan arahan ujian dalam kombinasi dengan pernyataan jika. Mana-mana coretan di bawah akan memeriksa sama ada fail
/etc/resolv.conf
ada:
FILE=/etc/resolv.conf if test -f "$FILE"; then echo "$FILE exist" fi
FILE=/etc/resolv.conf if; then echo "$FILE exist" fi
FILE=/etc/resolv.conf if]; then echo "$FILE exist" fi
Sekiranya anda ingin melakukan tindakan yang berlainan berdasarkan sama ada fail itu ada atau tidak semestinya gunakan if / then construct:
FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi
Sentiasa gunakan sebut harga berganda untuk mengelakkan masalah apabila berurusan dengan fail yang mengandungi ruang putih di dalam nama mereka.
Anda juga boleh menggunakan arahan ujian tanpa pernyataan jika. Perintah selepas pengendali & & akan dilaksanakan hanya jika status exit arahan ujian adalah benar,
test -f /etc/resolv.conf && echo "$FILE exist"
&& echo "$FILE exist"
] && echo "$FILE exist"
&& { echo "$FILE exist"; cp "$FILE" /tmp/; }
Berbanding dengan
&&
, pernyataan selepas
||
pengendali hanya akan dilaksanakan jika status keluar perintah ujian adalah
false
.
&& echo "$FILE exist" || echo "$FILE does not exist"
Semak apakah Direktori ada
Pengendali
-d
membolehkan anda menguji sama ada fail adalah direktori atau tidak.
Contohnya untuk memeriksa sama ada direktori
/etc/docker
wujud, anda akan menggunakan:
FILE=/etc/docker if; then echo "$FILE is a directory" fi
&& echo "$FILE is a directory"
Anda juga boleh menggunakan pendakap ganda
, 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));
Periksa sama ada Fail Tidak Ada
Serupa dengan banyak bahasa lain, ungkapan ujian boleh dikalahkan menggunakan
!
(tanda seru) operator tidak logik:
FILE=/etc/docker if; then echo "$FILE does not exist" fi
Sama seperti di atas:
&& echo "$FILE does not exist"
Periksa jika Pelbagai Fail Ada
Daripada menggunakan bersarang rumit jika / sebaliknya anda boleh menggunakan
-a
(atau
&&
dengan
; then echo "$FILE is a directory" fi
FILE=/etc/docker if; then echo "$FILE is a directory" fi
Varian setaraf tanpa menggunakan pernyataan IF:
&& echo "both files exist"
Pengendali ujian fail
Perintah ujian termasuk pengendali FILE berikut yang membolehkan anda menguji jenis fail tertentu:
-
-b
FILE
- Benar jika FILE wujud dan merupakan fail khas blok.-c
FILE
- Benar jika FILE wujud dan merupakan fail aksara khas.-d
FILE
- Benar jika FILE ada dan direktori.-e
FILE
- Benar jika FILE wujud dan merupakan fail, tanpa mengira jenis (nod, direktori, soket, dan lain-lain).-f
FILE
- Benar jika FILE wujud dan merupakan fail biasa (bukan direktori atau peranti).-G
FILE
- Benar jika FILE wujud dan mempunyai kumpulan yang sama dengan pengguna yang menjalankan perintah tersebut.-h
FILE
- Benar jika FILE wujud dan merupakan pautan simbolik.-g
FILE
- Benar jika FILE wujud dan menetapkan set-kumpulan-id (sgid) bendera.-k
FILE
- Benar jika FILE wujud dan mempunyai set bendera kecil melekat.-L
FILE
- Benar jika FILE wujud dan merupakan pautan simbolik.-O
FILE
- Benar jika FILE wujud dan dimiliki oleh pengguna yang menjalankan arahan.-p
FILE
- Benar jika FILE wujud dan merupakan paip.-r
FILE
- Benar jika FILE wujud dan boleh dibaca.-S
FILE
- Benar jika FILE ada dan soket.-s
FILE
- Benar jika FILE wujud dan mempunyai saiz nonzero.-u
FILE
- Benar jika bendera wujud dan set-user-id (suid) ditetapkan.-w
FILE
- Benar jika FILE wujud dan boleh ditulis.-x
FILE
- Benar jika FILE wujud dan boleh laksana.
Kesimpulannya
Dalam panduan ini, kami telah menunjukkan kepada anda bagaimana untuk menyemak sama ada fail atau direktori ada menggunakan Bash.
terminal bashBagaimana untuk menyemak sama ada komputer anda sudah bersedia untuk windows 7
Ketahui cara menjalankan penaik taraf Windows untuk menaik taraf dari windows vista ke windows 7
Bagaimana untuk memeriksa sama ada rentetan mengandungi substring dalam bash
Salah satu operasi yang paling biasa apabila bekerja dengan rentetan dalam Bash adalah untuk menentukan sama ada rentetan mengandungi string lain atau tidak. Dalam artikel ini, kami akan menunjukkan kepada anda beberapa cara untuk memeriksa sama ada rentetan mengandungi substring.
Bagaimana untuk menyemak sama ada fail atau direktori wujud dalam python
Apabila menulis skrip Python, anda mungkin mahu melakukan tindakan tertentu hanya jika fail atau direktori ada atau tidak. Sebagai contoh, anda mungkin mahu membaca atau menulis data ke fail konfigurasi atau untuk membuat fail hanya jika ia tidak wujud.