Сохранить несколько терминалов в качестве переменных

Мне нужно открыть несколько окон xterm и сохранить их позже, чтобы запускать разные команды в каждом из них, сохраняя их в живых. Примером может быть:

term1= xterm -hold -title "term1" term2= xterm -hold -title "term2" term3= xterm -hold -title "term3"

Вычислить одни и те же команды для всех из них:

for i in term1 term2 term3 do $i -e "cd somewhere; source something" done

затем запустить несколько команд для некоторых из них:

$term1 -e "cd somewhere else; ./..." $term2 -e "do other thing"

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

EDIT: добавьте пример в ответ на @dessert [ ! d5]

Отказ: я сейчас работаю в среде ROS.

Скрипт должен открыть четыре терминала (либо xterm, terminator, default terminal), либо окна; три из них должны выставить скрипт bash в той же папке, а затем roscd на другой, из этих двух из них должны выполняться различные команды (нужно запустить файл запуска, а другой - запустить скрипт). Четвертый должен быть cd в другую папку, где он должен указать .bash, а затем запустить еще один файл запуска. Было бы еще лучше, если четвертый может подождать x секунд до запуска.

0
задан 8 November 2017 в 18:45

2 ответа

Использовать функции! Преимущество этого метода заключается в том, что вы можете добавлять другие необязательные позиционные параметры для вызова функции при ее запуске.

term1(){ xterm -hold -title "term1" "$@" }

Поместите это в свой файл ~/.bashrc и запустите source ~/.bashrc. Такая же идея для других команд.

Чтобы сохранить терминал «живым», вам нужно развернуть оболочку в конце, т. Е. Сделать

term1 -e "cd place1; command 2;bash"

. Терминал - это просто окно, и у вас нет оболочки для взаимодействия с вами, поэтому, если вы не создадите ее, вы не получите интерактивную оболочку.

1
ответ дан 18 July 2018 в 04:15

Использовать функции! Преимущество этого метода заключается в том, что вы можете добавлять другие необязательные позиционные параметры для вызова функции при ее запуске.

term1(){ xterm -hold -title "term1" "$@" }

Поместите это в свой файл ~/.bashrc и запустите source ~/.bashrc. Такая же идея для других команд.

Чтобы сохранить терминал «живым», вам нужно развернуть оболочку в конце, т. Е. Сделать

term1 -e "cd place1; command 2;bash"

. Терминал - это просто окно, и у вас нет оболочки для взаимодействия с вами, поэтому, если вы не создадите ее, вы не получите интерактивную оболочку.

1
ответ дан 24 July 2018 в 18:02
  • 1
    Хотя это хорошее решение, оно не позволяет отправлять дополнительные команды в уже открытое окно терминала, например OP, запрошенное в , а затем запускать разные секции вопроса. – dessert 31 October 2017 в 01:02
  • 2
    @dessert Я обратился к этому в редактировании. – Sergiy Kolodyazhnyy 31 October 2017 в 01:25
  • 3
    Спасибо за ответ @dessert, всего лишь одно. Я изначально хотел сделать все в одном сценарии оболочки, возможно ли это? Я имею в виду запуск «разных команд». в оболочке сразу после "тех же самых". – nicofirst1 1 November 2017 в 21:32

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

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