Запуск файла .sh из модуля запуска

Я довольно новичок в 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?
Кроме того, могу ли я получить отзыв на экране моего терминала? так что я знаю, что происходит.

Извиняюсь за мой английский, я голландец.
Заранее спасибо!

2
задан 27 May 2015 в 17:22

1 ответ

Вы обращаетесь к 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
    

Если команда является слишком сложной или слишком долго обрабатывать в .desktop файле

Если Ваш ряд команд является слишком длинным для обработки в 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"> сохраняют терминальными открытый:

enter image description here

Это практически не может перестать работать.

2
ответ дан 27 May 2015 в 17:22

Другие вопросы по тегам:

Похожие вопросы: