Existe-t-il une commande «Ouvrir avec» pour la ligne de commande?

24

La ligne de commande a-t-elle un moyen d'obtenir une liste recommandée de programmes utilisés pour ouvrir un fichier particulier, en fonction du type de fichier? Par exemple, un .pdffichier aurait une open with...recommandation utilisant les programmes Evinceet Document Viewer.

J'utilise la ligne de commande pour la plupart des choses, mais parfois j'oublie le nom d'un programme que je veux utiliser pour ouvrir un type de fichier particulier.

BTW J'utilise Ubuntu 13.10.

pro-tip

Grâce à la réponse sélectionnée de @slm ci-dessous, j'ai créé le script bash suivant dans un fichier appelé openwith.sh:

xdg-mime query default $(xdg-mime query filetype $1)

Ajoutez en tant qu'alias ou exécutez directement en tant que openwithcommande.

modulitos
la source
1
Vous pouvez essayer avec gnome-open file. J'ai ajouté alias o='gnome-open'à mon .bashrcpour plus de simplicité.
Pål GD
gnome-openfonctionne de manière similaire à xdg-open.
slm
Apparemment, il en va de même gvfs-open. Question Que puis-je utiliser au lieu de gnome-open? de demander à ubuntu .
Pål GD du

Réponses:

33

Il n'y a pas de commande que j'aie jamais vue qui agira comme "ouvrir avec ..." mais vous pouvez utiliser la commande xdg-open <file>pour ouvrir une donnée <file>dans l'application associée à ce type particulier de fichier.

Exemples

Ouverture d'un fichier texte:

$ xdg-open tstfile.txt
$

Le fichier tstfile.txtétant ouvert en gedit:

                         ss de gedit

Ouverture d'un document LibreOffice Writer:

$ xdg-open tstfile.odt 
$

Le fichier tstfile.odtétant ouvert dans Writer:

                         SS de l'écrivain

Quelles applications sont utilisées?

Vous pouvez utiliser xdg-mimepour interroger le système pour savoir quelles applications sont associées à un type de fichier donné.

$ xdg-mime query default $(xdg-mime query filetype tstfile.txt)
gedit.desktop calibre-ebook-viewer.desktop

$ xdg-mime query default $(xdg-mime query filetype tstfile.odt)
libreoffice-writer.desktop calibre-ebook-viewer.desktop

Il s'agit d'une opération en 2 étapes. Je cherche d'abord le type mime d'un fichier donné xdg-mime query filetype tstfile.txt, qui reviendra text/plain. Il est ensuite utilisé pour effectuer une autre recherche pour connaître la liste des applications associées à ce type MIME. Comme vous pouvez le voir ci-dessus, j'ai 2 applications associées geditet calibre, pour les .txtfichiers.

Vous pouvez également utiliser xdg-mimepour modifier les associations. Voir man xdg-mimepour plus de détails.

slm
la source
Existe-t-il un moyen d'afficher d'autres types de programmes que ceux par défaut? Par exemple, je viens d'installer okularpour afficher les PDF, mais votre exemple ci-dessus ne montre que evincelorsque je l'exécute sur un fichier .pdf.
modulitos
1
@Lucas - oui, les exemples que j'ai montrés montrent les applications associées à un type de fichier donné ci-dessus. Par exemple. les fichiers de type .txtsont associés à gedit et calibre par exemple.
slm
Dois-je avoir des .desktopfichiers pour les programmes que je veux listés? Par exemple, lorsque j'exécute le script sur un .pdffichier, il revient evince.desktop, même si je peux également l'exécuter okular.
modulitos
@Lucas - il est probablement préférable de demander un nouveau Q, car nous nous éloignons maintenant du Q original.
slm
5

Si vous travaillez principalement sur la ligne de commande, vous pouvez regarder un gestionnaire de fichiers basé sur des curses, comme ranger ou vifm . Les deux vous permettent de définir des actions par défaut pour les types de fichiers.

Dans vifm, par exemple, dans ~/.vifm/vifmrcvous pouvez définir des associations comme ceci:

" Images
filetype *.jpg,*.jpeg,*.gif,*.tif,*.png,*.bmp sxiv 

" Media
filetype *.flv,*.avi,*.mp4,*.mpeg,*.mpg,*.mov,*.ogg,*.ogv,*.mkv mpv 

" Web
filetype *.html,*.htm,*.shtml /home/jason/Scripts/vimprobtab.sh 

" PDF
filetype *.pdf apvlv

Frapper Enteravec le curseur sur n'importe quel fichier avec l'une des actions définies le verra ouvert par l'application concernée. Comme vous pouvez le voir dans le cas des .htmlfichiers, vous pouvez déclencher un script ainsi qu'une application.

jasonwryan
la source
5

En quelque sorte, mais cela modifiera votre application par défaut en conséquence. Je ne sais pas sur quels autres systèmes d'exploitation cela fonctionne, mais les instructions ci-dessous fonctionnent pour Ubuntu 12.04 - Desktop X86-64. Je n'avais pas de fichiers pdf à portée de main, j'ai donc testé avec une archive .zip.

Étapes générales

Étape 1

Dans un type de terminal:

$ mimeopen -d /home/username/example.zip
capture d'écran # 1 = https://copy.com/qfWSZaZ4FzlA

    SS # 1

Étape 2

Choisissez dans la liste en entrant #l'application de votre choix et en appuyant sur enter. Le fichier s'ouvrira immédiatement dans l'application que vous avez choisie.

capture d'écran # 2 = https://copy.com/um6Rf7zRdceT

    SS # 2

capture d'écran # 3 = https://copy.com/ytwKCqR6nv8i

    SS # 3

Remarques

Note 1

Cela change l'application par défaut en celle que vous choisissez, et donc chaque fois que vous ouvrez ce type de fichier, il s'ouvrira maintenant dans la dernière application que vous avez choisie dans la liste.

veuillez me supprimer
la source
Vouliez-vous mettre un signe de hachage (#) dans l'URL de la capture d'écran 3?
trysis
@trysis Je viens de l'utiliser pour contourner la limite maximale de 2 URL.
veuillez me supprimer le
Oh, c'est logique. Mais ça a toujours l'air bizarre.
trysis
Je vous ai nettoyé A et ajouté la 3e URL pour vous.
slm
2

Cela dépend de la saveur d'Unix que vous utilisez, je suppose. Sous OS X, vous pouvez utiliser la opencommande:

OPEN(1)                   BSD General Commands Manual                  OPEN(1)

NAME
     open -- open files and directories

SYNOPSIS
     open [-e] [-t] [-f] [-F] [-W] [-R] [-n] [-g] [-h] [-b bundle_identifier]
          [-a application] file ... [--args arg1 ...]

DESCRIPTION
     The open command opens a file (or a directory or URL), just as if you had
     double-clicked the file's icon. If no application name is specified, the
     default application as determined via LaunchServices is used to open the
     specified files.

     If the file is in the form of a URL, the file will be opened as a URL.

...
Ionoclast Brigham
la source
De plus, la opencommande est apparue pour la première fois dans NextStep et a été héritée par OS X, elle peut donc être disponible sous une forme ou une autre sur des plateformes plus ou moins basées sur OpenStep (par exemple AfterStep, LiteStep).
Ionoclast Brigham