Ok, donc exécuter gedit myfile.txt
fonctionne bien. Mais qu'en est-il de l'ouverture d'un fichier depuis un script bash, en utilisant l'application de bureau par défaut liée au type de fichier?
J'ai essayé ci-dessous, qui fonctionne très bien lorsqu'il est exécuté manuellement dans un terminal, mais quand je le mets dans un fichier bash, rien ne se passe:
#!/bin/bash
xdg-open "myfile.txt"&
Que devrais-je faire à la place?
Veuillez noter que le fichier doit rester ouvert après la fermeture du terminal.
Je pense que votre script devrait fonctionner. Mais vous pouvez ajouter quelque chose pour obtenir un peu plus d'informations:
#!/bin/bash
T=`xdg-mime query filetype $1`
echo "opening file " $1 " of type " $T "with " `xdg-mime query default $T`
xdg-open $1
echo "finished script"
lors de l'exécution de ce script (nommé my_open.sh) dans un terminal comme celui-ci:
my_open.sh path/to/somefile.txt
Je reçois la sortie suivante:
opening file path/to/somefile.txt of type text/plain with gedit.desktop
finished script
ce qui m'indique que le chemin d'accès au fichier est correct, que le type MIME est reconnu et que le fichier desktop utilisé pour ouvrir le fichier est également correct. Et gedit s'ouvre avec le fichier en question.
Maintenant, lorsqu'il est exécuté sur un autre fichier:
my_open.sh path/to/README
Je reçois la sortie suivante:
opening file path/to/README of type text/x-readme with
finished script
Notez le type de MIME différent et le fichier de bureau manquant. Néanmoins, xdg-open ouvre la valeur par défaut pour tous les fichiers texte (gedit).
Donc, vous voudrez peut-être ajouter quelque chose comme ceci à votre script et voir si vous obtenez une sortie inattendue (que vous pourrez ensuite ajouter à votre question ...).
Faites un script bash test.sh comme:
#!/bin/bash
gedit myfile.txt
Ensuite, rendez le script exécutable comme suit:
chmod +x test.sh
Enfin, exécutez le script en tant que:
./test.sh
Peut-être que gnome-open au lieu de xdg-open
Vous allez dans la bonne direction. Si vous souhaitez que l'application graphique reste ouverte lorsque vous fermez la fenêtre du terminal, il vous suffit d'ajouter un Nohup
au début de la ligne.
#!/bin/bash
Nohup xdg-open "myfile.txt"&
Si l'application graphique ne s'ouvre pas, c'est probablement parce que vous n'avez pas défini la variable d'environnement DISPLAY
dans le shell à partir duquel vous essayez de la lancer. Essayez de faire un echo $DISPLAY
avec la commande cat
vous pouvez ouvrir un fichier à l'intérieur du terminal, si c'est ce que vous voulez (c'est indiqué dans la première partie de votre question).
pour l'utiliser, vous pouvez simplement taper cat FILENAME
.
Si vous avez besoin de plus de commandes: Voici une bonne liste de commandes.
Si vous souhaitez ouvrir le fichier dans l'application par défaut de GNOME gedit
name__.
pour l'utiliser, tapez simplement gedit FILENAME
Bien que je ne sache pas vraiment ce qui doit être accompli ici et sur la base de quelques commentaires récents n seul script doit ouvrir n’importe quel fichier dans l’application par défaut ou dans la mesure où cette application prend en charge cette fonctionnalité.
Si c'est le cas alors le moyen le plus simple de le faire serait d'ouvrir un terminal et d'aller scriptname/chemin/à/nom_fichier ou s'il y a des espaces dans chemin, nom_script '/ chemin/à/nom_fichier'
cd; mkdir -p bin && gedit ~/bin/openit1
Utilisez ceci comme script, vous pouvez utiliser n'importe quel nom pour le script, je vais utiliser openit1 comme exemple. Il est préférable d'utiliser des scripts directement depuis ~/bin pour ajouter un numéro à nommer afin d'éviter tout conflit avec les commandes linux existantes.
#!/bin/bash
xdg-open "$1"
Fermez gedit & dans le terminal
chmod u+x ~/bin/openit1
Redémarrez pour ajouter ~/bin à votre $ PATH
Pour appeler un terminal et aller
openit1 /path/to/filename or openit1 'path/to/filename'
SI comme indiqué par l'origine & en utilisant l'origine. script pour n fichier particulier par script & invocation par d. En cliquant sur le script, il vous suffit de choisir "Run" au lieu de "Run in Terminal"