Biasanya, kita hanya perlu melewati satu argumen:
echo abc | cat
echo abc | cat some_file -
echo abc | cat - some_file
Apakah ada cara untuk menyampaikan dua argumen? Sesuatu seperti
{echo abc , echo xyz} | cat
cat `echo abc` `echo xyz`
Saya hanya bisa menyimpan kedua hasil dalam file terlebih dahulu
echo abc > file1
echo xyz > file2
cat file1 file2
Tapi kemudian saya mungkin tidak sengaja menimpa file, yang tidak ok. Ini akan menjadi skrip non-interaktif. Pada dasarnya, saya perlu cara untuk meneruskan hasil dari dua perintah sewenang-wenang cat
tanpa menulis ke file.
PEMBARUAN: Maaf, contohnya menutupi masalah. Meskipun { echo abc ; echo xyz ; } | cat
tampaknya berfungsi, outputnya adalah karena echo
s, bukan cat
.
Contoh yang lebih baik adalah { cut -f2 -d, file1; cut -f1 -d, file2; } | paste -d,
yang tidak berfungsi seperti yang diharapkan.
Dengan
file1:
a,b
c,d
file2:
1,2
3,4
Output yang diharapkan adalah:
b,1
d,3
TERSELESAIKAN:
Gunakan substitusi proses :cat <(command1) <(command2)
Atau, buat pipa bernama menggunakan mkfifo
:
mkfifo temp1
mkfifo temp2
command1 > temp1 &
command2 > temp2 &
cat temp1 temp2
Kurang elegan dan lebih bertele-tele, tetapi berfungsi dengan baik, selama Anda memastikan temp1 dan temp2 tidak ada sebelumnya.