Não faça as duas coisas -e -@apenas permita que você substitua argumentos zippor coisas transmitidas por meio de entrada padrão? Qual é a diferença?
Não faça as duas coisas -e -@apenas permita que você substitua argumentos zippor coisas transmitidas por meio de entrada padrão? Qual é a diferença?
Respostas:
A diferença é que -irá compactar stdincomo se stdinfosse o próprio arquivo a ser compactado. -@lerá uma lista de nomes de arquivos stdine incluirá cada um desses arquivos no arquivo morto. Os exemplos na página do manual ilustram a diferença (embora, na verdade, não use o -@exemplo, ele está quebrado e falhará em qualquer nome que contenha caracteres em IFSespaços semelhantes):
No Unix, esta opção pode ser usada com efeitos poderosos em conjunto com o comando find (1). Por exemplo, para arquivar todos os arquivos de origem C no diretório atual e seus subdiretórios:
find . -name "*.[ch]" -print | zip source -@
e
zip também aceita um único traço ("-") como o nome de um arquivo a ser compactado; nesse caso, ele lerá o arquivo da entrada padrão, permitindo que o zip receba a entrada de outro programa. Por exemplo:
tar cf - . | zip backup -