Linux

有沒有辦法列出系統上所有可配置的“替代品”(類似命令的符號連結)?

  • April 21, 2020

RHEL/Fedora 上的alternatives命令(包chkconfig)管理將通用名稱連結到替代實現之一的符號連結。例如,mtaSendmail 和 Postfix 可以提供一組符號連結(以實現 iesendmail命令):

alternatives --display mta

雖然我可以--display使用一組符號連結,但我需要先猜測它的名稱(即mta)。

我可以簡單地列出所有可能的可配置符號連結組(如mta)以供選擇嗎?

原因是我偶爾會忘記一些組名。

確切的答案是(RHEL):

ls /var/lib/alternatives

目錄維護將主從混合/etc/alternatives在一起的所有符號連結的扁平長列表。從屬符號連結不能與命令一起使用。alternatives --display [symlink]

同時目錄/var/lib/alternatives包含了每個組的狀態資訊(包括主從關係)在文件名的縮短列表中,所有這些都可以直接與--display選項一起使用。例如/var/lib/alternatives/java

alternatives --display java

在 Debian(但不是 Fedora 或 RHEL)上,查看所有“主替代名稱”的列表:

update-alternatives --get-selections

--get-selections列出主備用名稱及其狀態。

對於列出的每一個,您都可以執行--list $ALTERNATIVE_NAME,例如

update-alternatives --list editor

--list name顯示連結組的所有目標。

如果您想查看各自組中所有備選方案的列表,可以在fishshell 中執行以下命令:

for alternative in (update-alternatives --get-selections)
   echo $alternative 
   update-alternatives --list (echo $alternative | cut -d" " -f1)
   echo
end | pager

(ba|z)?sh 語法應該類似。

要更改備選方案,請執行sudo update-alternatives --config $ALTERNATIVE_NAME

引用自:https://serverfault.com/questions/484896