Запишіть команду в один термінал, дивіться результат на іншому


35

Я хочу запустити командний foo на одному терміналі і передати результат іншому терміналу. Чи можна це зробити?


4
Також розгляньте tmux і екран , обидва з яких дозволяють вам переглядати, дзеркально чи просто виконувати команди на інших сесіях.
Кевін

Відповіді:


46

Так. Малюнок вартістю тисячі слів:

термінал Раду

Отже, ви повинні перенаправити вихід своєї команди за допомогою >оператора на /dev/pts/#. Ви можете знайти, #використовуючи whoабо wкомандувати. Якщо tou хочете переспрямувати та помилки, скористайтеся:

<command> >& /dev/pts/#

Спасибі. але якщо іншого терміналу не існує. що нам робити? Або краще сказати, передайте його новішому?
Mohammad Reza Rezwani

5
Для цього вам, мабуть, знадобиться сценарій: скрипт візьме як аргумент вашу команду, після чого повинен відкрити нову gnome-terminalта виявити tty (використовуючи ttyкоманду) нового терміналу і нарешті надіслати вихід до нього.
Radu Rădeanu

8

Щось таке для вашого $HOME/.bashrc:

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

Це запустить команду і покаже результат у новому вікні терміналу.

Приклади:

ng ls -l
ng echo foo

Редагувати. Щоб розглянути псевдоніми, $HOME/.bashrcвикористовуйте це замість цього:

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

тоді вихід lsмає бути кольоровим (спасибі Раду Радеану за цей натяк ).


Це запустить команду безпосередньо в новому терміналі.
Radu Rădeanu

Так, але яка перевага запустити його спочатку в старому терміналі?
TuKsn

Немає переваги ..., але насправді це відповідь на цей коментар .
Radu Rădeanu

4
Ви зрозумієте, чи будете бігати, type lsа потім ng type ls:)
Radu Rădeanu

1
якщо функція запису в одному рядку в bashrc, можливо, потрібна крапка з комою, щоб закінчити її, або ви зустрінетеся з помилкою "несподіваний кінець файлу". так ng() { gnome-terminal -x sh -c "$*; bash" ;}має бути краще. А якщо ви використовуєте xfce (xfce4-термінал як емулятор за замовчуванням): ng() { xfce4-terminal -x sh -c "$*; bash" ;}або ви можете просто запустити будь-який емулятор за замовчуваннямng() { x-terminal-emulator -x sh -c "$*; bash";}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.