Salve o arquivo em uma pasta específica com o comando curl

182

Em um script de shell, quero baixar um arquivo de algum URL e salvá-lo em uma pasta específica. Qual é o sinalizador da CLI específico que devo usar para baixar arquivos para uma pasta específica com o curlcomando ou de que outra forma eu obtenho esse resultado?

Ziyaddin Sadigov
fonte
Parece que o bash programação está programando ...
rjurney

Respostas:

282

Eu não acho que você pode dar um caminho para enrolar, mas você pode CD para o local, fazer o download e voltar ao CD.

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

Ou usando subshell.

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

Os dois modos serão baixados apenas se o caminho existir. -Omantém o nome do arquivo remoto. Após o download, ele retornará ao local original.

Se você precisar definir o nome do arquivo explicitamente, poderá usar a -oopção pequena :

curl -o target/path/filename URL
Atle
fonte
2
Eu tenho este comando: curl -LOk basename /packages" github.com/ziyaddin/xampp/archive/master.zip ". Mas ele diz que nome de arquivo errado ->basename /packages
Ziyaddin Sadigov
10
Você também pode usar um subshell, assim:(cd target/path; curl -O URL)
Ehtesh Choudhury
9
Qual é a diferença entre os dois? O primeiro CD entra no diretório e baixa o arquivo e depois o CD. O segundo permanece no diretório atual e enrola o arquivo em um local específico. O segundo parece mais simples.
Henry Zhu
9
@HenryZhu No primeiro, o nome do arquivo é derivado do nome do arquivo no servidor. No segundo, você está renomeando o conteúdo baixado para um nome fornecido.
turtlemonvh
4
Eu realmente gostaria de uma opção para especificar um diretório, mas use o nome do arquivo do servidor. Parece que o uso cdé a melhor opção atualmente, embora pareça um pouco deselegante.
StockB
4

curlnão tem uma opção para isso (sem também especificar o nome do arquivo), mas wgetsim. O diretório pode ser relativo ou absoluto. Além disso, o diretório será criado automaticamente se não existir.

wget -P relative/dir "$url"

wget -P /absolute/dir "$url"
wisbucky
fonte