Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

So if I enter the command

$ gzip --version | head -n1

everything goes as expected. But if I try the same with bzip2:

$ bzip2 --version | head -n1

I get a lot of lines and I have to press Ctrlc to terminate.

What is happening here?

EDIT:

The lines being printed by

$ bzip2 --version | head -n1

bzip2, a block-sorting file compressor.  Version 1.0.6, 6-Sept-2010.

Copyright (C) 1996-2010 by Julian Seward.

This program is free software; you can redistribute it and/or modify
it under the terms set out in the LICENSE file, which is included
in the bzip2-1.0.6 source distribution.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
LICENSE file for more details.

and i have to press Ctrlc to continue.

If I omit the pipe I get

$ bzip2 --version 

bzip2, a block-sorting file compressor.  Version 1.0.6, 6-Sept-2010.

Copyright (C) 1996-2010 by Julian Seward.

This program is free software; you can redistribute it and/or modify
it under the terms set out in the LICENSE file, which is included
in the bzip2-1.0.6 source distribution.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
LICENSE file for more details.

bzip2: I won't write compressed data to a terminal.
bzip2: For help, type: `bzip2 --help'.

If I merge stdout with stderr as @devnull sais, it displays the lines well, but i need to press Ctrlc. I tried

$ gcc 2>&1 | head -n1

and it works well, so I think there is something still missing in the bzip2 command.

EDIT 2:

I solved the issue with the following command:

$ bzip2 --version 2>&1 < /dev/null | head -n1 

But I still don't understand the problem.

share|improve this question
    
Could you show some of the lines being printed? Does \bzip2 --version 2>&1 | head -n1 work better? –  terdon Jan 31 at 15:07
    
The version # appears and the license block. If the pipe is removed, I see also: "bzip2: I won't write compressed data to a terminal." –  Amphiteót Jan 31 at 16:41
    
@terdon It works better, but i still have to press Ctrl-C, and I don't know why. –  Msegade Jan 31 at 19:56
    
Please post the output of type bzip2 and type head. –  terdon Jan 31 at 20:00
    
@terdon type bzip2 gives bzip2 is /usr/bin/bzip2. type head gives head is /usr/bin/head. –  Msegade Jan 31 at 20:03

1 Answer 1

The difference is that gzip --version outputs to STDOUT while bzip2 --version outputs to STDERR.

Merge STDERR into STDOUT and you'd see the expected:

$ bzip2 --version 2>&1 | head -n1
bzip2, a block-sorting file compressor.  Version 1.0.6, 6-Sept-2010.
share|improve this answer
    
That's better, but still doesn't work as expected, I have to press Ctrl-C as before. –  Msegade Jan 31 at 13:50
    
@Msegade That's odd. I just tried it and don't need to interrupt to get the prompt. –  devnull Jan 31 at 13:51

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.