Trovare l'applicazione preferita per una determinata estensione file tramite comandi shell unix
-
21-09-2019 - |
Domanda
questo non può essere solo di programmazione, ma se non trovo soluzione pronta all'uso, può diventare un compito di programmazione: In UNIX, che è un metodo della riga di comando per la determinazione della preferito dall'utente domanda di un determinato tipo di file?
La mia soluzione ideale qui sarebbe un comando che smesso di me dover effettuare le seguenti operazioni:
okular foo.pdf
E mi ha permesso di fare qualcosa di simile, lavorare con il mio set preferito applicazioni:
launch foo.pdf
Non ho trovato nessuna risposta cercando, e un approccio fai da te non avrebbe funzionato come, mentre ho usato Linux per un po ', non ho idea di interni che gestiscono le mie applicazioni preferite.
Soluzione
Su Unix per se , che sarebbe quello che l'utente utilizzato per aprire, perché non esiste un livello di OS nozione di un applicazione preferita.
Tuttavia il principale ambiente X desktop all definire tale nozione, e quindi è necessario utilizzare le loro strutture:
-
gnome-open
in GNOME (duh) -
exo-open
in XFCE [vedere i commenti nel link gnome] -
xdg-open
può funzionare in molti ambienti (lavora reputato in KDE) [vedere i commenti nel link gnome] - solo
kfmclient exec
pianura (okfmclient4 exec
) in KDE (non sono stato in grado di trovare un riferimento akde-open
come Rob H suggerisce , e non hanno un sistema di KDE a portata di mano per provarlo)
Ora Mac OS X fornisce il comando open
che funziona come clic sul file nel Finder (vale a dire, si chiede al sistema operativo ...)
correzioni Diversi grazie a ephemient nei commenti. Non voglio discutere mailcap
, perché non ho mai capito e avevo dimenticato che esistesse ...
Altri suggerimenti
La risposta varia a seconda dell'ambiente desktop vostro usando. Dal momento che lei ha citato Okular, ho intenzione di assumere che si sta utilizzando KDE. In modo da provare:
kde-open <file>
Per GNOME, v'è l'equivalente:
gnome-open <file>
Per rispondere a questo me stesso, ho definito una semplice funzione (bash) che funziona nel modo mi aspetto:
function show {
xdg-open $1 &> NUL
}
xdg-open era quasi esattamente quello che volevo, ma lascia brutti avvertimenti programma scivolare attraverso nella shell, che quanto sopra sembra risolvere.
Grazie a tutti.