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
,