Cách thoát khoảng trắng trong tệp .desktop Dòng Exec


15

Tôi muốn làm một .desktoptập tin như được mô tả ở đây .

[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

Tuy nhiên, việc chạy nó từ menu ngữ cảnh của Nautilus bằng Open with này mang lại cho tôi

Không thể tìm thấy '/ home / user / opt / sublime / Sublime'

Vì vậy, tôi đã cố gắng

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

và có

Văn bản đã kết thúc trước khi trích dẫn phù hợp được tìm thấy cho ". (Văn bản là '" / home / user / opt / sublime / Sublime')

Cách chính xác để thoát khoảng trắng trong Execdòng .desktoptệp là gì?

Câu trả lời:


5

Trước mỗi không gian bằng dấu gạch chéo ngược:

[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
Điều đó không hoạt động:Text ended just after a '\' character. (The text was '/home/user/opt/sublime/Sublime\')
nh2

Buồn cười, nó làm việc cho tôi.
tháng 1

Chúng ta có sử dụng các phiên bản giống nhau không? GNOME nautilus 3.4.2ngày 12.04.
nh2

Làm việc cho tôi trên Ubuntu 16.04, cũng như báo giá gấp đôi. Tuy nhiên, KHÔNG thoát khỏi không gian cũng như trích dẫn các giá trị Đường dẫn và Biểu tượng, nó có thể khiến ứng dụng không chạy (trên máy tính của tôi, biểu tượng dấu gạch ngang nhấp nháy nhưng không làm gì, thậm chí không mở thiết bị đầu cuối ngay cả khi Terminal = true). Nhân tiện, nếu bạn không thoát Exec, thì bạn có thể tưởng tượng tôi phải mất một thời gian để tìm xem phải làm gì với từng dòng của .desktop!
hsandt

Thật kỳ lạ ... Điều này hoạt động nếu tôi chạy launcher bằng tay, nhưng nó không tự động khởi động. Tính năng này là siêu lỗi.
Adrian Lopez

3

Tôi đã có chính xác cùng một vấn đề! Sau khi thử nhiều kiểu thoát / trích dẫn khác nhau, tôi quyết định giải pháp đơn giản nhất là có một liên kết tượng trưng đến sublime_texttrên $ PATH của tôi (hoặc bạn có thể sử dụng bí danh dòng lệnh).

[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
Đây là một cách giải quyết hợp lý, nhưng chúng tôi vẫn không biết chúng tôi dự định sử dụng khoảng trắng trong .desktoptệp như thế nào .
nh2

2
Đồng ý, mặc dù với tôi nó chỉ có vẻ lỗi trong cách Execphân tích cú pháp, thay vì chúng tôi thực hiện không chính xác. Nó diễn giải một khoảng trắng là phần cuối của giá trị, là số lẻ, vì bạn có thể sử dụng các khoảng trắng / chuỗi không trích dẫn cho các đường dẫn trong các thuộc tính khác!
c24w

3

Bạn đã thử sử dụng dấu ngoặc kép '' thay vì dấu ngoặc kép "" chưa? Tôi có một tệp .desktop tùy chỉnh có khoảng trắng trong dòng Exec và tôi làm việc với dấu ngoặc kép ''.


3

Tôi đã gặp vấn đề tương tự khi làm theo hướng dẫn cài đặt từ trang web ( http://monkeyhacks.com/post/how-to-install-sublime-text-2-on-ubfox-14-04 ) .. Vì vậy, giải pháp của tôi là :

  1. Xóa / xóa liên kết mềm gọi là "cao siêu" khỏi /usr/bin

  2. Xóa tất cả các khoảng trắng của thư mục "Sublime Text 2" bằng cách đổi tên thành "SublimeText2"

  3. Tạo lại một liên kết mềm trong /usr/bin/:

    sudo ln -s /opt/SublimeText2/sublime_text /usr/bin/sublime
    
  4. Tạo tệp .desktop bao gồm:

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


0

Tôi gặp vấn đề tương tự khi sử dụng Gnome nautilus 3.4.2 trong Ubuntu 12.04. Tôi đã tìm thấy cách giải quyết thay thế này trong một báo cáo lỗi cho cùng một vấn đề trong Khung giao diện người dùng Moblin mà tôi thích với một đề cập mà bạn cần thêm mỗi thư mục vào $ PATH.

Cách giải quyết đơn giản là:
"Tạo một liên kết tượng trưng trong một đường dẫn không có khoảng trắng và trỏ trường EXEC vào liên kết đó."


-1

Các tệp .desktop không xử lý dấu ngoặc kép, dấu cách và ký tự thoát giống như cách trình bao. Có lẽ, tùy chọn tốt nhất sẽ là gọi một shell trong dòng exec của bạn để có được hành vi mong đợi, như vậy:

[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

Để biết thêm thông tin, xin vui lòng xem man sh. Điều này cũng tránh việc phải tạo và duy trì các liên kết tượng trưng, ​​như bạn sẽ làm với các câu trả lời khác.


Giải pháp này không chuyển các đối số, ví dụ: đường dẫn tệp, đến lệnh được gọi cuối cùng. -1
David Foerster

Huh. Rõ ràng nó cũng không đáng tin cậy. Tôi đã thử nghiệm giải pháp này trước khi đăng nó, và nó đã hoạt động. Nhưng sau đó tôi đã sửa đổi thử nghiệm của mình để kiểm tra xem bạn có đúng không, và bây giờ nó KHÔNG hoạt động, ngay cả sau khi khôi phục nó về cách nó hoạt động. Kỳ dị.
KDØBPV ngày
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.