Как заставить CURL сохранить в другой каталог? - PullRequest
5 голосов
/ 10 апреля 2009

Мне нужно указать URL-адрес загружаемого файла, а также путь к файлу для сохранения.

Я думаю, что это как-то связано с -O и -o в CURL, но я не могу понять это.

Например, вот что я сейчас использую в своем скрипте bash:

#!/bin/sh

getsrc(){
    curl -O $1
}

getsrc http://www.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.tar.gz

Как я могу изменить оператор curl, чтобы я мог сделать

getsrc http://www.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.tar.gz /usr/local

и сохранить его в / usr / local?

Ответы [ 2 ]

6 голосов
/ 10 апреля 2009

Если это сценарий, вы должны убедиться, что готовы к любым непредвиденным обстоятельствам:

getsrc() {
    ( cd "$2" && curl -O "$1" )
}

Это означает цитирование ваших параметров, если они содержат метасимволы оболочки, такие как вопросительные знаки, звезды, пробелы, табуляции, новые строки и т. Д.

Это также означает использование оператора && между командами cd и curl в случае, если целевой каталог не существует (если вы его не используете, curl все равно загрузится без ошибок, но поместит файл в неправильное местоположение!)

Эта функция принимает два аргумента:

  • URL-адрес данных, которые необходимо загрузить.
  • Локальный PATH, в котором должны храниться данные (с использованием имени файла на основе URL)

Чтобы указать локальное имя файла, а не путь, используйте более упрощенный:

getsrc() {
    curl "$1" > "$2"
}
6 голосов
/ 10 апреля 2009

Гул ... что вы, вероятно, хотите сделать, это

getsrc(){
    ( cd $2 > /dev/null ; curl -O $1 ; ) 
}

-O ( заглавная O) говорит о том, что следует хранить в локальной папке с именем, например, удаленный файл, но игнорировать компонент удаленного пути. Чтобы иметь возможность хранить в определенном каталоге, самый простой способ - это перейти на него ... и я делаю это в под-оболочке, чтобы изменение dir не распространялось

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...