Je suis assez nouveau sur Ubuntu 14.04. Je fais un projet d'école où j'ai besoin d'utiliser des piles de navigation. À ce stade, la navigation fonctionne correctement. Mon problème en ce moment est:
Avant de pouvoir lancer rviz
et pour effectuer la navigation, je dois exécuter les commandes suivantes:
Sudo mknod -m 666 /dev/ttyS51 c 4 115
Sudo socat PTY,link=/dev/ttyS51, TCP4:192.168.0.60:10002
Sudo chmod a=r+w /dev/pts/*
Il y a quelques commandes supplémentaires que je dois exécuter, mais je pense que vous obtenez l'image.
À ce stade, je dois saisir manuellement toutes ces commandes dans le terminal. Je les ai ajoutés à un fichier Shell que je peux lancer manuellement.
Je voudrais savoir s'il est possible d'exécuter ce fichier Shell à partir d'un .launch
fichier. De la même manière qu'un nœud est lancé à partir d'un .launch
fichier.
.
roslaunch navigation2d_example move_base.launch
Le nom de mon fichier Shell est: mobi_mani.sh
Le code à l'intérieur est:
#!/bin/sh
Sudo mknod -m 666 /dev/ttyS51 c 4 115
Sudo socat PTY,link=/dev/ttyS51, TCP4:192.168.0.60:10002
Sudo chmod a=r+w /dev/pts/* "
Longue histoire courte.
Comment puis-je exécuter les commandes indiquées dans un .sh
fichier d'un .launch
fichier?
Puis-je également obtenir des commentaires sur l'écran de mon terminal? donc je sais ce qui se passe.
Toutes mes excuses pour mon anglais, je suis néerlandais.
Merci d'avance!
Vous faites référence à un .desktop
fichier. Ces fichiers peuvent être utilisés pour exécuter des commandes, des applications, etc.
La version la plus basique d'un .desktop
fichier:
[Desktop Entry]
Name=Some Name
Exec=<command>
Type=Application
Dans votre cas, vous souhaitez exécuter une série de commandes, en utilisant Sudo
. Dans ce cas, vous avez besoin de:
[Desktop Entry]
Name=Some Name
Exec=/bin/bash -c "command1&&command2&&command3"
Type=Application
Terminal=true
Vous devez enregistrer le fichier avec l'extension .desktop
, par exemple. run_commands.desktop
. Pour utiliser ces fichiers à partir du bureau, rendez-les exécutables.
Pour utiliser des commandes compliquées dans un .desktop
file, le Exec=
la ligne devrait ressembler à:
Exec=/bin/bash -c "command1&&command2&&command3"
pour enchaîner les commandes dans un .desktop
fichier, comme si chaque commande se trouvait sur une nouvelle ligne dans un script, vous devez utiliser &&
entre les commandes.
Si vous utilisez Sudo
dans une commande, vous devez soit définir:
Terminal=true
donc les commandes s'exécuteront dans le terminal et vous demanderont le mot de passe, ou vous devez utiliser gksu
au lieu de Sudo
, donc gksu
vous demandera votre mot de passe. Dans ce cas, vous devrez installer gksu
, qui n'est pas par défaut sur votre système:
Sudo apt-get install gksu
Si votre série de commandes est trop longue à gérer dans un .desktop
fichier, écrivez-les dans un petit script, comme vous l'avez fait, et appelez le script à partir du .desktop
fichier. Le Exec=
ligne dans le .desktop
le fichier devrait alors ressembler à:
Exec=/bin/sh mobi_mani.sh
Vous pouvez également utiliser les éléments suivants pour exécuter des commandes à partir du terminal:
Réglez dans le .desktop
fichier en tant que Exec=
ligne:
Exec=gnome-terminal -x /bin/bash -c "<command1>&&<command2>&&<command3>"
Ensuite, en supposant que vous utilisez gnome-terminal
, allez dans Préférences (gnome-terminal)> Préférences de profil> Titre et commande, puis dans la liste déroulante "Une fois la commande terminée"> gardez le terminal ouvert:
Cela ne peut pratiquement pas échouer.