나는 단지 내 터미널(Gnome Terminal)에서 장난을 치고 있었습니다. 새 파일이나 파이프를 만들지 않고 한 터미널의 출력을 다른 터미널로 보낼 수 있는 방법이 있는지 궁금합니다.
예: 첫 번째 터미널에서 실행 ls
하고 해당 출력을 두 번째 터미널에 표시하려고 합니다(두 번째 터미널에 명령이 있든 없든).
답변1
두 터미널이 모두 동일한 사용자에 속해 있는 경우 특정 터미널의 tty로 사용되는 가상 장치로 출력을 보낼 수 있습니다.
따라서 출력 w
(TTY 정보 포함)을 사용하여 장치에 직접 쓸 수 있습니다.
ls > /dev/pts/7
(언급된 장치 w
가 pts/7인 경우)
또 다른 옵션은 장치에 연결된 프로세스 ID를 사용하는 것입니다. 출력을 으로 보냅니다 /proc/<process number>/fd/1
.
ls > /proc/5555/fd/1
이 터미널에서 실행 중인 프로세스 번호가 5555라고 가정해 보겠습니다.
직접 쓰기는 다음 경우에만 허용됩니다.쓰려는 사용자는 다른 터미널을 소유한 동일한 사용자입니다..
답변2
write
명령을 사용할 수 있습니다 .
@MelBurslan이 언급했듯이 쓰기 권한이 꺼져 있으면 먼저 다음을 실행하십시오.
$ mesg y
~에서man mesg
옵션
y는 터미널에 대한 쓰기 액세스를 허용합니다.
쓰기 사용법:
$ write username tty
예를 들어 ls
출력을 다른 터미널로 보냅니다.
$ w
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user :0 :0 08:15 ?xdm? 7:37 0.25s init --user
user pts/0 :0 08:19 1.00s 0.09s 0.01s w
user pts/12 :0 08:50 54.00s 0.03s 0.03s bash
$ ls | write username pts/12
답변3
비슷한 방법을 찾았습니다.
첫 번째 터미널에서:
$ tty
/dev/pts/0
$ <no need to run any command here, just see the output>
두 번째 터미널에서:
$ ls > /dev/pts/0
이제 첫 번째 터미널에서 출력을 얻을 수 있습니다
답변4
예를 들어 터미널의 TTY에 쓸 수 있습니다.
제1터미널:
$ tty
ttys000
제2터미널:
$ tty
ttys029
$ exec &> >(tee >(cat >&/dev/ttys000))
ls
입력하는 동안에도 출력이 실시간으로 두 터미널에 모두 표시됩니다.
Linux 및 macOS에서 사용 가능합니다. macOS TTY 경로는 /dev/{number}
다음과 같습니다. Linux에서는 다음과 같습니다./dev/pts/{number}