Pada saat saya menulis ini, sintaks jawaban yang diterima salah untuk sebagian besar, jika tidak semua, cangkang yang diturunkan dari Bourne, termasuk bash
. Saya menyarankan edit ke atas dan menerima jawaban untuk memperbaikinya, tetapi saya juga cenderung menambahkan semua informasi ini, dan ini akan lebih berupa penulisan ulang daripada edit.
Anda dapat menggunakan perintah majemuk:
{ grep ...; bzgrep ...; } >file
..atau subkulit (perhatikan tanda kurung alih-alih kurung kurawal):
(grep ...; bzgrep ...) >file
..untuk mengelompokkan perintah. Cara subshell memiliki sintaksis yang lebih bagus (lebih memaafkan kurangnya ruang putih dan memungkinkan Anda untuk menghilangkan titik koma terakhir), tetapi itu baik garpu proses baru, atau "berpura-pura" dengan memiliki perintah berjalan di lingkungan yang dibersihkan. Keduanya memiliki kelebihan tergantung pada apa yang ingin Anda lakukan, yang tidak penting di sini, tetapi patut dicari jika Anda ingin lebih mahir dengan shell.
Catatan: Anda juga dapat menggunakan pipelining dengan trik-trik ini, sehingga Anda dapat melakukan sesuatu seperti ini:
{ grep ...; bzgrep ...; } | less
PS jika Anda tidak peduli tentang urutan pertandingan dalam output gabungan Anda, Anda bisa menggunakan satu &
di antara dua perintah, seperti: { grep ... & bzgrep ...; }
. Kemudian kedua perintah berjalan secara bersamaan: yang grep
diluncurkan dan shell meletakkannya di latar belakang, maka shell akan menjalankan bzgrep
. (Tapi ada peringatan kecil dengan itu, dengan penjelasan yang melibatkan pengalihan file dan buffering aliran file berpotensi menyebabkan sebagian kecil dari baris dalam file output menjadi terpecah / hancur: apakah Anda akan melihat ini tergantung pada bagaimana Anda grep
, bzgrep
, dan libc
stdio.h
fungsi diimplementasikan. Pada sebagian besar implementasi, saya percaya memipakan perintah sebelum mengalihkan ke file akan menghindari masalah, sehingga Anda bisa melakukan { foo & bar; } | cat - >file
sebagai solusinya.)