Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to pipe output of a node CLI program to shell?

I basically want to do something like this:

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

Note that less is just an example. I need it to work with any other *nix command.

More about the use case:
I wrote a node CLI package that searches some online resource and outputs results to the shell. Since the result set can be huge, client wants to do additional operations on it, e.g grep, head, tail, tee, ... anything really.

I searched far and wide and I only managed to find the way to pipe into node program, not out of. My current idea is to capture the right side of pipe when my program is called, then, after I obtain results, execute my results concatenated with pipe (and that part I remembered when I was called) using child_process.exec. Not sure whether that could work though?

Note that each time my program is called it's a new process, i.e. the program doesn't have it's own prompt.

Thanks

like image 286
Marko Bonaci Avatar asked Mar 18 '26 20:03

Marko Bonaci


1 Answers

All you need to do is output from STDOUT in your application. This will be sent to the next program if piped to it.

You can use plain old console.log() or the process.stdout stream.

It's up to the shell to handle stream redirection, not your application.

like image 128
Brad Avatar answered Mar 21 '26 08:03

Brad



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!