如何将节点 CLI 程序的输出通过管道传输到 shell?
How to pipe output of a node CLI program to shell?
我基本上想做这样的事情:
$ my-node-cli <some-param> | less
请注意,less
只是一个示例。我需要它与任何其他 *nix 命令一起使用。
有关用例的更多信息:
我编写了一个节点 CLI 包,用于搜索一些在线资源并将结果输出到 shell。由于结果集可能很大,客户希望对其进行额外的操作,例如 grep
、head
、tail
、tee
、...任何东西。
我进行了广泛的搜索,但我只设法找到了将 输送到 节点程序的方法,而不是 输出 的方法。我目前的想法是在调用程序时捕获管道的右侧,然后在获得结果后,使用 child_process.exec
执行与管道连接的结果(以及调用时我记得的那部分)。不确定这是否可行?
请注意,每次调用我的程序都是一个新进程,即程序没有自己的提示。
谢谢
您需要做的就是从应用程序中的 STDOUT 输出。如果通过管道将其发送到下一个程序。
您可以使用普通的旧 console.log()
或 process.stdout
stream。
这取决于 shell 来处理流重定向,而不是您的应用程序。
我基本上想做这样的事情:
$ my-node-cli <some-param> | less
请注意,less
只是一个示例。我需要它与任何其他 *nix 命令一起使用。
有关用例的更多信息:
我编写了一个节点 CLI 包,用于搜索一些在线资源并将结果输出到 shell。由于结果集可能很大,客户希望对其进行额外的操作,例如 grep
、head
、tail
、tee
、...任何东西。
我进行了广泛的搜索,但我只设法找到了将 输送到 节点程序的方法,而不是 输出 的方法。我目前的想法是在调用程序时捕获管道的右侧,然后在获得结果后,使用 child_process.exec
执行与管道连接的结果(以及调用时我记得的那部分)。不确定这是否可行?
请注意,每次调用我的程序都是一个新进程,即程序没有自己的提示。
谢谢
您需要做的就是从应用程序中的 STDOUT 输出。如果通过管道将其发送到下一个程序。
您可以使用普通的旧 console.log()
或 process.stdout
stream。
这取决于 shell 来处理流重定向,而不是您的应用程序。