.desktop 파일에서 공백을 이스케이프 처리하는 방법


15

여기에 설명 된.desktop 것과 같은 파일 을 만들고 싶습니다 .

[Desktop Entry]
Name=Sublime Text 2
GenericName=Sublime Text 2
Comment=Edit text files
Exec=/home/user/opt/sublime/Sublime Text 2/sublime_text %U

그러나 Open with this를 사용하여 노틸러스의 컨텍스트 메뉴에서 실행 하면 나에게

'/ home / user / opt / sublime / Sublime'을 찾을 수 없습니다

그래서 나는 시도했다

Exec="/home/user/opt/sublime/Sublime Text 2/sublime_text" %U

그리고있어

". (텍스트는 '"/ home / user / opt / sublime / Sublime')와 일치하는 따옴표를 찾기 전에 텍스트가 종료되었습니다.

파일 Exec줄 에서 공백을 이스케이프 처리하는 올바른 방법은 무엇입니까 .desktop?

답변:


5

각 공간 앞에 백 슬래시를 추가하십시오.

[Desktop Entry]
Name=Sublime Text 2
GenericName=Sublime Text 2
Comment=Edit text files
Exec=/home/user/opt/sublime/Sublime\ Text\ 2/sublime_text %U

4
작동하지 않습니다 :Text ended just after a '\' character. (The text was '/home/user/opt/sublime/Sublime\')
nh2

웃긴, 그것은 나를 위해 작동합니다.
1 월

우리는 같은 버전을 사용합니까? GNOME nautilus 3.4.212.04에.
nh2

그런데 우분투 16.04에서 큰 따옴표뿐만 아니라 나를 위해 작동합니다. 그러나 공백을 이스케이프하거나 경로 및 아이콘 값을 인용하면 응용 프로그램이 실행되지 않을 수 있습니다 (내 컴퓨터에서는 대시 아이콘이 깜박이지만 아무것도하지 않으며 터미널 = true 인 경우에도 터미널을 열지 않습니다). 그런데 Exec을 탈출하지 않으면 같은 문제가 발생하므로 .desktop의 각 줄로 무엇을해야하는지 시간이 걸린다고 상상할 수 있습니다!
hsandt

이상한 ... 런처를 수동으로 실행하면 자동으로 작동하지 않습니다. 이 기능은 매우 버그가 있습니다.
Adrian Lopez

3

나는 정확히 같은 문제를 겪고 있었다! 다양한 이스케이프 / 따옴표 패턴을 시도한 후 가장 간단한 해결책은 sublime_text$ PATH에 대한 심볼릭 링크를 사용하는 것입니다 (또는 명령 줄 별칭을 사용할 수 있음).

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[C]=/usr/share/Sublime Text 2/Icon/256x256/sublime_text.png
Name[C]=Sublime Text 2
Exec=Sublime-Text-2 %U
Comment[C]=Text Editor
Name=Sublime Text 2
Comment=Text Editor
Icon=/usr/share/Sublime Text 2/Icon/256x256/sublime_text.png
X-Desktop-File-Install-Version=0.21

4
이것은 합리적인 해결 방법이지만, 우리는 여전히 우리가하는 방법을 모른다 의미 에서 공간을 사용하는 .desktop파일입니다.
nh2

2
동의하지만 Exec, 우리가 잘못 구현하는 대신 버그가있는 것처럼 보입니다 . 다른 속성의 경로에 이스케이프되지 않은 공백 / 인용되지 않은 문자열을 사용할 수 있기 때문에 공백을 값의 끝으로 해석합니다.
c24w

3

""따옴표 대신 ''따옴표를 사용해 보셨습니까? Exec 줄에 공백이있는 사용자 정의 된 .desktop 파일이 있으며 '따옴표로 작동합니다.


3

( http://monkeyhacks.com/post/how-to-install-sublime-text-2-on-ubuntu-14-04 ) 사이트 에서 설치 지침을 따를 때도 같은 문제가 있습니다. 그래서 내 솔루션은 :

  1. "sublime"이라는 소프트 링크 제거 / 삭제 /usr/bin

  2. "SublimeText 2"폴더의 이름을 "SublimeText2"로 바꾸어 공백을 모두 제거하십시오.

  3. 다음에서 소프트 링크를 다시 작성하십시오 /usr/bin/.

    sudo ln -s /opt/SublimeText2/sublime_text /usr/bin/sublime
    
  4. 다음을 포함하여 .desktop 파일을 만드십시오.

    Exec=/opt/SublimeText2/sublime_text %U
    Icon=/opt/SublimeText2/Icon/48x48/sublime_text.png
    


0

우분투 12.04에서 그놈 노틸러스 3.4.2를 사용하여 동일한 문제가 발생했습니다. Moblin UI Framework의 동일한 문제에 대한 버그 보고서 에서이 대체 해결 방법을 찾았습니다 . $ PATH에 모든 단일 폴더를 추가해야하는 경우를 선호합니다.

해결 방법은 다음과 같습니다.
"공백이없는 경로에 기호 링크를 작성하고 EXEC 필드를 해당 링크로 지정하십시오."


-1

.desktop 파일은 셸과 같은 방식으로 따옴표, 공백 및 이스케이프 문자를 처리하지 않습니다. 아마도 가장 좋은 방법은 exec 줄에서 쉘을 호출하여 다음과 같이 예상되는 동작을 얻는 것입니다.

[Desktop Entry]
Name=Sublime Text 2
GenericName=Sublime Text 2
Comment=Edit text files
Exec=sh -c "/home/user/opt/sublime/Sublime Text 2/sublime_text" %U

자세한 내용은를 참조하십시오 man sh. 다른 답변과 마찬가지로 심볼릭 링크를 만들고 유지 관리하지 않아도됩니다.


이 솔루션은 파일 경로와 같은 인수를 궁극적으로 호출 된 명령에 전달하지 않습니다. -1
David Foerster

허. 분명히 그것은 또한 신뢰할 수 없습니다. 게시하기 전에이 솔루션을 테스트했으며 작동했습니다. 그러나 테스트가 올바른지 확인하기 위해 테스트를 수정했으며 이제는 작동 방식으로 복원 한 후에도 작동하지 않습니다. 기묘한.
KDØBPV
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.