다른 열린 터미널에서 명령을 실행할 수 있습니까? 다른 터미널에서 명령 출력을 리디렉션할 수 있다는 것을 알고 있습니다. 예를 들어:
ls >/dev/pts/x
여기서 x는 tty
대상 터미널에서 실행하여 얻을 수 있습니다. 그러나 명령은 현재 터미널에서 실행됩니다. 그것은 내가 원하는 것이 아닙니다.
내 실제 목표가 무엇인지 명확히 하기 위해 열려 있는 모든 터미널에 명령을 보내 각 터미널을 다시 열지 않고도 색상 테마를 변경하고 싶습니다.
답변1
/dev/pts/N
간단히 작성하여 터미널에 색상/커서 이스케이프를 보낼 수 있습니다. /dev/ttyN
예를 들어 /dev/pts/5
xterm인 경우 설정할 수 있습니다.배경어디서나 빨간색으로 전환하세요 printf %b '\e]11;#ff0000\a' > /dev/pts/5
(물론 쓰기 권한이 필요함 /dev/pts/5
).
이러한 명령을 실행하면 터미널에서 실행 중인 프로그램이 보낸 다른 이스케이프를 심각하게 방해할 가능성이 적지만 최악의 경우 터미널을 혼란스럽게 만들 뿐입니다.
다른 터미널/세션에서 프로그램을 실행하는 보다 일반적인 문제의 경우, 내가 생각하기에 가능하다고 생각되는 유일한 방법은 해당 터미널에서 실행 중인 프로세스를 하이재킹하고 거기에서 프로그램을 포크+실행하는 것입니다. 예:
gdb -p PID -batch -ex 'p system("ls")'
프로그램이 터미널에서 데이터를 읽어야 하는 경우에는 실행 전에 프로세스를 포그라운드 프로세스 그룹에 추가해야 합니다.