Выполнить команду на одном терминале и получить вывод на другом терминале
Возможный с чем-то известным как named pipe
.
Вот основная демонстрация:
mkfifo /tmp/myPipe
и хит входитecho "Hello Named Pipe" > /tmp/myPipe &
и хит входитcat /tmp/myPipe
видеть выводДругое возможное решение состоит в том, чтобы иметь a 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 может лучше подойти для этой задачи. например, с Tmux, продолжите двигаться следующим образом:
Запустите Tmux с команды tmux
. Вы будете отброшены к новой оболочке. Выполните свою команду там.
В приемном терминале, выполненном tmux a
присоединить к существующей сессии Tmux. Можно теперь взаимодействовать с этим терминалом.
Если Вы хотите сделать так, можно отсоединиться от Tmux в любое время с Ctrl+B, сопровождаемым D. Можно повторно прикрепить отовсюду с tmux a
.