![gnome 터미널에 프로그래밍 방식으로 쿼리할 수 있는 명령: 탭 수 및 비밀번호는 무엇입니까?](https://linux55.com/image/179805/gnome%20%ED%84%B0%EB%AF%B8%EB%84%90%EC%97%90%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%20%EB%B0%A9%EC%8B%9D%EC%9C%BC%EB%A1%9C%20%EC%BF%BC%EB%A6%AC%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EB%AA%85%EB%A0%B9%3A%20%ED%83%AD%20%EC%88%98%20%EB%B0%8F%20%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
gnome 터미널을 열 때 프로그래밍 방식으로 gnome 터미널을 쿼리할 수 있는 명령이 있습니까?
그놈 터미널에는 몇 개의 탭이 열려 있습니까?
각 탭의 비밀번호는 무엇입니까?
밤에 가상 머신을 잃어버렸기 때문에 위의 정보를 저장한 다음 다음날 로그인할 때 프로그래밍 방식으로 모든 gnome 터미널을 다시 여는 스크립트를 작성하고 싶습니다.
답변1
dbus
;를 사용하여 열려 있는 창과 탭을 열거하고 해당 탭으로 직접 이동할 수 있습니다.
dbus-send --session --dest="org.gnome.Terminal" --print-reply /org/gnome/Terminal org.freedesktop.DBus.ObjectManager.GetManagedObjects | grep -c /screen/
몇 개가 열려 있는지 알려줄 것입니다.
쉘이 VTE와 협력하는 경우 GNOME 터미널은 탭에서 실행 중인 각 쉘의 마지막 현재 디렉토리를 알 것입니다(쉘이 아닌 경우 각 탭에서 실행 중인 리프 프로세스의 현재 디렉토리는 아님). 버스를 통해 검색할 수 있는 방법이 있나요?
너 뭐야할 수 있는do는 상위 프로세스가 GNOME 터미널인 모든 "리프" 프로세스의 현재 작업 디렉터리를 나열합니다.
pstree -T -p $(pgrep gnome-terminal) |
sed -E 'sX^.*\(([0-9]+)\)$X/proc/\1/cwdX' |
xargs readlink -f
이것은 어느 탭이 어디에 있는지 알려주지는 않지만 그것이 중요한지는 확실하지 않습니다(내가 아는 한 각 탭이 무엇에서 실행되고 있는지 확인할 방법이 없습니다). 이 방법의 변형을 사용하면 현재 작업 디렉터리뿐 아니라 무엇이 실행되고 있는지 알아낼 수 있습니다.