Mime-Types

如何使用 CLI 工具從我的 Linux 系統中完全刪除 mime 關聯?

  • January 30, 2020

我正在執行 Arch Linux 和 KDE。我已經在幾台設備上安裝了 Arch KDE,在通常情況下,文件沒有特定的 mime 類型關聯.pub(在我的情況下是公鑰)。它們將由純文字文件的預設處理程序打開。這是我希望在我的標準 Arch Linux 安裝中看到的:

$ xdg-mime query filetype id_rsa_test.pub
text/plain

但是,在我的主桌面上,.pub文件與 ms-publisher 相關聯。

$ xdg-mime query filetype id_rsa_test.pub
application/vnd.ms-publisher

我想完全刪除這個關聯。以下是我發現這種關聯證據的一些地方:

$ grep -irl '.pub' ./.local/share/mime/
./.local/share/mime/packages/application-vnd.ms-publisher.xml
./.local/share/mime/application/vnd.ms-publisher.xml
./.local/share/mime/globs
./.local/share/mime/globs2
./.local/share/mime/types
./.local/share/mime/mime.cache

$ sudo grep -irl 'ms-publisher' /usr
/usr/share/applications/mimeinfo.cache
/usr/share/mime/packages/freedesktop.org.xml
/usr/share/mime/application/vnd.ms-publisher.xml
/usr/share/mime/globs
/usr/share/mime/globs2
/usr/share/mime/subclasses
/usr/share/mime/types
/usr/share/mime/mime.cache
/usr/share/icons/breeze/mimetypes/64/application-vnd.ms-publisher.svg
/usr/share/icons/breeze/mimetypes/22/application-vnd.ms-publisher.svg
/usr/share/icons/breeze/breeze-icons.rcc
/usr/share/icons/breeze/icon-theme.cache
/usr/share/icons/breeze-dark/mimetypes/22/application-vnd.ms-publisher.svg
/usr/share/icons/breeze-dark/breeze-icons-dark.rcc
/usr/share/icons/breeze-dark/icon-theme.cache
/usr/lib/libreoffice/share/xdg/draw.desktop

根據xdg-mime手冊頁,該uninstall命令可能會起作用。至少在我的情況下,該uninstall命令無效。

# xdg-mime uninstall /usr/share/mime/application/vnd.ms-publisher.xml
# echo $?
0

# sudo grep -irl 'ms-publisher' /usr
/usr/share/file/misc/magic.mgc
/usr/share/applications/mimeinfo.cache
/usr/share/mime/packages/freedesktop.org.xml
/usr/share/mime/application/vnd.ms-publisher.xml
/usr/share/mime/globs
/usr/share/mime/globs2
/usr/share/mime/subclasses
/usr/share/mime/types
/usr/share/mime/mime.cache
/usr/share/icons/breeze/mimetypes/64/application-vnd.ms-publisher.svg
/usr/share/icons/breeze/mimetypes/22/application-vnd.ms-publisher.svg
/usr/share/icons/breeze/breeze-icons.rcc
/usr/share/icons/breeze/icon-theme.cache
/usr/share/icons/breeze-dark/mimetypes/22/application-vnd.ms-publisher.svg
/usr/share/icons/breeze-dark/breeze-icons-dark.rcc
/usr/share/icons/breeze-dark/icon-theme.cache
/usr/lib/libreoffice/share/xdg/draw.desktop

# grep -irl '.pub' /usr/share/mime/
/usr/share/mime/packages/freedesktop.org.xml
/usr/share/mime/packages/calibre-mimetypes.xml
/usr/share/mime/application/pkcs7-mime.xml
/usr/share/mime/application/pkcs8-encrypted.xml
/usr/share/mime/application/epub+zip.xml
/usr/share/mime/application/x-pkcs7-certificates.xml
/usr/share/mime/application/pkcs8.xml
/usr/share/mime/application/pkcs10.xml
/usr/share/mime/application/pkcs12.xml
/usr/share/mime/application/vnd.ms-publisher.xml
/usr/share/mime/globs
/usr/share/mime/globs2
/usr/share/mime/magic
/usr/share/mime/subclasses
/usr/share/mime/types
/usr/share/mime/generic-icons
/usr/share/mime/mime.cache

對於我的問題,我想大致了解如何**僅使用 CLI 工具從我的系統中刪除任何mime 類型關聯。

編輯:對答案的回應:

在新使用者帳戶上,我顯示以下內容:

sudo pacman -Qs shared-mime-info
local/shared-mime-info 1.15-2
   Freedesktop.org Shared MIME Info

$ xdg-mime query filetype id_rsa_test.pub
text/plain

$ xdg-mime query default text/plain
atom.desktop

$ less ~/.config/mimeapps.list
/home/deleteme/.config/mimeapps.list: No such file or directory

該系統已多次(每天)更新,與.pub文件的 ms-publisher 關聯尚未恢復。請注意,這個系統已經shared-mime-info安裝,我可以使用純文字編輯器打開公鑰文件,正如我所料。在此系統上的另一個使用者帳戶中,我通過~/.config/mimeapps.list該使用者的條目獲得了我的首選關聯。

$ xdg-mime query default text/plain
org.kde.kate.desktop

回到主要問題:如何.pub在系統級別完全刪除文件與 Okular 和/或 Libre Office Draw 的關聯?即使這不是批准的方法,我該怎麼做?

.pub 文件將由純文字文件的預設處理程序打開。這是我期望在我的標準 Arch Linux 上看到的

你沒有理由期待這一點**。**該shared-mime-info包假定.pub是 Microsoft Publisher 文件。如果您認為預設應該是plain/text,那麼您需要向上游報告。

我自己認為這是一個錯誤,他們不應該讓 M$ 專有格式擴展優先於 GNU/linux 本機文件擴展。或者最好還是使用除glob之外的****魔法

我想大致了解如何僅使用 CLI 工具從我的系統中刪除任何 mime 類型關聯

您根本不應該刪除系統範圍的 mime 類型關聯。即使您設法做到了,它也會在稍後通過系統更新回來。

您應該做的是添加您自己的 mime 類型來覆蓋系統類型。正如您在這裡的其他問題中已經知道的那樣,您可以使用glob-deleteall覆蓋以前的定義

引用自:https://unix.stackexchange.com/questions/564808