ความสัมพันธ์ของไฟล์ถูกเก็บไว้ที่ไหน?


67

Ubuntu หรือระบบ Linux อื่น ๆ จัดเก็บความสัมพันธ์ของไฟล์อย่างไร

มี/etc/asscociationsไฟล์หรือบางอย่าง?

ฉันรู้ว่าฉันสามารถคลิกขวาที่ไฟล์และเปลี่ยนผ่าน "open with" แต่ฉันแค่อยากรู้ว่ามันเก็บไว้ภายในอย่างไร

คำตอบ:


67

ตัวจัดการไฟล์ (ตามค่าเริ่มต้น) จะใช้ประเภท 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จัดเตรียมข้อมูลสำหรับค่าดีฟอลต์ของระบบ เว้นแต่ว่าคุณจะเลือกเป็นอย่างอื่นแอปพลิเคชั่นเหล่านี้จะใช้เมื่อคุณเปิดไฟล์


7
หลังจากเปลี่ยนประเภท MIME ใน/usr/share/applications .desktopไฟล์มีคำสั่งให้สร้างฐานข้อมูล MIME นั้นใหม่เพื่อดูการเชื่อมโยงที่ใช้งานจริงหรือไม่
Redsandro

12
ใช่. sudo update-desktop-databaseดูjarrpa.net/2011/10/28/…
NoBugs

/usr/local/share/applicationsเป็นสถานที่ที่เหมาะสมสำหรับการเปลี่ยนแปลงในท้องถิ่น ฉันคิดว่า gtk ดูที่นั่นเช่นกันตามค่าเริ่มต้น มันทำในระบบของฉัน แต่ได้รับการอัพเกรด (ไม่ได้ติดตั้งใหม่) ตั้งแต่ Ubuntu 7.04 หรือมากกว่านั้น
Peter Cordes

2
อูบุนตูดูเหมือนว่าจะทำตาม freedesktop.org: standards.freedesktop.org/mime-apps-spec/...เป็นที่น่ากลัวโครงการ
Ciro Santilli 新疆改造中心法轮功六四事件

23

เพื่อเสริมคำตอบที่ยอดเยี่ยมของ 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 เมื่อผู้ใช้ทำการเปลี่ยนแปลงในกล่องโต้ตอบ "เปิดด้วย"


1
แต่การใช้อูบุนตู 12.04 ฉันตระหนักดีว่าถูกแทนที่โดยรายการในmimeapps.list defaults.list
feeela

1
บน 14.04 ฉันสามารถ s / vlc / mplayer / ในของฉัน~/.local/share/applications/mimeapps.listและกระบวนการทำงานเช่น pcmanfm รับการเปลี่ยนแปลงโดยไม่ต้องเริ่มต้นใหม่ . (mplayer.desktop เป็นเพียงการทำงาน mplayer ฉันมีหนึ่งโกหกรอบจาก mplayer เก่าติดตั้งใน / usr / ท้องถิ่นฉันเดา IDK ถ้ามี. MimeType=list;ถูกต้องหรือไม่.
ปีเตอร์ Cordes

แม่นยำยิ่งขึ้นmimeapps.listสามารถหาได้ทุกที่ในเส้นทางการค้นหาต่อไปนี้: Specifications.freedesktop.org/mime-apps-spec/ …
Ciro Santilli 新疆改造中心中心法轮功事件事件

18

ฉันพบว่าในระบบของฉัน (Debian Jessie) นอกจากนี้ยัง~/.config/mimeapps.listมีการเชื่อมโยงที่ฉันตั้งใจสร้างขึ้นเพื่อเปิดไฟล์บางประเภทด้วย gedit ไม่มีวิธีการมาตรฐานในการแก้ไขปัญหานี้ (การตั้งค่าแอปพลิเคชันเริ่มต้นการเปิดด้วยคุณสมบัติของ Thunar ) สะท้อนถึงสิ่งนี้ แต่ gedit เป็นแอปพลิเคชันเริ่มต้น

ฉันสามารถลบบรรทัดออก~/.config/mimeapps.listและตอนนี้แอปพลิเคชันที่ถูกต้องจะเปิดไฟล์


2
ขอบคุณคุณบังเอิญช่วยฉันแก้ไข Firefox ที่เปิดทุกอย่างใน Gedit ใน openSUSE 13.2 ฉันลบบรรทัดด้วย "application / octet-stream = org.gnome.gedit.desktop;" :)
user31389

