Pertanyaan Tuliskan perintah di satu terminal, lihat hasil pada yang lain


Saya ingin menjalankan perintah foo di satu terminal dan memberikan hasilnya ke terminal lain. Mungkinkah melakukan ini?


35
2017-07-12 16:47


asal


Lihat juga tmux dan layar, keduanya memungkinkan Anda untuk mengambil alih, mencerminkan, atau hanya menjalankan perintah, sesi lain. - Kevin


Jawaban:


Ya itu. Sebuah gambar yang bernilai seribu kata:

radu's terminal

Jadi, Anda harus mengarahkan output dari perintah Anda menggunakan > operator ke /dev/pts/#. Kamu dapat menemukan # menggunakan who atau w perintah. Jika tou ingin mengarahkan ulang dan kesalahan, gunakan:

<command> >& /dev/pts/#

46
2017-07-12 17:01



Terima kasih. tetapi jika terminal lain tidak ada. apa yang harus kita lakukan? Atau lebih baik mengatakan lulus ke yang lebih baru? - Mohammad Reza Rezwani
Anda mungkin perlu skrip untuk melakukan itu: skrip akan mengambil argumen perintah Anda kemudian harus membuka yang baru gnome-terminal dan mendeteksi tty (menggunakan tty perintah) dari terminal baru dan akhirnya mengirim output ke sana. - Radu Rădeanu


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

Edit: Untuk mempertimbangkan alias dari $HOME/.bashrc gunakan ini sebagai gantinya:

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

lalu output dari ls harus diwarnai (terima kasih kepada Radu Rădeanu untuk ini petunjuk).


8
2017-07-12 17:38



Ini akan menjalankan perintah langsung di terminal baru. - Radu Rădeanu
Ya tetapi apa keuntungannya untuk menjalankannya terlebih dahulu di terminal lama? - TuKsn
Tidak ada keuntungan ..., tetapi sebenarnya jawaban ini untuk komentar ini. - Radu Rădeanu
Anda akan mengerti jika Anda akan berlari type ls lalu ng type ls :) - Radu Rădeanu
jika fungsi tulis dalam satu baris di bashrc, mungkin perlu titik koma untuk mengakhirinya, atau Anda akan menemui kesalahan "file yang tidak diharapkan". begitu ng() { gnome-terminal -x sh -c "$*; bash" ;} seharusnya 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 ng() { x-terminal-emulator -x sh -c "$*; bash";}