На этот вопрос уже есть ответ здесь:
Попытка создать открывающийся сценарий bash gnome-terminal, а затем запускает ls для отображения содержимого каталога, но он просто открывает gnome-terminal. Я буду создавать другие сценарии, которые также используют несколько команд.
Мой сценарий:
#!/bin/bash gnome-terminal ls -a /examplefolder
РЕДАКТИРОВАТЬ:
Чтобы прояснить, чего я пытаюсь достичь. Я пытаюсь создать сценарий, который откроет gnome-terminal, выведет список содержимого / examplefolder, а затем будет готов к регулярному использованию терминала. Возможно ли это, или я лаю не на то дерево?
(Для Ubuntu 12.04) проблема здесь состоит в том, который с Вашим ударом сценария откроет терминал гнома и затем выполнил команду в Вас текущий терминал вместо недавно открытый один (если это будет тем, что Вы на самом деле пытаетесь сделать.)
Примечание: Также, как предложено @unorthodox грамматикой &
должен использоваться в конце команды, которую Вы не хотите ожидать (разрешение им выполнить в фоне). Однако интересно это не проблема, по крайней мере, в Ubuntu 12.04. Но возможно в других разновидностях Ubuntu это могло бы быть проблемой.
можно выполнить команды в недавно открытом терминале гнома при помощи следующей команды:
gnome-terminal -e "ls -a /examplefolder"
или
gnome-terminal --command "ls -a /examplefolder"
Однако это закрыло бы терминал, как только команды выполняются и если Вы хотите видеть, что результат тех управляет, чтобы Вы не могли. Обратите внимание, что терминал гнома не разработан для этого варианта использования (видящий результаты в недавно открытом терминале гнома из сценария). Одна из работы, почти столь же определенной в этом хорошем ответ , следующая:
Позволяют терминальному гномом выполнению колотить и сказать удару выполнять Ваши команды и затем выполнять удар
gnome-terminal -e "bash -c \"echo foo; echo bar; exec bash\""
или
gnome-terminal -x bash -c "echo foo; echo bar; bash"
, исполнительный удар в конце необходим, потому что bash -c
завершится, после того как команды сделаны. exec
причины рабочий процесс, который будет заменен новым процессом, иначе у Вас будет два выполнения процессов удара.
можно обратиться к этому ответ для дальнейших обходных решений.
Чтобы команды выполнились 1 за другим, не ожидая до конца:
#!/bin/bash ls -a /examplefolder & leafpad & ls -a /home & exec bash
, Чтобы команды выполнились 1 за другим, ожидая до, придите первым:
#!/bin/bash ls -a /examplefolder leafpad ls -a /home exec bash
, Как предложено ответом MB_CE использование "исполнительного удара" как заключительная команда может использоваться для содержания открытого терминала, потому что технически удар все еще работает.
В сценарии удара команды выполняются один за другим. Ваши запуски сценария gnome-terminal
, ожидает его для завершения затем выполнений ls -a /examplefolder
. Для выполнения команды до терминал гнома используйте -x
параметр:
gnome-terminal -x bash -c 'ls -a /examplefolder; read -p "Press [ENTER] to continue..."'
Это запустится bash
в недавно открытом терминале и заставит его работать ls
и read
команды.
Между прочим, у Вас есть какие-либо определенные причины запуститься для запуска терминала со сценария оболочки? (Обычно это наоборот.), Если Вы просто хотите запустить сценарий оболочки со своего рабочего стола и видеть, что это - результаты в терминале, Вы могли просто создать средство запуска для сценария и выбрать "выполненный в терминале", по крайней мере, в Xubuntu, но я - вполне уверенные другие ароматы, имеют подобную опцию.
Покажите вывод в терминале
gnome-terminal -x bash -c "echo foo; echo bar; read || sleep 9999"
или в висячей строке GUI
( echo foo; sleep 5; echo bar ) | zenity --text-info