열린 다른 터미널에서 명령을 실행하는 방법은 무엇입니까? [복사]

열린 다른 터미널에서 명령을 실행하는 방법은 무엇입니까? [복사]

다른 열린 터미널에서 명령을 실행할 수 있습니까? 다른 터미널에서 명령 출력을 리디렉션할 수 있다는 것을 알고 있습니다. 예를 들어:

ls >/dev/pts/x

여기서 x는 tty대상 터미널에서 실행하여 얻을 수 있습니다. 그러나 명령은 현재 터미널에서 실행됩니다. 그것은 내가 원하는 것이 아닙니다.

내 실제 목표가 무엇인지 명확히 하기 위해 열려 있는 모든 터미널에 명령을 보내 각 터미널을 다시 열지 않고도 색상 테마를 변경하고 싶습니다.

답변1

/dev/pts/N간단히 작성하여 터미널에 색상/커서 이스케이프를 보낼 수 있습니다. /dev/ttyN예를 들어 /dev/pts/5xterm인 경우 설정할 수 있습니다.배경어디서나 빨간색으로 전환하세요 printf %b '\e]11;#ff0000\a' > /dev/pts/5(물론 쓰기 권한이 필요함 /dev/pts/5).

이러한 명령을 실행하면 터미널에서 실행 중인 프로그램이 보낸 다른 이스케이프를 심각하게 방해할 가능성이 적지만 최악의 경우 터미널을 혼란스럽게 만들 뿐입니다.

다른 터미널/세션에서 프로그램을 실행하는 보다 일반적인 문제의 경우, 내가 생각하기에 가능하다고 생각되는 유일한 방법은 해당 터미널에서 실행 중인 프로세스를 하이재킹하고 거기에서 프로그램을 포크+실행하는 것입니다. 예:

gdb -p PID -batch -ex 'p system("ls")'

프로그램이 터미널에서 데이터를 읽어야 하는 경우에는 실행 전에 프로세스를 포그라운드 프로세스 그룹에 추가해야 합니다.

관련 정보