Создание простого сценария Bash с Несколько команд [дубликат]

На этот вопрос уже есть ответ здесь:

Попытка создать открывающийся сценарий bash gnome-terminal, а затем запускает ls для отображения содержимого каталога, но он просто открывает gnome-terminal. Я буду создавать другие сценарии, которые также используют несколько команд.

Мой сценарий:

#!/bin/bash
gnome-terminal
ls -a /examplefolder

РЕДАКТИРОВАТЬ:

Чтобы прояснить, чего я пытаюсь достичь. Я пытаюсь создать сценарий, который откроет gnome-terminal, выведет список содержимого / examplefolder, а затем будет готов к регулярному использованию терминала. Возможно ли это, или я лаю не на то дерево?

1
задан 2 June 2014 в 03:25

4 ответа

(Для 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 причины рабочий процесс, который будет заменен новым процессом, иначе у Вас будет два выполнения процессов удара.

можно обратиться к этому ответ для дальнейших обходных решений.

7
ответ дан 2 June 2014 в 03:25

Чтобы команды выполнились 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 использование "исполнительного удара" как заключительная команда может использоваться для содержания открытого терминала, потому что технически удар все еще работает.

9
ответ дан 2 June 2014 в 03:25

В сценарии удара команды выполняются один за другим. Ваши запуски сценария gnome-terminal, ожидает его для завершения затем выполнений ls -a /examplefolder. Для выполнения команды до терминал гнома используйте -x параметр:

gnome-terminal -x bash -c 'ls -a /examplefolder; read -p "Press [ENTER] to continue..."'

Это запустится bash в недавно открытом терминале и заставит его работать ls и read команды.

Между прочим, у Вас есть какие-либо определенные причины запуститься для запуска терминала со сценария оболочки? (Обычно это наоборот.), Если Вы просто хотите запустить сценарий оболочки со своего рабочего стола и видеть, что это - результаты в терминале, Вы могли просто создать средство запуска для сценария и выбрать "выполненный в терминале", по крайней мере, в Xubuntu, но я - вполне уверенные другие ароматы, имеют подобную опцию.

2
ответ дан 2 June 2014 в 03:25

Покажите вывод в терминале

gnome-terminal -x  bash -c "echo foo; echo  bar; read || sleep 9999"  

или в висячей строке GUI

 ( echo foo;  sleep 5; echo  bar ) | zenity --text-info
1
ответ дан 2 June 2014 в 03:25

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

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