Trong linux, làm thế nào tôi có thể xác định trình soạn thảo văn bản mặc định, thiết bị đầu cuối, v.v ...?Làm thế nào để lập trình xác định ứng dụng mặc định trong linux
nó có thay đổi theo phân phối không?
Trong linux, làm thế nào tôi có thể xác định trình soạn thảo văn bản mặc định, thiết bị đầu cuối, v.v ...?Làm thế nào để lập trình xác định ứng dụng mặc định trong linux
nó có thay đổi theo phân phối không?
Tôi không nghĩ rằng khái niệm về mặc định trình chỉnh sửa hoặc thiết bị đầu cuối có ý nghĩa. Đối với trình soạn thảo, có quy ước sử dụng $EDITOR
khi được xác định.
Trên Debian và liên quan (ví dụ: Ubuntu, Mint), bạn có các đường dẫn như /usr/bin/editor
và /usr/bin/x-terminal-emulator
được liên kết tượng trưng (qua các liên kết trong /etc/alternatives/
) với một số hệ thống mặc định.
Xem thêm Dacav's answer
Biến môi trường cho mỗi người dùng cho bạn biết điều đó.
Tuy nhiên, điều này có giá trị đối với các phần mềm dòng lệnh, trong khi môi trường thường sử dụng các biến (nội bộ) của riêng mình.
Cũng trong python bạn có thể đọc các biến môi trường sử dụng os.getenv
.
vì vậy tôi nên tôi có thể (trong vỏ) echo $ EDITOR để xem nó là gì? Tôi vừa thử và nó chỉ cho tôi một dòng trống – sqram
Thực tế là có. Định nghĩa của nó không bắt buộc. Tôi đoán trong trường hợp nó không có mặt, nó mặc định trên một số giá trị dựa trên distro. Tôi không biết làm thế nào để có được nó trong trường hợp này. – Dacav
tôi truy cập danh sách trong khi trước đây programatically một cách khá xấu xí và tôi chắc chắn không phải là cách tốt nhất của mình. Các tùy chọn được lưu trữ trong một tập tin gọi là defaults.list (tôi nghĩ đây thường là trường hợp). Các vị trí là ít chung tôi nghĩ rằng nó trong/usr/share/applications/trên hệ thống ubuntu của tôi mặc dù nó xuất hiện ở những nơi khác tôi nghĩ. Sau đó tôi xử lý nó như một tập tin văn bản.
này hoạt động trong ubuntu/gnome:
>>> query_lines = subprocess.check_output(['update-alternatives',
'--query',
'gnome-text-editor']).split('\n')
>>> bestlist = filter(lambda l: 'Best' in l, query_lines)
>>> bestlist[0].split()[1]
'/usr/bin/gedit'
Nếu không phải trên gnome, ít nhất bạn có thể nhận được các biên tập viên dòng lệnh:
>>> query_lines = subprocess.check_output(['update-alternatives',
... '--query',
... 'editor']).split('\n')
>>> bestlist = filter(lambda l: 'Best' in l, query_lines)
>>> bestlist[0].split()[1]
'/bin/nano'
Trình tự giải quyết là $EDITOR
->editor
- > một số danh sách các trình chỉnh sửa bảng điều khiển được xác định trước. Trên Debian/Ubuntu, sensible-editor
(và sensible-browser
và sensible-pager
) sẽ thực hiện tìm kiếm cho bạn, bao gồm xem xét các biến môi trường phù hợp. Các biến tương tự là $PAGER
, $SHELL
, $BROWSER
. Để tìm kiếm liên kết tệp, bạn có thể sử dụng xdg-open
.
Lấy gợi ý từ câu trả lời @ bowler, và hoàn toàn bash:
editor=$(grep "text/plain" -r -i -I /usr/share/applications/defaults.list | awk -F';' '{print $1}' | awk -F'.desktop' '{print $1}' | awk -F'=' '{print $2}')
Ok để trông giống như hệ thống sử dụng một tập tin gọi defaults.list. Vì vậy, tìm ra defaults.list hệ thống đang sử dụng nên giải quyết điều này. Nếu có ai có bất kỳ lời khuyên, làm đi trên – sqram