Saya secara konsisten melihat jawaban yang mengutip tautan ini yang menyatakan secara pasti “Jangan menguraikan ls
!” Ini mengganggu saya karena beberapa alasan:
-
Tampaknya informasi dalam tautan itu telah diterima secara grosir dengan sedikit pertanyaan, meskipun saya dapat menemukan setidaknya beberapa kesalahan dalam membaca biasa.
-
Tampaknya juga masalah yang disebutkan dalam tautan itu tidak memicu keinginan untuk menemukan solusi.
Dari paragraf pertama:
…ketika Anda bertanya
[ls]
untuk daftar
file, ada masalah besar:Unix mengizinkan hampir semua karakter dalam
nama file, termasuk spasi, baris baru, koma, simbol pipa, dan
hampir semua hal lain yang Anda inginkan pernah mencoba menggunakan sebagai pembatas kecuali
NUL. …ls
memisahkan nama file dengan baris baru. Ini baik-baik saja
sampai Anda memiliki file dengan baris baru dalam namanya. Dan karena saya tidak
mengetahui implementasils
yang memungkinkan Anda untuk menghentikan
nama file dengan karakter NUL alih-alih baris baru, ini membuat kami
tidak dapat memperoleh daftar nama file dengan aman denganls
.
Menyedihkan, kan? Bagaimana pernah dapatkah kami menangani kumpulan data terdaftar yang dihentikan baris baru untuk data yang mungkin berisi baris baru? Nah, jika orang yang menjawab pertanyaan di situs web ini tidak melakukan hal semacam ini setiap hari, saya mungkin berpikir kita dalam masalah.
Faktanya, sebagian besar ls
implementasi sebenarnya menyediakan api yang sangat sederhana untuk menguraikan output mereka dan kita semua telah melakukannya selama ini tanpa menyadarinya. Anda tidak hanya dapat mengakhiri nama file dengan null, Anda juga dapat memulainya dengan null atau dengan string arbitrer lainnya yang mungkin Anda inginkan. Terlebih lagi, Anda dapat menetapkan string arbitrer ini per jenis file . Harap pertimbangkan:
LS_COLORS='lc=
Mengapa Printf Lebih Baik Dari Echo?
Bagaimana Kami Menjalankan Perintah yang Disimpan Dalam Variabel?
Linux