Intereting Posts
Как отключить определенные системные вызовы для данного пользователя? SCP работает, но SSH не работает (по Wi-Fi) Список всех файлов / двоичных файлов в текущем PATH Firejail или chroot Инструмент командной строки для «cat» попарно расширяет все строки в файле Зашифрованная домашняя папка и электронная почта Выполняет ли «последнюю» команду в сбросе linux через определенное количество времени? Молчаливые ошибки диска и надежность обмена Linux Установка шрифта Computer Modern в Arch Linux Разница tun / tap, это интерфейсы, которые обрабатывают протоколы или ОС? Автоматическое расширение последнего раздела для использования всего нераспределенного пространства, используя разделенный в пакетном режиме Что делает «sudo su -s / bin / bash – <username>»? Конфигурирование конфигурации отображения GNOME / Wayland из командной строки «Виртуальное супер разрешение» Почему «slabtop -o» возвращает только первые 23 строки, когда команда передана по конвейеру?

Инструмент для сжатия / распаковки STDIN

Есть ли инструмент, который сжимает STDIN и выводит его в STDOUT? Этот инструмент (или его аналог) должен также иметь возможность распаковывать. Что-то простое в порядке, но оно должно быть без потерь.

GZIP

Большинство утилит поддерживают вывод в STDOUT. Возьмем, к примеру, gzip :

 $ echo "asdgasdfasdfasdfasdfasdfasdf" | gzip | xxd 00000000: 1f8b 0800 219b dd57 0003 4b2c 4e49 4f2c ....!..W..K,NIO, 00000010: 4e49 c386 b900 45ce f97c 1d00 0000 NI....E..|.... 

Я использовал xxd поскольку существуют некоторые непечатаемые символы. Запустите его через gunzip для распаковки

XZ

xz работает довольно похоже:

 $ echo "asdfasdfasdf" | xz | xxd 00000000: fd37 7a58 5a00 0004 e6d6 b446 0200 2101 .7zXZ......F..!. 00000010: 1600 0000 742f e5a3 e000 0c00 0b5d 0030 ....t/.......].0 00000020: 9cc8 abf9 a8be f900 0000 0000 9525 d79a .............%.. 00000030: 089a c592 0001 270d f37b f284 1fb6 f37d ......'..{.....} 00000040: 0100 0000 0004 595a ......YZ 

и для распаковки:

 $ echo "asdfasdfasdf" | xz | xz -d asdfasdfasdf 

gzip делает это. Цитата из страницы руководства :

Gzip уменьшает размер названных файлов с использованием кодирования Lempel-Ziv (LZ77). По возможности каждый файл заменяется на один с расширением .gz , сохраняя одинаковые режимы владения, время доступа и модификации. (Расширение по умолчанию – -gz для VMS, z для MSDOS, OS / 2 FAT, Windows NT FAT и Atari.) Если файлы не указаны или имя файла «-», стандартный ввод сжимается до стандарта выход . Gzip будет пытаться сжать обычные файлы. В частности, он будет игнорировать символические ссылки.

Конечно, есть и другие. Обычно Unix / Unix-подобные системы фильтруют стандартный ввод на выходе. Термин «фильтр» охватывает множество возможностей; сжатие и декомпрессия – это лишь некоторые из них.

Да, есть много, например gzip , bzip2 , xz , …

 cat testfile|gzip 

выводит сжатый поток stdin в stdout .

 cat file.gz|gzip -d 

будет декомпрессировать сжатый поток на stdin и вывести результат декомпрессии в stdout

То же самое относится к bzip2 и xz и многим другим утилитам сжатия, хотя параметры могут отличаться. Проверьте соответствующие страницы руководства