Windows терминал: открыть несколько панелей и выполнить указанную команду - PullRequest
3 голосов
/ 19 июня 2020

Я недавно скачал новый Windows Terminal. Я создал ярлык для открытия нескольких панелей (который работает нормально). Однако я пытаюсь выполнить команду для соответствующей панели.

wt -d <path> -c "cls && php artisan serve" ; 
   split-pane -p "Command Prompt" -H -d <path> -c "npm run watch"

Я искал решение в Google, но не повезло.

Возможно ли это вообще ..?

1 Ответ

2 голосов
/ 19 июня 2020

Короткий ответ: Да, это возможно, но это обходной путь.

Проблемы

  1. wt.exe в настоящее время не имеет параметра командной строки для выполнения команды из split-pane
  2. wsl.exe (который запускает вашу оболочку по умолчанию, например bash) в настоящее время не поддерживает открытие оболочки с помощью команды без выхода оболочка сразу после запуска команды.

Обходной путь

Чтобы обойти первую проблему, мы можем запустить настраиваемый профиль, который выполняет команду через wsl.exe в паре ключ-значение (в настройках json) "commandline": "wsl.exe 'commands go here"

Чтобы обойти вторую проблему, нам нужно выполнить wsl.exe 'commands go here' через powershell.exe, потому что Powershell имеет параметр -NoExit, который будет держать оболочку открытой после выполнения команды. Так, например, если вы хотите открыть оболочку, которая запускает wsl.exe (ваша linux оболочка) с помощью команды watch ps, тогда строка в настраиваемом профиле будет выглядеть так:

"commandline": "powershell.exe -NoExit -Command wsl.exe watch ps"

Решение:

Создайте профиль в Windows Терминале settings.json для каждой команды, которую вы хотите запустить. Каждый профиль должен иметь уникальный guid, который можно создать в Powershell, выполнив команду [guid]::NewGuid(). Таким образом, профиль для запуска команды watch ps будет выглядеть примерно так:

            {
                "guid": "{b7041a85-5613-43c0-be35-92d19002404f}",
                "name": "watch_ps",
                "commandline": "powershell.exe -NoExit -Command wsl.exe watch ps",
                "hidden": false,
                "colorScheme": "One Half Dark"
            },

Теперь вы можете открыть вкладку в терминале windows с двумя панелями, панель справа запустит команду watch ps, и оболочка останется открытой. Поместите что-то вроде приведенной ниже строки кода в ярлык (или из командной строки), где значение параметра -p равно значению созданного вами профиля. Для каждой дополнительной панели, которую вы открываете, потребуется профиль, в котором есть команда, которую вы хотите запустить.

wt split-pane -p "watch_ps"

...