Équivalent Linux de la commande «open» de Mac OS X [fermé]

214

J'ai trouvé la commande "open" dans Mac OS X très pratique dans la ligne de commande. De "l'homme ouvert":

La opencommande ouvre un fichier (ou un répertoire ou une URL), comme si vous aviez double-cliqué sur l'icône du fichier. Si aucun nom d'application n'est spécifié, l'application par défaut telle que déterminée via LaunchServices est utilisée pour ouvrir les fichiers spécifiés.

Autrement dit, si je veux ouvrir un fichier PDF avec la visionneuse PDF par défaut (qui se trouve être Aperçu), je n'ai qu'à faire:

open my.pdf

Sous Linux, cependant, pour ouvrir un fichier PDF à partir de la ligne de commande, j'ai dû fouiller pour trouver la visionneuse PDF par défaut est, par exemple, "evince" (qui l'aurait deviné ??), puis

evince my.pdf

Alors, existe-t-il un équivalent simple de la commande «open» dans la ligne de commande Linux?

Merci!

Joachim Sauer
la source
6
Peut-être que cette question devrait être déplacée vers superuser.com?
quazgar
1
Le super utilisateur semble inapproprié - existe-t-il un StackOverflow pour les "utilisateurs ordinaires" ou peut-être "les programmeurs qui souhaitent créer d'autres scripts", c'est-à-dire automatiser?
Krazy Glew
askubuntu pourrait convenir.
Gopherkhan

Réponses:

238

Vous pouvez essayer xdg-open, la plupart des distributions Linux l'ont. Il ouvrira l'application associée par défaut pour votre fichier.

FYI https://portland.freedesktop.org/doc/xdg-open.html

numéro 5
la source
13
Une grande différence entre cela et open, cependant, est que cela n'ouvre pas le fichier / l'application en arrière-plan. Les applications Linux semblent être très bavardes et produisent souvent plusieurs lignes de diagnostics et d'avertissements directement dans votre terminal (même si rien ne s'est vraiment passé). Je dois généralement faire quelque chose comme à la xdg-open <file> &> /dev/null &place. Y a-t-il quelque chose de mieux que xdg-open à cet égard?
Suan
13
@Suan: Il ouvre l'application en "arrière-plan", détaché du terminal, de manière à ce que vous puissiez continuer à travailler dans le terminal dès que l'application est lancée. Le suivi &n'est donc pas nécessaire. Quant aux "plusieurs lignes de diagnostic", elles proviennent de l'application elle-même, pas de xdg-open. Si vous ne voulez aucune sortie, vous devrez &> /dev/nullmême utiliser evincedirectement (exemple de OP), donc votre plainte est nulle. xdg-openest en effet la voie à suivre.
MestreLion
15
@MestreLion Je ne pense pas que la plainte soit entièrement nulle, car l'ouverture de Mac n'entraîne pas l'écho de la sortie de l'application vers le terminal.
Max Nanasy
7
@MaxNanasy: la sortie provient des applications, ce n'est pas xdg-openla faute si elles sont bavardes. Et la suppression de tels messages devrait être le choix de l'utilisateur , pas des xdg. Il est donc inutile de demander quelque chose de "meilleur" que xdg-open. De plus, si Mac openn'a pas d'option pour afficher ces messages, je dirais que openc'est bien pire que xdg-open, car lorsque vous utilisez la ligne de commande pour lancer des fichiers, vous êtes généralement intéressé par cette sortie (sinon, pourquoi ne pas simplement double-cliquer sur le fichier dans un navigateur comme Nautilus?)
MestreLion
12
@MestreLion Bien que l'on puisse faire valoir que la plainte est triviale, car alias open='xdg-open &>/dev/null'donne approximativement le comportement souhaité (bien que les erreurs de xdg-open lui-même (par opposition au seul programme lancé) soient également réduites au silence, ce qui n'est pas souhaitable).
Max Nanasy
76

L'équivalent que vous recherchez est xdg-open, qui peut être utilisé de la même manière que la opencommande OS X. Par exemple:

xdg-open ~/Documents/Chubby_Bubbies.odt

Cependant, c'est vraiment difficile à taper rapidement et avec précision. Au lieu de cela, vous devez créer un alias pour xdg-open, ce qui rend le processus beaucoup plus rapide.

Bien sûr, vous pouvez l'aliaser openpour le faire correspondre à OS X (vous pouvez choisir tout ce que vous voulez), mais personnellement, j'utilise le bon crochet ( ]) pour mon raccourci pour des raisons de vitesse. Pour l'utiliser, ajoutez ce qui suit à votre .bashrcfichier:

alias ']'='xdg-open'

Ensuite, pour ouvrir une ressource, utilisez-la comme l'un de ces exemples:

] www.google.com
] file.txt
] ~/Pictures
] ssh://myserver.local/home/jeremy

Cela vous permet également d'ouvrir un navigateur de fichiers (par exemple Nautilus) dans le répertoire actuel:

] .

Par expérience, j'ai constaté que les alias à une lettre fonctionnent mieux pour le raccourci ci-dessus. Après tout, l'objectif est l'efficacité. Et vous pouvez revenir en arrière et faire le même alias sur OS X - je laisse cela comme un exercice au lecteur. :-)

