Linux에서 실행 중인 GUI 애플리케이션의 이름과 경로를 찾는 방법은 무엇입니까?

Linux에서 실행 중인 GUI 애플리케이션의 이름과 경로를 찾는 방법은 무엇입니까?

내 시스템에 대해 더 자세히 알고 싶습니다. 예를 들어 GUI 애플리케이션 "인쇄"를 시작했습니다. 제목에 빛나는 좋은 이름.

/usr/bin에 "printing" 파일이 없습니다.

"printgui"와 같이 "인쇄" 대신 파일 시스템에 응용 프로그램의 실제 이름을 표시하는 몇 가지 트릭이 있습니까?

답변1

일반적으로 GUI 응용 프로그램은 "실행기"를 통해 시작됩니다..desktop파일. 메뉴에 실제 이름 대신 "인쇄 중"이 표시되는 이유는 그것이 응용 프로그램의 "일반 이름"이기 때문입니다(자세한 내용은 게시한 링크 참조). 사용 중인 DE에 따라 메뉴 항목을 마우스 오른쪽 버튼으로 클릭하고 선택하면 Edit해당 Properties앱의 실행 경로와 때로는 실제 이름을 볼 수 있습니다. Gnome 3과 같은 DE에서는 불가능하므로 DE에 관계없이 작동하는 솔루션이 있습니다.

.desktop/usr/share/applications파일은 매우 간단하게 grep-ing 에 위치합니다 .GenericName=인쇄 중해당 문자열을 포함하는 실행 프로그램을 하나 이상 나열해야 합니다.

예를 들어 내 시스템에는 "인쇄"가 없지만 "텍스트 편집기"가 있습니다. 응용 프로그램/실행 파일의 실제 이름을 알고 싶어서 다음을 실행합니다.

grep "GenericName=Text Editor" /usr/share/applications/*

출력은 다음과 같습니다.

/usr/share/applications/gedit.desktop:GenericName=Text Editor

따라서 "텍스트 편집기"의 "실행기"는 입니다 /usr/share/applications/gedit.desktop. 이제 "텍스트 편집기"의 실제 이름과 실행 파일을 알기 위해 두 키의 값을 파악해야 합니다: NameExec:

grep -E '(^Name=|^Exec=)' /usr/share/applications/gedit.desktop 

출력은 다음과 같습니다.

Name=gedit
Exec=gedit %U

실행 파일의 전체 경로는 문제이거나 실행 중입니다.

which gedit

그러면 다음이 반환됩니다.

/usr/bin/gedit

답변2

위의 답변을 스크립트로 바꾸었습니다.execCmdGnome3.sh아래에 표시됩니다. 나는 이 유틸리티를 사용하여 내가 알고 있는 그놈 쉘 이름을 가진 터미널에서 응용 프로그램을 호출하는 방법을 알아냅니다.

#!/bin/bash
#
# Name: execCmdGnome3.sh
# Usage e.g.: sudo execCmdGnome3.sh "Document Viewer" 
# Output: Found Launcher: "evince.desktop"
#         Name=Document Viewer
#         Exec=evince %U

launcher=`grep "$1" /usr/share/applications/* | sed s/.*applications.// | sed s/:.*// | uniq`
echo "Found Launcher: \"$launcher\""
grep -E '(^Name=|^Exec=)' "/usr/share/applications/$launcher"

관련 정보