Trouver l'application préférée pour une extension de fichier donné via des commandes de shell unix
-
21-09-2019 - |
Question
ce ne peut pas être strictement sur la programmation, mais si je ne trouve pas de solution toute faite, il peut devenir une tâche de programmation: Sous UNIX, ce qui est une méthode de ligne de commande pour déterminer la application préférée par l'utilisateur pour un type de fichier donné?
Ma solution idéale serait ici une commande qui m'a arrêté d'avoir à faire ce qui suit:
okular foo.pdf
Et m'a permis de faire quelque chose comme ça, travailler avec mes applications préférées ensemble:
launch foo.pdf
J'ai trouvé aucune réponse en effectuant une recherche et une approche DIY ne fonctionnerait pas aussi, alors que je me sers de Linux pendant un certain temps, je n'ai aucune idée des éléments internes qui gèrent mes applications préférées.
La solution
unix en soi qui serait celui que l'utilisateur utilisé pour l'ouvrir, parce qu'il n'y a pas de notion de niveau système d'exploitation d'une application préférée.
Cependant le principal environnement de bureau X tous définir une telle notion, et vous devez utiliser leurs installations:
-
gnome-open
dans GNOME (duh) -
exo-open
Xfce [voir les commentaires dans le lien gnome] -
xdg-open
peut fonctionner dans de nombreux environnements (fonctionne dans KDE réputé) [voir les commentaires dans le lien gnome] - juste
kfmclient exec
plaine (oukfmclient4 exec
) dans KDE (je ne l'ai pas été en mesure de trouver une référence àkde-open
comme Rob H suggère , et ne dispose pas d'un système KDE à portée de main pour essayer)
Mac OS X fournit la commande open
qui fonctionne comme cliquant sur le fichier dans le Finder (ce qui veut dire, il demande à l'OS ...)
Plusieurs corrections grâce à ephemient dans les commentaires. Je ne parlerai pas mailcap
, parce que je ne comprenais pas et avais oublié qu'il existait ...
Autres conseils
La réponse varie en fonction de l'environnement de bureau à votre usage. Puisque vous avez mentionné Okular, je vais supposer que vous utilisez KDE. Donc, essayez:
kde-open <file>
Pour GNOME, il est l'équivalent:
gnome-open <file>
Pour répondre à moi-même, je l'ai défini une fonction simple (bash) qui fonctionne de la façon dont je pense:
function show {
xdg-open $1 &> NUL
}
xdg ouverte était presque exactement ce que je voulais, mais il laisse les avertissements du programme laid faufilent dans la coquille, ce qui semble le ci-dessus pour corriger.
Merci à tous.