Ubuntu หรือระบบ Linux อื่น ๆ จัดเก็บความสัมพันธ์ของไฟล์อย่างไร
มี/etc/asscociations
ไฟล์หรือบางอย่าง?
ฉันรู้ว่าฉันสามารถคลิกขวาที่ไฟล์และเปลี่ยนผ่าน "open with" แต่ฉันแค่อยากรู้ว่ามันเก็บไว้ภายในอย่างไร
Ubuntu หรือระบบ Linux อื่น ๆ จัดเก็บความสัมพันธ์ของไฟล์อย่างไร
มี/etc/asscociations
ไฟล์หรือบางอย่าง?
ฉันรู้ว่าฉันสามารถคลิกขวาที่ไฟล์และเปลี่ยนผ่าน "open with" แต่ฉันแค่อยากรู้ว่ามันเก็บไว้ภายในอย่างไร
คำตอบ:
ตัวจัดการไฟล์ (ตามค่าเริ่มต้น) จะใช้ประเภท MIMEของไฟล์เพื่อพิจารณาว่าจะเปิดโปรแกรมใด เมื่อโปรแกรมติดตั้งก็สามารถระบุสิ่งที่ประเภท MIME /usr/share/applications
มันสามารถเปิดและคำสั่งที่จะใช้ในการเปิดไฟล์ในแฟ้มเดสก์ทอปซึ่งจะอยู่ใน นี่คือไฟล์ที่ใช้สำหรับเมนูทางลัดบนเดสก์ท็อป ฯลฯ
ตัวอย่างเช่น GIMP มีไฟล์ .desktop ต่อไปนี้:
[Desktop Entry]
Version=1.0
Type=Application
Name=GNU Image Manipulation Program
GenericName=Image Editor
Comment=Create images and edit photographs
Exec=gimp-2.7 %U
TryExec=gimp-2.7
Icon=gimp
Terminal=false
Categories=Graphics;2DGraphics;RasterGraphics;GTK;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=GIMP
X-GNOME-Bugzilla-Component=General
X-GNOME-Bugzilla-Version=2.7.2
X-GNOME-Bugzilla-OtherBinaries=gimp-2.7
StartupNotify=true
MimeType=application/postscript;application/pdf;image/bmp;image/g3fax;image/gif;image/x-fits;image/pcx;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-psd;image/x-sgi;image/x-tga;image/x-xbitmap;image/x-xwindowdump;image/x-xcf;image/x-compressed-xcf;image/tiff;image/jpeg;image/x-psp;image/png;image/x-icon;image/x-xpixmap;image/svg+xml;application/pdf;image/x-wmf;image/jp2;image/jpeg2000;image/jpx;image/x-xcursor;
ดูMimeType
ฟิลด์ - นี่คือรายการประเภท MIME ที่รองรับExec
ฟิลด์บอกให้ระบบใช้คำสั่งgimp-2.7 %U
แทนที่ '% U' ด้วยไฟล์ที่จะเปิด (หมายเหตุ GIMP 2.7 เป็นรุ่นที่ฉันติดตั้งจาก PPA ดังนั้นจึงสูงกว่ารุ่นปัจจุบันในที่เก็บ Ubuntu)
เมื่อติดตั้งแพคเกจแอปพลิเคชันระบบจะดึงข้อมูลประเภท MIME นี้ลงในฐานข้อมูลที่เข้าถึงได้ง่ายขึ้นเนื่องจากการค้นหาไฟล์. desktop แต่ละไฟล์จะใช้เวลานานเกินไปหากดำเนินการทุกครั้งที่เปิดไฟล์
สิ่งนี้จะบอกระบบว่าแอปพลิเคชันใดบ้างที่สามารถใช้สำหรับประเภท MIME นั้นและแสดงแอปพลิเคชันในรายการ 'เปิดด้วย' ค่าเริ่มต้นถูกกำหนดไว้ที่อื่น ไฟล์/usr/share/applications/defaults.list
จัดเตรียมข้อมูลสำหรับค่าดีฟอลต์ของระบบ เว้นแต่ว่าคุณจะเลือกเป็นอย่างอื่นแอปพลิเคชั่นเหล่านี้จะใช้เมื่อคุณเปิดไฟล์
sudo update-desktop-database
ดูjarrpa.net/2011/10/28/…
/usr/local/share/applications
เป็นสถานที่ที่เหมาะสมสำหรับการเปลี่ยนแปลงในท้องถิ่น ฉันคิดว่า gtk ดูที่นั่นเช่นกันตามค่าเริ่มต้น มันทำในระบบของฉัน แต่ได้รับการอัพเกรด (ไม่ได้ติดตั้งใหม่) ตั้งแต่ Ubuntu 7.04 หรือมากกว่านั้น
เพื่อเสริมคำตอบที่ยอดเยี่ยมของ dv3500ea ฉันต้องการเพิ่มข้อมูลบางอย่างเกี่ยวกับสิ่งที่เกิดขึ้นเมื่อคุณเปลี่ยนการเชื่อมโยงของคุณ
ในขณะที่ defaults.list (ซึ่งคุณสามารถค้นหาได้โดยพิมพ์ 'loca defaults.list') จะแสดงรายการแอปพลิเคชันที่เกี่ยวข้องกับ MIME แต่ละประเภทการปรับแต่งใด ๆ ที่คุณทำจะถูกเก็บไว้ในโฮมไดเร็กตอรี่ของคุณใน ~ / .local / หุ้น / การใช้งาน / mimeapps.list ดังนั้นหากคุณเพิ่มหรือลบการเชื่อมโยงหรือเปลี่ยนการเชื่อมโยงเริ่มต้นไฟล์นี้จะได้รับการปรับปรุง
คู่มือการดูแลระบบเดสก์ท็อป GNOME ที่http://library.gnome.org/admin/system-admin-guide/stable/ไม่ปรากฏขึ้นเพื่อหารือเกี่ยวกับ mimeapps.list แต่ฉันพบคำอธิบายต่อไปนี้ที่http: //live.gnome .org / SysAdminGuideUpdate :
mimeapps.list ตั้งอยู่ใน $ XDG_DATA_DIRS / แอปพลิเคชัน โดยมีวัตถุประสงค์คือเพื่อเพิ่มหรือลบการเชื่อมโยง mime จากแอปพลิเคชัน nautilus เขียน ~ / .local / share / applications / mimeapps.list เมื่อผู้ใช้ทำการเปลี่ยนแปลงในกล่องโต้ตอบ "เปิดด้วย"
mimeapps.list
defaults.list
~/.local/share/applications/mimeapps.list
และกระบวนการทำงานเช่น pcmanfm รับการเปลี่ยนแปลงโดยไม่ต้องเริ่มต้นใหม่ . (mplayer.desktop เป็นเพียงการทำงาน mplayer ฉันมีหนึ่งโกหกรอบจาก mplayer เก่าติดตั้งใน / usr / ท้องถิ่นฉันเดา IDK ถ้ามี. MimeType=list;
ถูกต้องหรือไม่.
mimeapps.list
สามารถหาได้ทุกที่ในเส้นทางการค้นหาต่อไปนี้: Specifications.freedesktop.org/mime-apps-spec/ …
ฉันพบว่าในระบบของฉัน (Debian Jessie) นอกจากนี้ยัง~/.config/mimeapps.list
มีการเชื่อมโยงที่ฉันตั้งใจสร้างขึ้นเพื่อเปิดไฟล์บางประเภทด้วย gedit ไม่มีวิธีการมาตรฐานในการแก้ไขปัญหานี้ (การตั้งค่าแอปพลิเคชันเริ่มต้นการเปิดด้วยคุณสมบัติของ Thunar ) สะท้อนถึงสิ่งนี้ แต่ gedit เป็นแอปพลิเคชันเริ่มต้น
ฉันสามารถลบบรรทัดออก~/.config/mimeapps.list
และตอนนี้แอปพลิเคชันที่ถูกต้องจะเปิดไฟล์
~/.config/mimeapps.list
การปรับเปลี่ยนการใช้งานที่เฉพาะเจาะจงยังถูกเก็บไว้ใน
mimeapps.list
สามารถหาได้ทุกที่ในเส้นทางการค้นหาต่อไปนี้: Specifications.freedesktop.org/mime-apps-spec/ …
ฉันพบลิงค์นี้เกี่ยวกับการเชื่อมโยงเริ่มต้นซึ่งอาจมีประโยชน์
https://wiki.archlinux.org/index.php/Default_Applications
สำหรับการเชื่อมโยงทั่วโลก:
/usr/share/applications/mimeapps.list
ต่อการเชื่อมโยงผู้ใช้:
~/.local/share/applications/mimeapps.list
ไวยากรณ์มีดังนี้
[Added Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
...
[Removed Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
ส่วน [เพิ่มการเชื่อมโยง]ใช้เพื่อระบุแอปพลิเคชันที่ต้องการ (ค่าเริ่มต้น) ในการลดความต้องการ ซึ่งหมายความว่าdesktopfile1เป็นที่ต้องการมากที่สุดและdesktopfileNต้องการน้อยที่สุด
ส่วน [สมาคมที่ถูกลบ]ใช้เพื่อลบการเชื่อมโยงที่สืบทอดมาก่อนหน้านี้อย่างชัดเจน
/usr/share/applications/mimeapps.list
ไม่มีอยู่จริง
mimeapps.desktop
ด้วยdefaults.desktop
ฉันสามารถตั้งค่าความสัมพันธ์เช่นนี้:
xdg-mime default xnview.desktop image/jpeg
คุณยังสามารถลบการเชื่อมโยงและทำสิ่งอื่น ๆ : man xdg-mime
sudo update-desktop-database
ผมไม่จำเป็นต้องใช้
สร้างไฟล์truecrypt.desktop
ใน~/.local/share/applications
มีเส้นต่อไปนี้:
[Desktop Entry]
Encoding=UTF-8
Type=Application
Icon=
Exec=/usr/bin/truecrypt %U
Name=truecrypt
Comment=manage truecrypt volumes
จากนั้นแก้ไขไฟล์~/.local/share/applications/mimeapps.list
และเพิ่มบรรทัดต่อไปนี้:
application/octet-stream=truecrypt.desktop
ฉันพบชนิด mime ของ Truecrypt โดยทำตามคำสั่งนี้:
file --mime-type -b <any truecrypt filename>
mimeapps.list
เส้นทางการค้นหา
คนอื่น ๆ พูดถึงไฟล์นี้ แต่ไม่มีใครอธิบายได้ว่าเป็นที่ตั้งที่ถูกต้องหรือไม่
มาตรฐาน freedesktop.org พูดได้ที่https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html :
ลำดับการค้นหาสำหรับไฟล์นี้เป็นดังนี้:
$XDG_CONFIG_HOME/$desktop-mimeapps.list user overrides, desktop-specific (for advanced users)
$XDG_CONFIG_HOME/mimeapps.list user overrides (recommended location for user configuration GUIs)
$XDG_CONFIG_DIRS/$desktop-mimeapps.list sysadmin and ISV overrides, desktop-specific
$XDG_CONFIG_DIRS/mimeapps.list sysadmin and ISV overrides
$XDG_DATA_HOME/applications/$desktop-mimeapps.list for completeness, deprecated, desktop-specific
$XDG_DATA_HOME/applications/mimeapps.list for compatibility, deprecated
$XDG_DATA_DIRS/applications/$desktop-mimeapps.list distribution-provided defaults, desktop-specific
$XDG_DATA_DIRS/applications/mimeapps.list distribution-provided defaults
จากนั้นค่าเริ่มต้นสำหรับตัวแปรสภาพแวดล้อมเหล่านั้นจะมีให้ที่https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.6.html :
$XDG_DATA_HOME
: $HOME/.local/share
$XDG_CONFIG_HOME
: $HOME/.config
$XDG_DATA_DIRS
: ไม่มีผนวกเข้ากับ XDG_DATA_HOME
$XDG_CONFIG_DIRS
: ไม่มีผนวกเข้ากับ XDG_CONFIG_HOME
อูบุนตูที่เก่ากว่าอาจตรวจสอบไม่ได้~/.config
ดังนั้นโปรดลอง~/.local/share
ด้วยเช่นกัน
คำสั่งที่ชอบ:
xdg-settings set default-web-browser chromium-browser.desktop
xdg-settings get default-web-browser
จะแก้ไขไฟล์เหล่านั้นโดยอัตโนมัติ
สำหรับผู้ใช้ทั้งหมด:
/usr/share/applications/defaults.list
ผู้ใช้แต่ละคนมีไฟล์กำหนดค่าสำหรับการแทนที่ค่าเริ่มต้นเหล่านี้:
~ / .config / mimeapps.list
ดูเพิ่มเติมที่https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.htmlสำหรับสถานที่ที่อาจใช้สำหรับการเอาชนะ defauts
คุณต้องรู้จัก mime-type ของไฟล์ที่คุณต้องการเปลี่ยนมันสัมพันธ์กัน
นอกจากนี้ความสัมพันธ์ทั้งหมดสามารถจัดการเปลี่ยนแปลงในบรรทัดคำสั่งโดยใช้:
XDG-ละครใบ้
Freedesktop.org (ก่อนหน้านี้เรียกว่ากลุ่ม X Desktop ดังนั้นตัวย่อ "XDG") เป็นกลุ่มที่กำลังขับมาตรฐาน X เช่นนี้ ( เรียนรู้เพิ่มเติมที่ Wikipedia )
คำตอบของ warvariucกล่าวถึงการใช้xdg-mimeเช่น:
xdg-mime default xnview.desktop image/jpeg
หลังจากเล่นกับเครื่องมือแก้ไขภาพและผู้ดูจำนวนมากฉันลงเอยด้วยผู้ดูที่แตกต่างกันสำหรับประเภทรูปภาพที่แทบจะไม่สอดคล้องกันโดยเฉพาะในประเภทภาพที่หายาก
ฉันใช้คำสั่งข้างต้นและกำหนดให้กับ MIME แต่ละประเภทที่ควบคุมโดยโปรแกรมดูรูปภาพแล้วสร้างใหม่image-viewer.desktop
โดยการโคลนหนึ่งในนั้น (นี่เป็นทางเลือกคุณสามารถนำรายการโปรดกลับมาใช้ใหม่ได้) ต่อไปฉันตรวจสอบด้วยตนเองว่าไม่มีประเภท MIME ใดที่จะไม่เข้ากันกับแอปพลิเคชันใหม่ที่ฉันต้องการ ในที่สุดฉันตั้งค่าแอปพลิเคชันนั้นให้เป็นค่าเริ่มต้นสำหรับประเภท MIME ของแอปพลิเคชันอื่นทั้งหมด:
sed '/^MimeType=/!d; s///; s/;/\n/g' \
/usr/share/applications/{ristretto,geeqie,gthumb}.desktop |sort -u \
|xargs xdg-mime default image-viewer.desktop
สิ่งนี้จะตรวจสอบ.desktop
ไฟล์สำหรับผู้ชมแต่ละคน ( Ristretto , GeeqieและGThumbในกรณีของฉัน) แยกคำจำกัดความ MIME (ซึ่งถูกเปิดใช้งานก่อนหน้าโดยMimeType=
มีรายการที่คั่นด้วยเครื่องหมายอัฒภาค) ลบป้ายกำกับคำนำหน้า (ที่จับคู่ก่อนหน้า) และ แยกรายการออกเป็นหนึ่งรายการต่อบรรทัด sort -u
จากนั้นลบบรรทัดที่ซ้ำซ้อนจากนั้นพวกเขาจะถูกส่งไปxdg-mime
ยังเพื่อตั้งค่าเริ่มต้นใหม่
(หากคุณต้องการทดสอบสิ่งนี้ก่อนใช้งานจริงให้เปลี่ยนxargs
เป็นxargs echo
และมันจะพิมพ์คำสั่งผลลัพธ์แทนการเรียกใช้)
เทคนิคนี้ควรใช้ได้กับทุกสิ่งที่คุณต้องการเรียกคืนสำหรับแอปเป้าหมาย คุณไม่จำเป็นต้องสร้าง.desktop
ไฟล์ใหม่(คุณสามารถใช้ไฟล์ที่มีอยู่) ฉันทำขั้นตอนพิเศษนั้นเพื่อที่เมื่อฉันเปลี่ยนความจงรักภักดีระหว่างผู้ดูภาพอย่างหลีกเลี่ยงไม่ได้ฉันก็ต้องเปลี่ยนไฟล์เพียงไฟล์เดียว
ใน Ubuntu 18.04 ฉันพบว่าลำดับความสำคัญมีดังต่อไปนี้จากระดับสูงสุดถึงระดับต่ำสุด:
~/.local/share/applications/defaults.list
/usr/share/applications/defaults.list
~/.config/mimeapps.list
("เปิดด้วยแอปพลิเคชันอื่น" จะอัปเดตสิ่งนี้)~/.local/share/applications/mimeapps.list
mimeinfo.cache
รีจิสทรีของการใช้งานร่วมกันได้ซึ่งจะสร้างขึ้นจาก.desktop
ไฟล์นำเสนอใน/usr/share/applications
และและสามารถนำมาสร้างใหม่โดยใช้/usr/local/share/applications
update-desktop-database
/etc/gnome/defaults.list
/usr/share/applications
.desktop
ไฟล์มีคำสั่งให้สร้างฐานข้อมูล MIME นั้นใหม่เพื่อดูการเชื่อมโยงที่ใช้งานจริงหรือไม่