![如何在单独的终端中自动执行命令?](https://linux22.com/image/831844/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%8D%95%E7%8B%AC%E7%9A%84%E7%BB%88%E7%AB%AF%E4%B8%AD%E8%87%AA%E5%8A%A8%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我是 LINUX 操作系统的新手。我正在使用活性氧(机器人操作系统)我在其中输入一些命令单独的终端窗口进行设置。
即在运行程序之前,我必须执行(每个都在单独的终端):
~$ 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
在我实际运行我的 C++ 程序之前,必须执行上述命令,并且必须按照上述顺序从相应的目录发出。
我正在使用 Ubuntu 12.04。
是否可以编写一个程序或类似的东西,以便如果我运行该程序,所有上述命令将在各自的目录中的单独终端中正确执行而不是每次都手动执行它们?
答案1
您可以编写一个 shell 脚本,为此,打开终端使用Ctrl++Alt并T输入:
touch daily-script.sh
现在我们需要编辑这个文件的内容
xdg-open daily-script.sh
接下来将以下代码复制粘贴到您的文件中:
#!/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
保存文件后,打开终端并输入:
chmod +x daily-script.sh
最后你的文件是可执行的,运行它:
./daily-script.sh