Linux QuickTip Загрузка и распаковка за один шаг
В большинстве случаев, когда я что-то скачиваю, это какой-то файловый архив - обычно тарбол или zip-файл. Это может быть некоторый исходный код для приложения, которое не включено в дерево Portage Gentoo, некоторая документация для внутреннего корпоративного приложения или даже что-то столь же обыденное, как новая установка WordPress.
Традиционный способ загрузки и распаковки чего-либо в терминале будет выглядеть примерно так:
wget http://wordpress.org/latest.tar.gz
tar xvzf latest.tar.gz
rm latest.tar.gz
Или, возможно, более компактная форма:
wget http://wordpress.org/latest.tar.gz && tar xvzf latest.tar.gz && rm latest.tar.gz
В любом случае это немного неуклюже. Это очень простая операция, такая мощная оболочка, как bash, должна позволять выполнять такую задачу более «гладко»..
Что ж, благодаря полезной маленькой команде «curl», мы можем на самом деле справиться с беспорядком, описанным выше, всего одним оператором:
завиток http://wordpress.org/latest.tar.gz | tar xvz
Нет временных файлов, от которых можно избавиться, нет возни с амперсандами. Короче говоря, очень компактная, эффективная команда. Фактически, с теоретической точки зрения, метод curl может быть быстрее, чем сцепленный беспорядок wget / tar / rm, так как трубопровод stdout будет использовать RAM в качестве буфера, если это возможно, тогда как wget и tar (с ключом -f) должны читать / записывать прямо с диска.
Между прочим, tar с параметром -v (как мы его используем во всех приведенных выше примерах) печатает каждое имя файла в стандартный вывод, поскольку каждый не подвергается обработке. Это может помешать хорошему выводу curl, показывающему состояние загрузки. Мы можем отключить tar, вызвав его без -v таким образом:
завиток http://wordpress.org/latest.tar.gz | tar xz
И это все, что нужно сделать!