Saya baru saja menjalankan beberapa perintah di terminal dan saya mulai bertanya-tanya, apakah Unix/Linux mengambil jalan pintas saat menjalankan perintah pipa?
Misalnya, katakanlah saya memiliki file dengan satu juta baris, 10 baris pertama berisi hello world
. Jika Anda menjalankan perintah grep "hello world" file | head
apakah perintah pertama berhenti segera setelah menemukan 10 baris, atau terus mencari seluruh file terlebih dahulu?
Jawaban yang Diterima:
semacam. Shell tidak tahu apa yang akan dilakukan oleh perintah yang Anda jalankan, ia hanya menghubungkan output dari satu ke input yang lain.
Jika grep
menemukan lebih dari 10 baris yang mengatakan "hello world" lalu head
akan memiliki semua 10 baris yang diinginkan, dan tutup pipa. Ini akan menyebabkan grep
untuk dibunuh dengan SIGPIPE, sehingga tidak perlu melanjutkan pemindaian file yang sangat besar.