Выполнить команду в одном терминале и получить вывод в другом терминале, это возможно? как?
Выполните команду в одном терминале и получите вывод в другом терминале
2 ответа
Возможно с чем-то известным как named pipe
,
Вот основная демонстрация:
- Откройте окно терминала 1.
- Тип
mkfifo /tmp/myPipe
и нажмите ввод - Тип
echo "Hello Named Pipe" > /tmp/myPipe &
и нажмите ввод - Открытый терминал 2
- Бежать
cat /tmp/myPipe
чтобы увидеть результат
Другое возможное решение - иметь screen
сеанс работает, и присоедините / отсоедините его.
На принимающем терминале выполните команду w
, Это напечатает список текущих запущенных сессий, например, когда я запускаю команду, она печатает:
13:39:22 up 11 min, 3 users, load average: 0.32, 0.50, 0.33
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
sebastia tty8 :0 13:27 11:52 21.10s 0.31s cinnamon-session --session cinnamon
sebastia pts/1 :0 13:36 10.00s 23.90s 0.29s sudo apt-get update
sebastia pts/3 :0 13:37 1.00s 0.11s 0.01s w
Тот, в котором вы находитесь, конечно, тот, с командой w
(Перечислено в колонке WHAT
).
В этом списке вы также найдете раздел TTY
, Там вы увидите имя файла буфера терминала, например pts/3
за тот, кого я казнил w
в.
Теперь давайте предположим, что я хочу выполнить команду, запущенную в pts1, чтобы напечатать ее вывод в pts3. Это можно сделать так (используя команду сверху):
sudo apt-get update > /dev/pts/3
Это перенаправит весь вывод на pts3. Тем не менее, он не будет принимать никакой информации оттуда. К сожалению, мне не удалось найти решение для этого. (Дополнения приветствуются)
В зависимости от того, чего вы пытаетесь достичь, терминальный мультиплексор, такой как Tmux или GNU Screen, может лучше подходить для этой задачи. например, с Tmux, действуйте следующим образом:
Запустите Tmux с помощью команды tmux
, Вы попадете в новую оболочку. Выполните свою команду там.
В приемном терминале запустите tmux a
присоединить к существующему сеансу Tmux. Теперь вы можете взаимодействовать с этим терминалом.
Если вы хотите сделать это, вы можете в любое время отсоединиться от Tmux с помощью Ctrl+B, а затем D. Вы можете прикрепить его из любого места tmux a
,