如何通过VSCode终端API获取输出字符串?

3
VSCode有一个Windows API,可以与终端进行交互。
例如,您可以发送Linux命令pwd,命令输出可能是/usr/home/userName 我尝试将输出写入磁盘,然后稍后使用类似于pwd > directory.txt的方式读取它;
terminal.sendText(`pwd > directory.txt`);

这似乎有效,但我想知道是否有更优雅的方法。
//Create a new terminal
let terminal = vscode.window.createTerminal(`Name of terminal`, 'C:\path\to\terminal\shell\shell.exe');

// send command to newly created terminal
terminal.sendText(`pwd`);


我确定上面的代码可以工作,因为我可以使用以下方法将输出写入文件:
terminal.sendText(`pwd > directory.txt`);

问题是,如何将terminal.sendText()的输出作为字符串获取,而不必先写入磁盘?

如果您不需要在 UI 终端中显示正在运行的命令,则可以使用 Node 的 exec / spawn API:https://dev59.com/j2Ij5IYBdhLWcg3wGBfj#20643568 - Gama11
我已经尝试使用node-cmd包,但在Windows子系统上似乎无法正常工作。 - M4X_
1个回答

0
vscode还提供了一个事件来监听写入终端的任何数据,使用以下代码来监听终端写入:
vscode.window.onDidWriteTerminalData((e) => {console.log(e.data)})

但它会监听所有的写入操作,所以你需要加入一些条件来防止读取终端上的每一个按键输入,也许你只能在 e.data == \n 或其他条件下进行读取。


4
这只是一份提议中的API,将永远不会发布,因此它已经不再是一个解决方案。 - Justin Grote

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接