Não faça as duas coisas -
e -@
apenas permita que você substitua argumentos zip
por 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 zip
por coisas transmitidas por meio de entrada padrão? Qual é a diferença?
Respostas:
A diferença é que -
irá compactar stdin
como se stdin
fosse o próprio arquivo a ser compactado. -@
lerá uma lista de nomes de arquivos stdin
e 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 IFS
espaç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 -