我目前正在构建VSCode扩展,该扩展在终端中启动shell命令。我想做的是将输出作为字符串获得,但是如果我不想要,则只显示输出(或保持终端打开)。
我可以打开终端,并使用以下代码运行它:
let terminal = vscode.window.createTerminal({
name: "My Command",
cwd: cwd,
hideFromUser: false,
shellPath: script,
shellArgs: args,
});
terminal.show()
这很好用,命令运行,我可以在底部的终端中看到输出,但是命令完成后它将立即关闭。有什么方法可以让终端保持打开状态,或以某种方式获取命令输出?我一直在仔细阅读文档,但似乎没有任何东西。
答案 0 :(得分:0)
在 Windows 上,使用上面注释中的链接,并假设您实际上是想运行 powershell 命令或脚本并接收输出(而不是专门使用终端),这是一种有效的方法:
import * as cp from "child_process";
const execShell = (cmd: string) =>
new Promise<string>((resolve, reject) => {
cp.exec(cmd, (err, out) => {
if (err) {
return resolve(cmd+' error!');
//or, reject(err);
}
return resolve(out);
});
});
//... show powershell output from 'pwd'...
context.subscriptions.push(
vscode.commands.registerCommand('test', async () => {
const output = await execShell('powershell pwd');
vscode.window.showInformationMessage(output);
})
);