web-dev-qa-db-fra.com

Comment automatiser l'exécution des commandes dans des terminaux séparés?

Je suis nouveau sur le système d'exploitation LINUX. J'utilise ROS (système d'exploitation robotique) où je tape quelques commandes dans des fenêtres de terminal séparées pour effectuer la configuration.

c'est-à-dire qu'avant de lancer mon programme, je dois faire ( chacun dans un terminal séparé ):

~$ roscore 

~$ rosrun nodelet nodelet standalone
velodyne_pointcloud/CloudNodelet

~/Desktop/OpenCV$ source setup.bash 

~/Desktop/OpenCV$ rosrun pcl_tutorial
front_view_bag input:=/velodyne_points

/media/BE8C6D3A8C6CEDF9/Users/KARTHICK/Desktop/project/ros_datas$
rosbag play file2.bag

Les commandes ci-dessus sont indispensables avant de pouvoir exécuter mon programme C++. Le programme doit être dans l'ordre indiqué ci-dessus, à partir des répertoires respectifs.

J'utilise Ubuntu 12.04.
Est-il possible d'écrire un programme ou quelque chose de telle sorte que si je lance ce seul programme, toutes les commandes ci-dessus seront correctement exécutées dans des terminaux distincts aux répertoires respectifs plutôt que de les exécuter manuellement à chaque fois?

4
KARTHIK

Vous pouvez créer un script Shell. Pour ce faire, ouvrez un Terminal avec Ctrl + Alt + T et type:

touch daily-script.sh

Maintenant, nous devons éditer ce contenu de fichier

xdg-open daily-script.sh

Copiez ensuite le code ci-dessous dans votre fichier:

#!/bin/bash

cd $HOME
xterm -hold -e "roscore" &
xterm -hold -e "rosrun nodelet nodelet standalone velodyne_pointcloud/CloudNodelet" &
cd $HOME/Desktop/OpenC
xterm -hold -e "source setup.bash; rosrun pcl_tutorial front_view_bag input:=/velodyne_points" &
cd /media/BE8C6D3A8C6CEDF9/Users/KARTHICK/Desktop/project/ros_datas
xterm -hold -e "rosbag play file2.bag"

exit 0

Une fois le fichier sauvegardé, ouvrez un terminal et tapez:

chmod +x daily-script.sh

Enfin, votre fichier est exécutable, pour le lancer:

./daily-script.sh

6
efthialex