Solusi 1:Menggunakan substitusi proses
Cara paling nyaman untuk melakukan ini adalah dengan menggunakan substitusi proses. Dalam bash sintaks terlihat sebagai berikut:
foo -o >(other_command)
(Perhatikan bahwa ini adalah bashism. Ada solusi serupa untuk shell lain, tetapi intinya adalah ini tidak portabel.)
Solusi 2:Menggunakan pipa bernama secara eksplisit
Anda dapat melakukan hal di atas secara eksplisit/manual sebagai berikut:
-
Buat pipa bernama menggunakan
mkfifo
perintah.mkfifo my_buf
-
Luncurkan perintah Anda yang lain dengan file itu sebagai input
other_command < my_buf
-
Jalankan
foo
dan biarkan ia menulis hasilnya kemy_buf
foo -o my_buf
Solusi 3:Menggunakan /dev/stdout
Anda juga dapat menggunakan file perangkat /dev/stdout
sebagai berikut
foo -o /dev/stdout | other_command
Anda dapat menggunakan keajaiban UNIX dan membuat pipa bernama :)
-
Buat pipa
$ mknod -p mypipe
-
Mulai proses yang membaca dari pipa
$ second-process < mypipe
-
Mulai proses, yang menulis ke dalam pipa
$ foo -o mypipe
Demi membuat stackoverflow senang, izinkan saya menulis kalimat yang cukup panjang karena solusi yang saya usulkan hanya sepanjang 18 karakter, bukan 30+
yang diperlukanfoo -o /dev/stdout
Pipa bernama bekerja dengan baik, tetapi Anda memiliki sintaks yang lebih bagus dan lebih langsung yang tersedia melalui substitusi proses bash yang memiliki manfaat tambahan karena tidak menggunakan pipa bernama permanen yang nantinya harus dihapus (substitusi proses menggunakan pipa bernama sementara di belakang layar):
foo -o >(other command)
Juga, jika Anda ingin mem-pipe output ke perintah Anda dan juga menyimpan output ke file, Anda dapat melakukan ini:
foo -o >(tee output.txt) | other command