139
votes

Is it possible to compress (create a compressed archive) data while reading from stdin on Linux?

3
I'm voting to close this question as off-topic because it belongs to Unix & Linux - Dan Dascalescu

3 Answers

199
votes

Yes, use gzip for this. The best way is to read data as input and redirect the compressed to output file i.e.

cat test.csv | gzip > test.csv.gz

cat test.csv will send the data as stdout and using pipe-sign gzip will read that data as stdin. Make sure to redirect the gzip output to some file as compressed data will not be written to the terminal.

112
votes

Yes, gzip will let you do this. If you simply run gzip > foo.gz, it will compress STDIN to the file foo.gz. You can also pipe data into it, like some_command | gzip > foo.gz.

1
votes

gzip > stdin.gz perhaps? Otherwise, you need to flesh out your question.