Tulis perintah di satu terminal, lihat hasilnya di terminal lain


35

Saya ingin menjalankan perintah foo di satu terminal dan meneruskan hasilnya ke terminal lain. Apakah mungkin melakukan ini?


4
Lihat juga tmux dan layar , yang keduanya memungkinkan Anda untuk mengambil alih, mirror, atau hanya menjalankan perintah pada, sesi lain.
— Kevin

Jawaban:


46

Ya itu. Sebuah gambar yang bernilai ribuan kata:

terminal radu

Jadi, Anda harus mengarahkan output dari perintah Anda menggunakan >operator ke /dev/pts/#. Anda dapat menemukan #menggunakan whoatau wperintah. Jika tou ingin mengarahkan dan kesalahan, gunakan:

<command> >& /dev/pts/#

Terima kasih. tetapi jika terminal lain tidak ada. apa yang harus kita lakukan? Atau lebih baik untuk mengatakan meneruskannya ke yang lebih baru?
— Mohammad Reza Rezwani

5
Anda mungkin memerlukan skrip untuk melakukan itu: skrip akan mengambil sebagai argumen perintah Anda kemudian harus membuka yang baru gnome-terminaldan mendeteksi tty (menggunakan ttyperintah) dari terminal baru dan akhirnya mengirim output ke sana.
— Radu Rădeanu

8

Sesuatu seperti ini untuk Anda $HOME/.bashrc:

ng() { gnome-terminal -x sh -c "$*; bash"; }

Ini akan menjalankan perintah dan menunjukkan hasilnya pada jendela terminal baru.

Contoh:

ng ls -l
ng echo foo

Sunting: Untuk mempertimbangkan alias dari $HOME/.bashrcpenggunaan ini sebagai gantinya:

ng() { gnome-terminal -x bash -ic "$*; bash"; }

maka output dari lsharus diwarnai (terima kasih kepada Radu Rădeanu untuk petunjuk ini ).


Ini akan menjalankan perintah langsung di terminal baru.
— Radu Rădeanu

Ya tapi apa untungnya menjalankannya terlebih dahulu di terminal lama?
— TuKsn

Tidak ada keuntungan ..., tetapi sebenarnya jawaban ini untuk komentar ini .
— Radu Rădeanu

4
Anda akan mengerti jika Anda akan menjalankan type lsdan kemudian ng type ls:)
— Radu Rădeanu

1
jika menulis fungsi dalam satu baris dalam bashrc, mungkin perlu titik koma untuk mengakhirinya, atau Anda akan menemukan kesalahan "akhir file yang tidak terduga". jadi ng() { gnome-terminal -x sh -c "$*; bash" ;}harus lebih baik. Dan jika Anda menggunakan xfce (xfce4-terminal sebagai emulator default): ng() { xfce4-terminal -x sh -c "$*; bash" ;}atau Anda dapat menjalankannya dengan emulator default apa punng() { x-terminal-emulator -x sh -c "$*; bash";}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.