web-dev-qa-db-fra.com

Ouvrir un fichier depuis la ligne de commande

La version kile par défaut (Kile 2.9.91) fournie avec kubuntu 18.04 ne se comporte pas comme prévu. Dans les anciennes versions, cela

$ kile myfile.tex

ouvrirait myfile.tex pour le modifier. Cependant, dans la version actuelle, ceci tente et échoue à ouvrir http://myfile.tex. Le message d'erreur que je reçois est " http: //myfile.tex Hôte introuvable", ce qui n'est pas trop étonnant. J'ai essayé de mettre le nom du fichier entre guillemets, utilisez kile ./myfile.tex et kile file://myfile.tex. La première n'a rien changé, les deuxième et troisième ont entraîné une erreur de segmentation.

Quelle est la bonne façon d’ouvrir des fichiers à l’aide de la ligne de commande de Kile 2.9.91?

Qu'est-ce qui fonctionne, qu'est-ce qui ne fonctionne pas?

$ kile myfile.tex                         -> Error: http://myfile.tex
$ kile "myfile.tex"                       -> Error: http://myfile.tex
$ kile myfile.txt                         -> Error: http://myfile.txt
$ kile myfile                             -> Error: http://myfile
$ kile Documents/myfile.tex               -> Error: http://documents/myfile.tex

$ kile ~/Documents/myfile.tex             -> Works!
$ kile /home/user/Documents/myfile.tex    -> Works!
$ kile $(realpath myfile.tex)             -> Works!

$ kile ./myfile.tex                       -> segfault
$ kile file://myfile.tex                  -> segfault
6
m00am

Solution de rechange difficile: écrivez une fonction dans votre .bashrc/.zshrc (d'autres personnes pourraient travailler, ces deux-là sont les seules que j'ai testées) qui appelle realpath pour obtenir le chemin absolu du fichier d'entrée:

function kile-open {
    kile $(realpath $1)
}

Pour retrouver le comportement souhaité (pour un fichier à la fois, ne pas utiliser d’autres paramètres, ceci peut facilement être amélioré avec certaines connaissances de bash). Ce n'est en aucun cas une solution, mais simplement un moyen d'imiter le comportement souhaité pour l'instant.

2
m00am

Inspiré par la solution @ m00am, dans bash, vous pouvez ajouter ce qui suit au .bashrc:

kile() { command kile $(realpath "$@") }

La commande kile myfile.tex fonctionnera alors. Personnellement, j'ai même redirigé la sortie vers /dev/null et relâché la commande:

kile() { command kile $(realpath "$@") > /dev/null 2>&1 & }
1
xiawi