Разделение и объединение файлов
рукциям по установке приложений Linux, ориентированным на терминал, вы, вероятно, в тот или иной момент сталкивались с командойcurl
. cURL — это инструмент командной строки для передачи данных с помощью URL-адресов. Одним из самых простых способов использования является загрузка файла через командную строку. Однако это обманчиво, поскольку cURL — невероятно мощный инструмент, который может гораздо больше.
Читайте также: Как скопировать и вставить текст, файлы и папки в терминале Linux
Что такое cURL?
CURL, первоначально написанный Дэниелом Штернбергом в 1996 году для сбора финансовых данных с веб-серверов и их трансляции по IRC-каналам, превратился в мощный инструмент для получения данных без использования браузера. Если вы постоянно пользуетесь терминалом, это будет один из наиболее важных инструментов в вашем арсенале.
В большинстве дистрибутивов Linux cURL предустановлен в системе, и вы можете сразу его использовать. Да
Contents
Что такое cURL?
, он также находится в большинстве репозиториев, поэтому его можно легко установить с помощью Центра программного обеспечения.Для Windows нет команды, похожей на Curl, а в macOS предустановлена команда cURL, но нет столько же флагов в качестве версии для Linux.
Также читайте: Как использовать команду dd в Linux
Установка
Прежде чем двигаться дальше, мы должны убедиться, что cURL уже установлен в нашей системе.
Линукс
В дистрибутивах на базе Debian/Ubuntu используйте следующую команду для установки cURL:
sudo apt install curl
В дистрибутивах на основе Arch:
sudo pacman -S curl
В Fedora/CentOS/RHEL:
sudo dnf install curl
macOS
В macOS он уже предустановлен, поэтому ничего делать не нужно.
Читайте также: Как запустить терминал в текущей папке на Mac
Окна
- Для Windows 7/10/11 перейдите к страница загрузки cURL и выберите 64-битный или 32-битный пакет в зависимости от используемой архитектуры. Если вы не знаете свою архитектуру, беспроигрышным вариантом будет 64-разрядная версия, поскольку на ней работает подавляющее большинство оборудования, выпущенного после 2006 года.
- Создайте папку непосредственно на системном диске или в «C:\Program Files\» и назовите ее «cURL». <
Установка
oding="async" src="https://saintist.ru/wp-content/uploads/2024/05/linuxcurl-newfolder.png" alt="Новая папка Linuxcurl">- Вернитесь к з
Линукс
и zip-файлу, откройте его и найдите «curl.exe» в папке «bin». Скопируйте это в созданную вами папку cURL. Скопированный вами EXE-файл полностью автономен и способен выполнять любые варианты, которые вы можете запустить в Linux. - Чтобы сделать эту команду действительно полезной, нам нужно добавить ее в переменную PATH в Windows, чтобы ее можно было запускать из командной строки где угодно.
- Нажмите на меню «Пуск», введите
environment<
macOS
е Enter. - Нажмите «Переменные среды…». Теперь вы должны перейти к настройкам переменных среды.
- Выберите переменную среды «Путь», затем нажмите «Изменить…»
- В диалоговом окне редактирования пути н
Окна
ть» и введите каталог, в котором находится ваш «curl.exe», например «C:\Program Files\cURL».
- Нажмите «ОК» в диалоговых окнах, которые вы открыли в ходе этого процесса, и наслаждайтесь использованием cURL в своем терминале!
Каждый флаг в cURL, который можно использовать в Linux, должен работать и в версии для Windows.
Слово мудрым: помните, что командную строку никогда не следует путать с терминалом Windows. Windows Terminal поставляется с собственной версией cURL, включенной в PowerShell, которая выполняет аналогичные функции, но работает совершенно по-другому.
Читайте также: Как использовать команду Rm в Linux
Использование cURL
Чтобы начать, просто введите curl maketecheasier.com
в терминале и нажмите Enter.
Если вы не получаете никаких результатов, это значит, что сервер этого сайта не настроен на ответ на случайные запросы на подключение к его домену, отличному от www. Если вы опросили сервер, который не существует или не находится в сети, вы получите сообщение об ошибке, в котором говорится, что cURL не удалось разрешить хост.
Чтобы заставить cURL делать что-то действительно полезное, нам нужно указать протокол. В нашем примере мы используем протокол HTTPS для запроса домашней страницы этого сайта. Введите curl https://www.maketecheasier.com
.
Если все пойдет хорошо, вы увидите гигантскую стену данных. Чтобы сделать эти данные более удобными для использования, мы можем указать cURL поместить их в HTML-файл:
curl https://www.maketecheasier.com > ~/Downloads/mte.html
Эта команда помещает содержимое вывода нашего сайта в HTML-файл в папке «Загрузки». Перейдите в папку с вашим любимым файловым менеджером и дважды щелкните только что созданный файл. Должен открыться снимок HTML-вывода домашней страницы этого сайта.
Аналогично вы можете использовать флаг -o
для достижения того же результата:
curl -o ~/Downloads/mte.html https://www.maketecheasier.com
После перенаправления
Большинство сайтов автоматически перенаправляют трафик с протокола «http» на протокол «https». В cURL вы можете добиться того же с помощью флага -L
. Он будет автоматически следовать по 301 перенаправлению, пока не достигнет читаемой страницы или файла.
curl -L http://google.com.
Возобновление загрузки
При загрузке больших файлов, в зависимости от скорости вашего Интернета, прерывания могут быть очень раздражающими. К счастью, в cURL есть функция возобновления. Передача флага -C
решит эту проблему в один миг.
Чтобы показать реальный пример, я намеренно прервал загрузку ISO-образа тестовой версии Debian, нажав Ctrlи Cв середине его загрузки.
p>
Для нашей следующей команды необходимо установить флаг -C
. Например,
curl -C - -o ~/Downloads/debiantesting.iso -L https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-dvd/debian-testing-amd64-DVD-1.iso
Загрузка успешно началась с того места, где остановилась.
Загрузка более одного файла
Поскольку в cURL нет самого интуитивно понятного способа загрузки нескольких файлов, существует два метода, каждый из которых имеет свой компромисс.
Если файлы, которые вы загружаете, пронумерованы (например, файл1, файл2 и т. д.), вы можете использовать скобки, чтобы получить полный диапазон файлов, и «#» в выводе, который вы указываете с помощью 49.флаг. Чтобы сделать это немного менее запутанным, вот пример:
curl "http://example.com/file[1-5].zip" -o "#1_#2"
Проще всего это сделать с помощью -O
(--remote-name
). Этот флаг заставляет cURL загружать удаленный файл в локальный файл с тем же именем. Поскольку вам не нужно указывать вывод, вам следует использовать эту команду, когда терминал открыт в каталоге, в который вы хотите загрузить файлы.
curl -O "https://example.com/file1.zip" -O "https://example.com/file2.zip"
Если вам нужно загрузить большое количество пронумерованных файлов, лучше использовать для этого флаг --remote-name-all
:
curl --remote-name-all "https://example.com/file[1-5].zip"
Вы даже можете указать ненумерованные файлы с одного и того же сайта без необходимости повторно вводить URL-адрес с помощью скобок:
curl --remote-name-all "https://example.com/{file1.zip,anotherfile.zip,thisisfun.zip}"
Загрузка с аутентификацией
Скачивайте файлы, требующие аутентификации (например, при получении с частного FTP-сервера) с флагом -u
. Каждый запрос аутентификации должен выполняться сначала с именем пользователя, а затем с паролем, разделяя их двоеточием. Вот пример, чтобы упростить задачу:
curl -u username:password -o ~/Downloads/file.zip ftp://example.com/file.zip
Это позволит нашему другу bonobo_bob аутентифицироваться на FTP-сервере и загрузить файл в папку «Загрузки»
После перенаправления
ение файловЕсли по какой-либо причине вы хотите загрузить большой файл и разделить его на части, вы можете сделать это с помощью флага --range
в cURL. При --range
вы должны указать байт, с которого хотите начать, до байта, которым хотите закончить. Если вы не укажете конец диапазона, будет загружена оставшаяся часть файла.
В приведенной ниже команде cURL загрузит первые 100 МБ установочного образа Arch Linux:
curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-20Возобновление загрузки
>Для следующих 100 МБ используйте
--range 100000000-199999999
и т. д. Вы можете объединить эти команды, используя операнд&&
:curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 100000000-199999999 -o arch.part2 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 200000000-299999999 -o arch.part3 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 300000000-399999999 -o arch.part4 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 400000000-499999999 -o arch.part5 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2Загрузка более одного файла
; \ curl --range 500000000-599999999 -o arch.part6 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 600000000-699999999 -o arch.part7 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.iso && \ curl --range 700000000- -o arch.part8 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.isoЕсли вы в точности следовали приведенной выше структуре команд, должны появиться восемь файлов там, где вы попросили cURL загрузить их.
Чтобы воссоединить эти файлы, вам придется использовать команду
cat
, если вы используете Linux или macOS, например:cat arch.part? > arch.isoДля Windows вам придется использовать команду
copy
следующим образом:copy /b arch.part* arch.isoДругие полезные функции
Существует множество флагов и вариантов использования cURL:
-#
— использует индикатор выполнения, чтобы указать, насколько далеко вы продвинулись в том, что захватываете. Пример:curl -# https://asite.com/somefile.zip > ~/somefile.zip
.-a
— просит cURL добавить в файл, а не перезаписать его. Пример:curl -ao ~/collab-full.x https://example-url.com/collab-part26.x
.--head
— извлекает только заголовок ответа с сервера без выходных данных. Это полезно, когда вы отлаживаете веб-сайт или просматриваете запрограммированные ответы сервера клиентам. Пример:curl --head https://example-url.com
.--limit-rate
— заказЗагрузка с аутентификацией
скной способностью. Это полезно в ситуациях, когда вы не хотите, чтобы cURL занимал всю доступную пропускную способность вашей системы. Простое число будет интерпретироваться как байты в секунду. K представляет собой килобайты в секунду; M представляет собой мегабайты в секунду. Пример:curl --limit-rate 8M https://example-url.com/file.zip > ~/file.zip
.-o
— как упоминалось ранее, определяет выходной файл, который будет использовать cURL. Пример:curl -o ~/Downloads/file.zip https://thefileplace.com/file.zip -o file2.zip https://thefileplace.com/file2.zip
.--proxy
— Если вы хотите работать с прокси, это лучший способ сделать это. Пример:curl --proxy proxyurl:port https://example-url.com/file.zip > ~file.zip
.
cURL против Wget
Обе программы, cURL и Wget , выпущенные в одном и том же 1996 году, для обычного наблюдателя во многом являются родственными программами. Однако если копнуть немного глубже, вы увидите, что у этих двух сестер разные цели.
Получить
- Он полностью создан с нуля для сбора данных из Интернета.
- Не нужны флаги
-L
или-o
, такие как cURL; просто введитеwget [url]
и вперед! - Можно загружать рекурсивно, чтобы получить все содержимое каталога с флагом
-r
. - Имеет все функции, необходимые пользователю для ежедневного использования, и позволяет решать повседневные задачи системного администратора.
- (В Linux) Не требует большого количества зависимостей; все они должны быть доступны «из коробки».
Читайте также: Как установить и использовать wget на Mac
cURL
- Обширный набор флагов и полезных функций для удаленного поиска.
- Поддержка локальной сети (LDAP) и сетевых принтеров (Samba).
- Хорошо работает с библиотеками сжатия gzip.
- Зависит от библиотеки libcurl, которая позволяет разработчикам писать программное обеспечение или сценарии Bash, включающие функции cURL.
Короче говоря, Wget — это «набор инструментов для каждого» для получения данных из Интернета, а cURL расширяет эту функцию, предоставляя более детальный контроль для опытных пользователей и системных администраторов.
Часто задаваемые вопросы
1. Я получил ошибку сертификата в Linux. Как это исправить?
Если вы получили сообщение об ошибке типа «эмитент сертификата узла помечен как ненадежный», самый простой способ исправить это — переустановить пакет общих сертификатов в вашем дистрибутиве.
Для систем на базе Debian/Ubuntu:
sudo apt reinstall ca-certificates
Для Fedora/CentOS/RHEL:
dnf reinstall ca-certificates
Для систем на базе Arch:
pacman -S ca-certificates
Обратите внимание, что в Arch вы можете очистить кеш пакета с помощью pacman -Scc
перед переустановкой пакета сертификатов.
Если эта ошибка по-прежнему возникает, возможно, на стороне сервера что-то не так.
2. Безопасно ли запускать команды cURL и bash вместе?
Хотя это и не самый распространенный способ установки приложений Linux, ряд разработчиков (например, люди, стоящие за NodeJS) не оставляют вам другого выбора, кроме как использовать curl
вместе с командой root-доступа. который запускается через bash (например, curl [argument] | sudo -E bash -
) для установки программного обеспечения.
Это может выглядеть немного пугающе, но если люди, стоящие за приложением, заслуживают доверия, маловероятно, что вы что-то сломаете. Злоумышленники повсюду и могут проникнуть в репозитории, такие как AUR Arch, поэтому установка с использованием curl
в сочетании с командами root-доступа обычно не более безопасна, чем установка через менеджер пакетов.
3. Могу ли я использовать cURL с Tor?
Да! Запустите Tor Browser (или отдельный сервис Tor) и используйте флаг --proxy
. Tor предоставляет вам локальный прокси-сервер, который вы можете использовать для маскировки вашего IP-адреса в других приложениях. Вот пример использования cURL с Tor:
curl --proxy localhost:9050 http://example.com
Отдельные службы Tor будут использовать порт 9050 в качестве порта прослушивания, а браузер Tor использует порт 9150.
Подведение итогов
cURL доказал свою устойчивость в меняющейся структуре мира Linux, сохраняя свою позицию важного инструмента в арсенале пользователя терминала.
Если вы новичок в командной строке, ознакомьтесь с некоторыми из самые полезные команды Linux . Если вы просто хотите выполнить поиск в Интернете, а не загружать данные из Интернета, вы можете просмотрите на терминале тоже .