Когда я передаю по каналу к gzip
это не может принять stdin, который я должен с помощью 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
не делает work.why во второй ситуации gzip
примите stdin, и он не может принять аргумент?
Существует различие между , стандарт параметров командной строки и ввел .
gzip
принимает имена файлов как аргументы. Это считает необработанные данные из указанных файлов и сожмет их. Если у Вас есть команда, производящая список имен файлов, можно использовать xargs
для передачи тех имен файлов gzip
как параметры командной строки.
Однако, если никакие аргументы файла не передаются gzip
, это принимает значение по умолчанию для чтения необработанные данные от , стандарт ввел и печатает сжатый результат к стандартному выводу. Если у Вас есть команда, производящая необработанные данные, которые Вы хотите сжать, можно передать ее по каналу к gzip
.