Para o GNU gzip 1.6 ou superior, FreeBSD e derivados ou versões recentes do NetBSD, veja a resposta do don_cristi .
Com qualquer versão, você pode usar redirecionamentos de shell como em:
gzip < file > file.gz
Quando não é fornecido nenhum argumento, gzip lê sua entrada padrão, compacta-a e grava a versão compactada em sua saída padrão. Como bônus, ao usar redirecionamentos de shell, você não precisa se preocupar com arquivos chamados "--help" ou "-" (esse último ainda é um problema para gzip -c -- ).
Outro benefício sobre gzip -c file > file.gz é que, se file não puder ser aberto, o comando falhará sem criar um file.gz vazio (ou sobrescrevendo um file.gz existente) e sem executar gzip .
Uma diferença significativa em relação a gzip -k é que não haverá nenhuma tentativa de copiar os metadados de file (propriedade, permissões, tempo de modificação, nome do arquivo descompactado) para file.gz .
Além disso, se o file.gz já existir, ele irá silenciosamente sobrescrevê-lo, a menos que você tenha ativado a opção noclobber no seu shell (com set -o noclobber , por exemplo, em shells POSIX).