Збережіть файл у певну папку з командою curl


182

У сценарії оболонки я хочу завантажити файл із якоїсь URL-адреси та зберегти його у певній папці. Який конкретний прапор CLI я повинен використовувати для завантаження файлів у певну папку за допомогою curlкоманди, або як ще я отримаю цей результат?


Здавалося б, програмування bash - це програмування ...
rjurney

Відповіді:


281

Я не думаю, що ви можете дати шлях до згортання, але ви можете компакт-диск до місця, завантажити та повернути компакт-диск назад.

cd target/path && { curl -O URL ; cd -; }

Або за допомогою допоміжної оболонки.

(cd target/path && curl -O URL)

Обидва способи завантажуватимуться лише за наявності шляху. -Oзберігає віддалене ім'я файлу. Після завантаження він повернеться у вихідне місце.

Якщо вам потрібно встановити ім'я файлу явно, ви можете використовувати невеликий -oваріант:

curl -o target/path/filename URL

2
У мене є така команда: curl -LOk basename /packages" github.com/ziyaddin/xampp/archive/master.zip ". Але в ньому сказано, що неправильне ім’я файлу ->basename /packages
Зіяддін Садігов

10
Ви також можете скористатися передплатою, наприклад так:(cd target/path; curl -O URL)
Ehtesh Choudhury

9
Яка різниця між ними? Перший компакт-диск потрапляє в каталог і завантажує файл, а потім CD-диск. Другий залишається в поточному каталозі і закручує файл у визначене місце. Другий здається більш простим.
Генрі Чжу

9
@HenryZhu У першому ім'я файлу походить від імені файлу на сервері. У другій ви перейменовуєте завантажений вміст на ім’я, яке ви надаєте.
turtlemonvh

4
Мені дуже хотілося б вказати каталог, але використовувати ім'я файлу сервера. Здається, використання cdнайкращого варіанту на даний момент, хоча здається, що це трохи неелегантно.
StockB

4

curlне має можливості для цього (не вказуючи також ім'я файлу), але так wgetі є. Каталог може бути відносним або абсолютним. Також каталог автоматично буде створений, якщо його не існує.

wget -P relative/dir "$url"

wget -P /absolute/dir "$url"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.