使用 child_process.execSync 但将输出保留在控制台中

新手上路,请多包涵

我想使用在 NodeJS 0.12 中添加的 execSync 方法,但在我运行 Node 脚本的控制台窗口中仍然有输出。

例如,如果我运行具有以下行的 NodeJS 脚本,我想在控制台中查看 rsync 命令“live”的完整输出:

 require('child_process').execSync('rsync -avAXz --info=progress2 "/src" "/dest"');

我知道 execSync 返回命令的输出,我可以在执行后将其打印到控制台,但这样我就没有“实时”输出……

原文由 suamikim 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.4k
2 个回答

如果这是您想要的,您可以将父级的 stdio 传递给子进程

 require('child_process').execSync(
    'rsync -avAXz --info=progress2 "/src" "/dest"',
    {stdio: 'inherit'}
);

原文由 gregers 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以简单地使用 .toString()

 var result = require('child_process').execSync('rsync -avAXz --info=progress2 "/src" "/dest"').toString();
console.log(result);


编辑:回顾这一点,我意识到它实际上并没有回答具体问题,因为它没有向您“实时”显示输出——仅在命令运行完毕后。

但是,我在这里留下这个答案,因为我知道很多人遇到这个问题只是为了寻找如何在执行后打印命令的结果。

原文由 Ethan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进