Windows终端:打开多个窗格并执行指定的命令
Windows terminal: open multiple panes and execute specified command
我最近下载了新的 Windows Terminal
。我已经创建了打开多个窗格的快捷方式(工作正常)。但是,我正在尝试为相应的窗格执行命令。
wt -d <path> -c "cls && php artisan serve" ;
split-pane -p "Command Prompt" -H -d <path> -c "npm run watch"
我在谷歌上搜索了解决方案,但一无所获。
这可能吗..?
简短的回答是:是的,这是可能的,但这是一种解决方法。
挑战
wt.exe
目前没有命令行选项来执行
来自 split-pane
的命令
wsl.exe
(运行是你默认的shell比如bash)目前不支持用命令打开shell而不退出shell 命令紧跟在 运行. 之后
解决方法
为了解决第一个挑战,我们可以启动一个自定义配置文件,该配置文件通过键值对中的 wsl.exe
执行命令(在设置 json 中)"commandline": "wsl.exe 'commands go here"
为了绕过第二个挑战,我们需要通过 powershell.exe
执行 wsl.exe 'commands go here'
,因为 Powershell 有一个 -NoExit
选项,它将保留 shell 命令执行后打开。因此,例如,如果您想使用命令 watch ps
打开 shell that 运行s wsl.exe
(您的 linux shell),则该行在自定义配置文件中将如下所示:
"commandline": "powershell.exe -NoExit -Command wsl.exe watch ps"
解决方法:
在 Windows 终端 settings.json
中为您要 运行 的每个命令创建配置文件。每个配置文件都应该有一个唯一的 guid
,您可以通过 运行 命令 [guid]::NewGuid()
在 Powershell 中生成它。因此 运行 命令 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
而 shell 将保持打开状态.在您的快捷方式(或从命令行)中放置类似下面的代码行,其中选项 -p
的值等于您创建的配置文件的值。您打开的每个附加窗格都需要一个配置文件,其中包含您想要 运行 的命令。
wt split-pane -p "watch_ps"
我有一个类似的设置。
Im 运行 Windows 终端版本 1.8.1444.0
我的目标是在左窗格中设置一个 dotnet 核心应用程序 运行 并在右窗格中设置一个反应应用程序 运行:
wt -d "C:\path\to\dotnetcoreapp" -p "Command Promt" cmd /k dotnet watch run ; split-pane -d "C:\path\to\reactapp" cmd /k yarn start
还尝试启动交互式长生不老药会话:wt -d "C:\dev\elixir" cmd /k IEx
也运行良好...
我最近下载了新的 Windows Terminal
。我已经创建了打开多个窗格的快捷方式(工作正常)。但是,我正在尝试为相应的窗格执行命令。
wt -d <path> -c "cls && php artisan serve" ;
split-pane -p "Command Prompt" -H -d <path> -c "npm run watch"
我在谷歌上搜索了解决方案,但一无所获。
这可能吗..?
简短的回答是:是的,这是可能的,但这是一种解决方法。
挑战
wt.exe
目前没有命令行选项来执行 来自split-pane
的命令
wsl.exe
(运行是你默认的shell比如bash)目前不支持用命令打开shell而不退出shell 命令紧跟在 运行. 之后
解决方法
为了解决第一个挑战,我们可以启动一个自定义配置文件,该配置文件通过键值对中的 wsl.exe
执行命令(在设置 json 中)"commandline": "wsl.exe 'commands go here"
为了绕过第二个挑战,我们需要通过 powershell.exe
执行 wsl.exe 'commands go here'
,因为 Powershell 有一个 -NoExit
选项,它将保留 shell 命令执行后打开。因此,例如,如果您想使用命令 watch ps
打开 shell that 运行s wsl.exe
(您的 linux shell),则该行在自定义配置文件中将如下所示:
"commandline": "powershell.exe -NoExit -Command wsl.exe watch ps"
解决方法:
在 Windows 终端 settings.json
中为您要 运行 的每个命令创建配置文件。每个配置文件都应该有一个唯一的 guid
,您可以通过 运行 命令 [guid]::NewGuid()
在 Powershell 中生成它。因此 运行 命令 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
而 shell 将保持打开状态.在您的快捷方式(或从命令行)中放置类似下面的代码行,其中选项 -p
的值等于您创建的配置文件的值。您打开的每个附加窗格都需要一个配置文件,其中包含您想要 运行 的命令。
wt split-pane -p "watch_ps"
我有一个类似的设置。 Im 运行 Windows 终端版本 1.8.1444.0
我的目标是在左窗格中设置一个 dotnet 核心应用程序 运行 并在右窗格中设置一个反应应用程序 运行:
wt -d "C:\path\to\dotnetcoreapp" -p "Command Promt" cmd /k dotnet watch run ; split-pane -d "C:\path\to\reactapp" cmd /k yarn start
还尝试启动交互式长生不老药会话:wt -d "C:\dev\elixir" cmd /k IEx
也运行良好...