Pourquoi ne puis-je pas exécuter cette commande dans mon terminal:
open index.html
N'était-il pas supposé ouvrir ce fichier sur mon navigateur? Aussi je ne peux pas exécuter cette commande: open index.html -a "Sublime Text"
. Le résultat de ces commandes est:
$ open index.html
Couldn't get a file descriptor referring to the console
$ open index.html -a "Sublime Text" -
open: invalid option -- 'a'
Usage: open [OPTIONS] -- command
command-line
file-opening
Edgar Oliveira
la source
la source
xdg-open
qui devrait ouvrir le fichier dans votre navigateur. Laopen
commande est un lien vers laopenvt
commande et ouvre un binaire dans une nouvelle console virtuelle. Ce n'est apparemment pas ce que vous voulez.open
commande sous Linux.open
commande sous Linux, liée àopenvt
; les messages d'erreur dans la question sont compatibles avec cette situation.xdg-open <file>
et il devrait ouvrir le fichier avec le programme correspondant.Réponses:
Le but principal de la
open
commande OS X est d'ouvrir un fichier dans l'application associée. L'équivalent de celui sur les unités modernes non OSX estxdg-open
.xdg-open
n'a pas d'équivalent d'OSXopen -a
pour ouvrir un fichier dans une application spécifique. En effet, la manière normale d'ouvrir un fichier dans une application est de simplement taper le nom de l'application suivi du nom du fichier. Plus précisément, vous devez taper le nom du programme exécutable qui implémente l'application.Linux, comme d'autres systèmes Unix (mais pas, pour autant que je sache, les parties non Unixy d'OS X) gère le logiciel en le suivant avec un gestionnaire de paquets et place les fichiers individuels là où ils sont utilisés . Par exemple, tous les programmes exécutables se trouvent dans un petit ensemble de répertoires et tous ces répertoires sont répertoriés dans la
PATH
variable ; en cours d'exécutionsublime_text
recherche un fichier appelésublime_text
dans les répertoires répertoriés dansPATH
. OS X a besoin d'un niveau supplémentaire d'indirection, viaopen -a
, pour gérer les applications qui sont décompressées dans une arborescence de répertoires unique et enregistrées dans une base de données d'application. Linux n'a pas de base de données d'application, mais il est organisé de telle manière qu'il n'en a pas besoin.Si l'exécution de l'
sublime_text
interpréteur de commandes ne fonctionne pas pour vous, alors Sublime Text n'a pas été installé correctement. Je ne l'ai jamais utilisé, et apparemment, il s'agit d'une archive tar, pas d'un package de distribution (par exemple deb ou rpm), il est donc possible que vous ayez besoin de faire une étape d'installation supplémentaire. C'est vraiment le travail des créateurs de Sublime Text de rendre cela automatique, mais s'ils ne l'ont pas fait, vous pouvez probablement le faire vous-même en exécutant la commandeRemplacez
…
par le chemin où se trouve l'sublime_text
exécutable, bien sûr.La
open
commande que vous avez rencontrée est un nom plus ancien pour laopenvt
commande (certaines distributions Linux ne l'incluent que sous le nomopenvt
). Laopenvt
commande crée une nouvelle console virtuelle , qui ne peut être effectuée que par root et n'est pas utilisée très souvent au cours de ce siècle, car la plupart des gens ne travaillent que dans un environnement de fenêtre graphique.la source
Vous ne mentionnez pas le système d'exploitation que vous utilisez.
Sur certaines distributions Linux, la
open
commande est un lien symbolique vers laopenvt
commande qui ouvre un binaire dans une nouvelle console virtuelle. Ce n'est apparemment pas ce que vous voulez. Vos messages d'erreur indiquent en effet que vous avez invoqué laopenvt
commande. Cette commande attend un programme binaire (un exécutable) comme argument.Je suppose que vous voulez dire
xdg-open
qui, contrairement àopenvt
, n'attend pas un exécutable comme argument, mais un fichier qui est associé à un programme et ouvre le fichier avec le programme. Vous pouvez transmettre des fichiers et des URL comme arguments.Par conséquent,
xdg-open index.html
devrait ouvrir le fichier dans votre navigateur,xdg-open image.png
devrait ouvrir le fichier dans votre visionneuse d'images, etc.la source
xdg-open
appel est d'invoquer l' application par défaut pour ce fichier. Si vous souhaitez utiliser un autre programme, appelez simplement<program> <file>
. Je ne vois pas le problème.open index.html -a "Sublime Text" -
c'est pourquoi je dis "problème", car si vous utilisezxdg-open
pour ouvrir un fichier html, il y a de meilleures chances que le fichier soit ouvert par navigateur et non par un éditeur de texte comme "Sublime Text"Bien que les gens nomment souvent
xdg-open
comme émulant la fonctionnalité deopen
, macOSopen
est un peu différent car il 1. ne redirige rien de stdout / stedrr et 2. détache tout ce que vous voulez exécuter depuis le terminal (ce qui est presque toujours ce que vous voulez lors du lancement de l'interface graphique) des applications pour ne pas avoir de terminaux)Pour résoudre ce problème, j'ai trouvé un équivalent approprié en utilisant certains outils GNU standard (la syntaxe est fish shell, mais la conversion en bash est triviale):
Ajouté :
Pour ceux qui utilisent le shell bash, voici la fonction:
la source
Ma solution (utilisée quotidiennement) est d'utiliser un
alias
forxdg-open
.Mettez juste ceci sur votre
~/.bashrc
:Fermez puis redémarrez votre shell ou
source ~/.bashrc
.Vous pouvez maintenant ouvrir n'importe quel fichier avec cette commande ... de .png à .jpg à .docx à .pdf à .txt.
la source