Разве оба - и -@ просто позволяют вам заменять аргументы в zip материалом, переданным через стандартный ввод? Какая разница?
1 ответ
Разница в том, что - сжимает stdin как будто stdin сам является файлом, который нужно сжать. -@ прочитает список имен файлов из stdin и добавит каждый из этих файлов в архив. Примеры на странице руководства иллюстрируют разницу (хотя, пожалуйста, на самом деле не используйте пример -@ , он не работает и не будет работать с любыми именами, содержащими символы в IFS например пробелы):
В Unix этот параметр может быть использован для эффективного эффекта в сочетании с командой find (1). Например, чтобы заархивировать все исходные файлы C в текущем каталоге и его подкаталогах:
find . -name "*.[ch]" -print | zip source -@
а также
zip также принимает одну черту ("-") в качестве имени файла, который будет сжат, и в этом случае он будет считывать файл из стандартного ввода, позволяя zip получать данные из другой программы. Например:
tar cf - . | zip backup -