Jeremy Visser
la source
26
J'ai créé un alias de «open» à «xdg-open» afin de le rendre cohérent sur Linux et Mac.
Adam Byrtek
C'est bien mais pas génial, j'ai essayé d'ouvrir un fichier .url et l'ai ouvert dans gedit.
sorin
18
@sorin Essayez-vous de faire sonner comme si c'était ma faute?!
Jeremy Visser
7
@sorin: xdg-openouvre l'application par défaut de votre système pour le fichier. Dans votre cas, les .urlfichiers sont définis pour s'ouvrir dans gedit. Si vous souhaitez modifier cela, cliquez avec le bouton droit sur le fichier dans Nautilus et accédez à Propriétés> Ouvrir avec pour modifier l'application par défaut et xdg-openfonctionnera en conséquence.
MestreLion
Voici un Gist que j'ai fait, il suffit de copier-coller et d'exécuter la commande sous la section «Tout à fait» dans le premier commentaire.
ozanmuyes
14

Je viens de régler cela moi-même, alors j'ai pensé que j'écrirais comment je l'ai fait, ce qui est spécifiquement pertinent pour ce que Suan a demandé. Ces étapes vous permettent de taper simplement "ouvert" et non votre terminal couvert de messages dont vous n'avez pas besoin:

Créer un script appelé opendans ~/bin, le contenu est juste:

xdg-open "$1" &> /dev/null &

Enregistrez et fermez le script, puis tapez "source .profile" (ou .bash_profile si nécessaire). C'est donc si taper "open Music" ouvrira votre dossier de musique dans l'interface graphique nautilus et ne devrait rien entrer sur votre terminal.

Anake
la source
Quel est le pseudonyme et l'emplacement étrange? Appelez simplement le script lui open- même et mettez-le dans votre PATH (généralement dans $HOME/bin/open)
tripleee
Sur ma machine (ubuntu 11.10) si vous ajoutez un script appelé «open» à votre chemin, et essayez de le faire, il est remplacé par / bin / open. Je ne peux donc pas trouver un moyen d'obtenir votre chemin au travail sans alias.
Anake
L'astuce consiste à avoir votre propre script dans un répertoire qui vient plus tôt dans votre PATHque /bin. Par convention, si vous l'avez, $HOME/binil sera ajouté au début du CHEMIN, avant tout répertoire système. Généralement, cela est fait par votre .profileou similaire. Par exemple, la valeur par défaut .profilesur Ubuntu fait exactement cela.
tripleee
2
Rediriger la sortie vers /dev/nullest un peu capricieux; vous pouvez peut-être rediriger la sortie vers $HOME/.xsession-errorsou une autre, afin que les diagnostics ne soient pas complètement perdus au cas où vous auriez besoin de dépanner quelque chose.
tripleee
1
@efdee: citer correctement toutes les variables est une bonne pratique de programmation et vital dans les scripts bash. Cela n'a rien à voir xdg-open, c'est un problème de shell.
MestreLion
11

Traditionnellement, vous pouvez utiliser la commande "voir". Qui utilise simplement run-mailcap. Cela fonctionnera sans Gnome et X etc.

man see
Ali Afshar
la source
3
Le problème est run-mailcap(et ses nombreux alias) utilise une base de données d'association d'applications distincte (et terriblement obsolète). Par exemple dans mon système, alors que les .mp3chansons s'ouvrent correctement dans VLC, les .txtfichiers s'ouvrent en moins (au lieu de gedit) et les .pdffichiers ne s'ouvrent tout simplement pas! (Erreur: aucune règle de "mailcap" de visualisation n'a été trouvée pour le type "application / pdf")
MestreLion
Comme je l'ai dit, cela dépend de chaque système. Peu de candidatures s'enregistrent d'une manière qui les run-mailcapreconnaît. xdg-openutilise en interne gvfs-open(sur des systèmes Gnome comme Ubuntu), qui à son tour utilise la spécification de base de données mime de xdg, que beaucoup plus d'applications utilisent.
MestreLion
Ouverture d'un fichier PDF de plus de 50 pages gimppour moi. Je m'en tiendrai xdg-open.
user1717828
Ouverture de fichiers txt dans lessx''D
Timo
4

gnome-open

Ana Betts
la source
7
gnome-open est désormais obsolète, et d'ailleurs il était déjà utilisé en interne par xdg-opensi l'utilisateur était sur Gnome (maintenant il l'utilise gvfs-open)
MestreLion
2

Si vous avez correctement configuré vos mimes, vous pouvez les utiliser mimeopen. Consultez sa page de manuel, car elle a quelques options utiles.

stacksia
la source
1
Ce serait bien si cette réponse était développée. Je serais intéressé de voir comment cela fonctionne
Magnus
-3

Sous environnement Gnome Desktop, j'utilise la commande suivante:

nautilus `pwd` &

Ceci est similaire à "ouvert". commande sous Mac

WonderLi
la source
11
Cette réponse a plusieurs problèmes: A) Il ouvre le répertoire actuel, pas le fichier, comme demandé par l'utilisateur. B) vous pouvez utiliser à la .place de " pwd" C) si vous changez pwdpour un fichier, l'utilisateur devra toujours appuyer sur ENTRÉE après l'ouverture de Nautilus D) Ouvrir nautilus d'abord juste pour qu'il ouvre le fichier est une solution très indirecte.
MestreLion