Gzip принимает стандартный ввод?
Когда я трубку gzip он не может принять стандартный ввод, я должен использовать xargsпреобразовать STDIN в аргумент
$ls
1.txt
$ls |xargs gzip && ls
1.txt.gz
все отлично. но когда я хочу сжать файл архива cpio
$ls | cpio -ov | gzip > archive.cpio.gz
и это нормально, и это ls | cpio -ov | xargs gzip не работает. почему во второй ситуации gzip принять стандартный ввод, и он не может принять аргумент?
1 ответ
Существует разница между аргументами командной строки и стандартным вводом.
gzip принимает имена файлов в качестве аргументов. Он будет читать необработанные данные из указанных файлов и сжимать их. Если у вас есть команда, выводящая список имен файлов, вы можете использовать xargs передать эти имена gzip в качестве аргументов командной строки.
Однако если аргументы файла не передаются gzipпо умолчанию он считывает свои необработанные данные из стандартного ввода и печатает сжатый результат в стандартный вывод. Если у вас есть команда, выводящая необработанные данные, которые вы хотите сжать, вы можете передать их gzip,