файл оболочки для открытия нескольких терминальных вкладок измените местоположения, команды выполнения

Я никогда не писал сценарий оболочки прежде, но у меня есть веб-приложение, для которого нужен целый набор вещей, работающих сразу, и это является раздражающим для открытия каждой вкладки, каталогов изменения, запустить мои процессы, и т.д.

Я основываю свой файл на один показанный в этом вопросе.

Первый блок (вызов советов, который делает cd самостоятельно) работы, вид - это открывает единственную терминальную вкладку и выполняет советы. (Я только выделил его для тестирования; идеально это была бы часть массива, и все вкладки откроются в единственном окне терминала.)

Второй блок - то, где я сталкиваюсь с проблемами. По-видимому, cd не работает в сценариях оболочки, но что конкретная ссылка является путем по моей голове, и я не понимаю, как реализовать любое из решений, показанных там. Определенная ошибка, которую я получаю:

bash: cd ~/phoenix/RenderService; npm start: No such file or directory

Вкладки, которые открываются через цикл, имеют подсказки в redis-stable каталог:

enter image description here

Вот то, что я хочу произойти, когда я запускаю скрипт:

  1. Откройте окно терминала с тремя вкладками, с помощью профиля Финикса.
  2. Первая вкладка должна измениться на redis-stable каталог, затем запущенный src/redis-server
  3. Вторая вкладка должна измениться на phoenix/PhoenixServices каталог, затем запущенный npm start
  4. Третья вкладка должна измениться на phoenix/RenderService каталог, затем запущенный npm start

Окно терминала и все вкладки должны остаться открытыми после того, как команды работали.

Вот мой существующий код:

#!/bin/bash

# run redis, PhoenixServices, and RenderService

cd ~/redis-stable
gnome-terminal --tab-with-profile=Phoenix --title=Redis -e 'bash -c "src/redis-server; exec bash"'

tab=" --tab-with-profile=Phoenix"
options=(--tab --title=Terminal)

cmds[1]="'cd ~/phoenix/PhoenixServices; npm start'"
titles[1]="PhoenixServices"

cmds[2]="'cd ~/phoenix/RenderService; npm start'"
titles[2]="RenderService"


for i in 1 2; do
  options+=($tab --title="${titles[i]}"  -e "bash -c \"${cmds[i]} ; exec bash\"" )          
done

gnome-terminal "${options[@]}"


exit 0

Кто-либо может выручить плохой newb?

1
задан 23 May 2017 в 15:39

1 ответ

Если Вы не должны активно контролировать все 3 вкладки, можно подать их в файлы журнала и открыть их при необходимости в обновлении на действии. Это о том, как я сбросил бы его с ноги:

#!/bin/bash

cd ~/redis-stable; src/redis-server &> path/to/redis.log &
cd ~/phoenix/PhoenixServices; npm start &> path/to/phoenix.log &
cd ~/phoenix/RenderService; npm start &> path/to/render.log

Вы видите ответ на этот stackoverflow вопрос для получения дополнительной информации об идущих параллельно процессах.

Можно также использовать услуги по контролю для плескания терминала, если определенные события имеют место во время процессов с until или watch последовательности. См. ответы на этот вопрос о суперпользователе для большего количества идей.

1
ответ дан 7 December 2019 в 16:08

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

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