node.js - 如何将 Node CLI 程序的输出通过管道传输到 shell?

标签 node.js node.js-stream

我基本上想做这样的事情:

$ my-node-cli <some-param> | less

请注意less这只是一个例子。我需要它与任何其他 *nix 命令一起使用。

有关用例的更多信息:
我编写了一个 Node CLI 包,用于搜索一些在线资源并将结果输出到 shell。由于结果集可能很大,客户端希望对其进行额外的操作,例如 grep , head , tail , tee ,...真的什么都可以。

我进行了广泛的搜索,但我只找到了通过管道进入 Node 程序的方法,而不是中导出。我当前的想法是在调用我的程序时捕获管道的右侧,然后在获得结果后,使用 child_process.exec 执行与管道(以及我被调用时我记得的那部分)连接的结果。 。不确定这是否可行?

请注意,每次调用我的程序时,它都是一个新进程,即该程序没有自己的提示符。

谢谢

最佳答案

您所需要做的就是从应用程序中的 STDOUT 输出。如果通过管道传送到下一个程序,这将被发送到下一个程序。

您可以使用普通的旧console.log()process.stdout stream .

由 shell 来处理流重定向,而不是您的应用程序。

关于node.js - 如何将 Node CLI 程序的输出通过管道传输到 shell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30652243/

相关文章:

session - 将 node.js 连接到 virtuoso graph 的库?

jquery - 使用 Node.js 流式传输数据

javascript - 如何将 HTMLTableRowElement 插入表体?

node.js - 我必须在可读事件处理程序中重复调用 readable.read() 吗?

javascript - 如何确保在流处理完成后执行异步代码?

javascript - 为什么 'finish' 事件会在 _flush 完成之前在 Node.js 转换流上触发?

javascript - javascript中如何处理这个默认参数?

javascript - 如何制作一个 NodeJS 服务器,在连接时按时间间隔逐行发出字符串文件?

javascript - Node fs.readstream() 输出 <Buffer 3c 3f 78 6d 6c ...> 而不是可读数据

javascript - 未处理的 promise 拒绝在哪里?我怎样才能避免它?