Apakah pengalihan mundur sama dengan pipa?

11

Di Linux jika Anda mengetik

sort < txtfile

apakah itu sama dengan

cat txtfile | sort
tony_sid
sumber

Jawaban:

16

Untuk pertanyaan judul Anda: Tidak. Mendapatkan stdindari isi file ( pengalihan input ) tidak sama dengan memipis satu output program ke input program lain.

Tapi, karena Anda catbenar - benar hanya mencetak konten file, hasilnya secara efektif sama dalam contoh itu.


Tetapi bahkan berikut ini saja memberikan hasil yang sangat berbeda:

$ cat * | sort
$ sort < *

Jika ada lebih dari satu file yang cocok, yang terakhir akan menghasilkan

-bash: *: ambiguous redirect

karena itu tidak sefleksibel yang sebelumnya, yang akan menampung semua file yang cocok, dan menyalurkannya sebagai input sort.

Daniel Beck
sumber
3
Bagaimana dengan ... sort *? Tidak ada penggunaan kucing yang tidak berguna, tidak ada penggunaan tipuan yang tidak berguna, terpendek untuk mengetik, dan paling mudah untuk dipikirkan, dan saya percaya GNU sort akan memperlakukan Anda dengan optimasi skalabilitas untuk file yang sangat besar (tidak begitu yakin tentang itu - setengah mengingat sesuatu di sana)
sehe
@sehe Mungkin. Saya hanya menggunakan contoh untuk menunjukkan keduanya berbeda. Ini bukan tentang penggunaan jenis efisien. Sortir lebih fleksibel daripada itu, tentu saja.
Daniel Beck
@DanielBeck, Mengenai efisiensi, sort < txtfilejauh lebih efisien daripada cat txtfile | sort?
Pacerier