3
ตั้งแต่อูบุนตู 15.04 ~/.config/mimeapps.listการปรับเปลี่ยนการใช้งานที่เฉพาะเจาะจงยังถูกเก็บไว้ใน
DJCrashdummy

2
แม่นยำยิ่งขึ้นmimeapps.listสามารถหาได้ทุกที่ในเส้นทางการค้นหาต่อไปนี้: Specifications.freedesktop.org/mime-apps-spec/ …
Ciro Santilli 新疆改造中心中心法轮功事件事件

8

ฉันพบลิงค์นี้เกี่ยวกับการเชื่อมโยงเริ่มต้นซึ่งอาจมีประโยชน์ 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ต้องการน้อยที่สุด
ส่วน [สมาคมที่ถูกลบ]ใช้เพื่อลบการเชื่อมโยงที่สืบทอดมาก่อนหน้านี้อย่างชัดเจน


1
สิ่งนี้มาจากไซต์archlinuxไม่จำเป็นต้องใช้กับ Ubuntu /usr/share/applications/mimeapps.listไม่มีอยู่จริง
guntbert

ขอบคุณที่ชี้ให้เห็นถึงสิ่งนี้อย่างไรก็ตามผู้ใช้กล่าวใน Ubuntu หรือระบบ Linux อื่น ๆ นี่หมายความว่านี่เป็นคำตอบสำหรับคำถามของเขาเช่นกัน: P
IdontCareAboutReputationPoints

5
คำตอบนี้ใช้ได้อย่างสมบูรณ์ถ้าคุณแทนที่mimeapps.desktopด้วยdefaults.desktop
szx

8

ฉันสามารถตั้งค่าความสัมพันธ์เช่นนี้:

xdg-mime default xnview.desktop image/jpeg

คุณยังสามารถลบการเชื่อมโยงและทำสิ่งอื่น ๆ : man xdg-mime

sudo update-desktop-databaseผมไม่จำเป็นต้องใช้


7

สร้างไฟล์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>

คำตอบที่ดีเพราะมันใช้งานได้สำหรับผู้ใช้ที่ใช้ kde แต่มีโปรแกรม gtk-native สองโปรแกรมเช่น firefox
naught101

5

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

จะแก้ไขไฟล์เหล่านั้นโดยอัตโนมัติ


2

สำหรับผู้ใช้ทั้งหมด:

/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-ละครใบ้


1

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ไฟล์ใหม่(คุณสามารถใช้ไฟล์ที่มีอยู่) ฉันทำขั้นตอนพิเศษนั้นเพื่อที่เมื่อฉันเปลี่ยนความจงรักภักดีระหว่างผู้ดูภาพอย่างหลีกเลี่ยงไม่ได้ฉันก็ต้องเปลี่ยนไฟล์เพียงไฟล์เดียว


1

ใน Ubuntu 18.04 ฉันพบว่าลำดับความสำคัญมีดังต่อไปนี้จากระดับสูงสุดถึงระดับต่ำสุด:

  1. ~/.local/share/applications/defaults.list
  2. /usr/share/applications/defaults.list
  3. ~/.config/mimeapps.list ("เปิดด้วยแอปพลิเคชันอื่น" จะอัปเดตสิ่งนี้)
  4. ~/.local/share/applications/mimeapps.list
  5. การแข่งขันครั้งแรกที่พบในmimeinfo.cacheรีจิสทรีของการใช้งานร่วมกันได้ซึ่งจะสร้างขึ้นจาก.desktopไฟล์นำเสนอใน/usr/share/applicationsและและสามารถนำมาสร้างใหม่โดยใช้/usr/local/share/applicationsupdate-desktop-database
  6. (ไม่เคยใช้) /etc/gnome/defaults.list
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.