Saya bertanya-tanya apakah ada cara untuk mem-pipe output dari sebuah perintah dan mengarahkannya ke stdout. Jadi misalnya, fortune
mencetak kue keberuntungan dan juga menyalinnya ke clipboard:
$ fortune | tee >(?stdout?) | pbcopy
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and
the Ugly)."
(By Matt Welsh)
fortune | tee $(tty) | pbcopy
?Jawaban:
Asumsi Anda:
tidak akan berfungsi karena
fortune
output akan ditulis ke standar dua kali, jadi Anda akan menggandakan output kepbcopy
.Di OSX (dan dukungan sistem lainnya
/dev/std{out,err,in}
), Anda dapat memeriksanya:output
2
dua kali alih-alih1
dan2
.Anda harus menggunakan deskriptor file lain, contoh kesalahan standar melalui
/dev/stderr
:atau gunakan
tty
untuk mendapatkan terminal semu yang terhubung:Dengan
zsh
danmultios
opsi diset, Anda tidak perlutee
sama sekali:sumber
tee $(tty)
Atau, Anda tahu,tee /dev/tty
tee
selalu menulis ke output standarnya. Jika Anda ingin mengirim data ke perintah di samping terminal di mana output standar sudah berjalan, cukup gunakan substitusi proses dengan perintah itu. (Perhatikan bahwa meskipun dimulai dengan>
, substitusi proses tidak mengarahkan output standar,tee
perintah melihatnya sebagai parameter.)sumber
cuonglm mengatakan itu semua.
Coba saja:
tty
harus menyelesaikan terminal pseudo aktual (seperti/dev/pts/99
) dalam sesi interaktif (yaitu dalam terminal), atau tidak ada tty dalam batch, at dan daemon.sumber