Я довольно новичок в Ubuntu 14.04. Я делаю школьный проект, где мне нужно использовать стеки навигации. На данный момент навигация работает отлично. В настоящее время у меня проблема:
Прежде чем я смогу запустить rviz
и выполнить фактическую навигацию, я должен выполнить следующие команды:
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/*
Есть несколько дополнительных команд, которые мне нужны бежать, но я думаю, что вы, ребята, получите картину.
На данный момент я должен вручную ввести все эти команды в терминал. Я добавил их в файл оболочки, который я могу запустить вручную.
Я хотел бы знать, возможно ли выполнить этот файл оболочки из файла .launch
. Точно так же, как узел запускается из файла .launch
.
Было бы намного проще, если бы я мог добавить фрагмент кода в существующий файл запуска, чтобы эти команды и остальные узлы, необходимые для навигации, выполнялись, когда я вводил следующую команду:
roslaunch navigation2d_example move_base.launch
Имя моего файла оболочки: mobi_mani.sh
Код внутри:
#!/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/* "
Короче говоря.
Как выполнить команды, указанные в файле .sh
, из файла .launch
?
Кроме того, могу ли я получить отзыв на экране моего терминала? так что я знаю, что происходит.
Извиняюсь за мой английский, я голландец.
Заранее спасибо!
Вы обращаетесь к a .desktop
файл. Эти файлы могут привыкнуть к командам выполнения, приложения и т.д.
Наиболее базовая версия a .desktop
файл:
[Desktop Entry]
Name=Some Name
Exec=<command>
Type=Application
В Вашем случае Вы хотите выполнить ряд команд, с помощью sudo
. В этом случае Вам нужно:
[Desktop Entry]
Name=Some Name
Exec=/bin/bash -c "command1&&command2&&command3"
Type=Application
Terminal=true
Необходимо сохранить файл с расширением .desktop
, например. run_commands.desktop
. Для использования этих файлов от рабочего стола сделайте это исполняемым файлом.
Использовать сложные команды в a .desktop
файл, Exec=
строка должна быть похожей:
Exec=/bin/bash -c "command1&&command2&&command3"
к цепочечным командам в a .desktop
файл, как будто каждая команда была бы на новой строке в сценарии, необходимо использовать &&
между командами.
Если Вы используете sudo
в команде необходимо или установить:
Terminal=true
таким образом, команды будут работать в терминале и просить у Вас пароль, или необходимо использовать gksu
вместо sudo
, так gksu
попросите Вы свой пароль. В этом случае необходимо было бы установить gksu
, который не находится по умолчанию в Вашей системе:
sudo apt-get install gksu
Если Ваш ряд команд является слишком длинным для обработки в a .desktop
файл, запишите им в маленьком сценарии, как Вы сделал и называют сценарий от .desktop
файл. Exec=
строка в .desktop
файл должен затем быть похожим:
Exec=/bin/sh mobi_mani.sh
Можно также использовать следующее для команд выполнения от терминала:
Набор .desktop
файл как Exec=
строка:
Exec=gnome-terminal -x /bin/bash -c "<command1>&&<command2>&&<command3>"
Затем принятие Вас использует gnome-terminal
, перейдите к Предпочтениям (терминал гнома)> Предпочтения Профиля>, Заголовок и Команда, затем из выпадающего списка "When command it finished"> сохраняют терминальными открытый:
Это практически не может перестать работать.