Рейтинг:4

Скрипт для запуска команды в терминале, а затем открытия новой вкладки терминала и запуска другой команды

флаг co

Я использую Ubuntu 21.04 и хочу создать скрипт, который будет делать следующее:

  1. Бег:

    cd && cd path/to/repo && git pull && npm i && code . && npm запустить разработчик
    
  2. Затем откройте новую вкладку терминала GNOME, используя:

    гном-терминал --вкладка
    
  3. Затем переключитесь на эту вкладку и выполните:

    cd && cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev
    

Итак, в основном я хочу, чтобы один терминал с двумя вкладками работал на двух серверах разработки.

я пробовал с xdotool и хте, но это никогда не работало (клавиши даже не нажимались).

Возможно ли вообще делать то, что я хочу?

Как было предложено ниже, я попробовал, это дало мне не удалось запустить компакт-диск поэтому я погуглил и придумал следующее:

gnome-terminal --tab -- /bin/bash -e -c "cd path/to/repo && ls && git pull && npm i && code . && npm run dev" --tab -- /bin/bash -e -c "cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev"

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

vanadium avatar
флаг cn
Что вы пробовали до сих пор? Запуск двух последовательностей команд из командной строки `gnome-terminal` больше невозможен, потому что в настоящее время любые команды должны идти в конце после `--`. Вам может понадобиться другой эмулятор терминала, чтобы иметь возможность автоматически настроить два сеанса с вкладками.
terdon avatar
флаг cn
Небольшое примечание: вам не нужен `cd && cd path/to/repo`. Либо `path/to/repo` — это полный путь, поэтому вы просто делаете `cd path/to/repo`, либо, если он относится к вашему `$HOME`, вы можете сделать `cd ~/path/to/repo `.
флаг co
да, я знаю о `cd && cd path/to/repo`, в настоящее время я копирую и вставляю команду, так что это своего рода мой способ `git pull && npm i && npm run dev`, независимо от текущего каталога.
Рейтинг:4
флаг cn

Хотя гном-терминал указывает, что опция устарела, она все еще работает в 3.40.3.

# Опция «-e» устарела и может быть удалена в более поздних версиях gnome-terminal.
# Используйте '-- ', чтобы завершить опции и поместить командную строку для выполнения после нее.

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

Так это, например, все еще работает до сих пор:

gnome-terminal --tab -e "htop" --tab -e "top"

Заменить команды хтоп и вершина по вашим пользовательским сценариям.

флаг co
Вроде работает, но выдает ошибку: ```# Ошибка: не удалось выполнить дочерний процесс «cd»: не удалось выполнить: нет такого файла или каталога # Ошибка: Не удалось выполнить дочерний процесс «cd»: Не удалось выполнить: Нет такого файла или каталога``` но он работает с `gnome-terminal --tab -e "ping goo.gl"`, почему он не может запустить `cd` там?...
Рейтинг:0
флаг co

поэтому содержимое скрипта sh:

gnome-terminal --tab --title='frontend' -e "bash -c 'cd path/to/repo && git pull && npm i && code . && npm run dev'";
gnome-terminal --tab --title='backend' -e "bash -c 'cd path/to/repo && git reset --hard && git pull -f && npm i && npm run dev'"

Спасибо @vanadium за помощь в поиске направления гугления ;)

он работает по назначению. Если я открою терминал и напишу ш myScript.sh он откроет 2 дополнительные вкладки с работающими внутренними и внешними репозиториями.

Небольшая проблема заключается в том, что если я выполню файл sh, дважды щелкнув по нему, он откроет 2 окна терминала (уродливые, мне нужны вкладки).

Не знаю, как это исправить.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.