Linux

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

И это все, что нужно сделать!

Похожие посты
Linux

8 лучших окружений рабочего стола Linux

AndroidIphone и ipadLinuxWindows

Окончательное руководство по включению темного режима везде

LinuxКак сделать

Что такое Swappiness в Linux? (и как это изменить)

LinuxКак сделать

Как использовать команду ls для вывода списка файлов и каталогов в Linux