Curl je vynikající nástroj pro stahování souborů v terminálu Linux.
Obvyklá syntaxe pro stažení souboru se stejným názvem jako původní soubor je velmi jednoduchá:
curl -O URL_of_the_file
Toto funguje většinu času. Všimnete si však, že někdy, když stahujete soubor z GitHubu nebo SourceForge, nenačte správný soubor.
Například jsem se snažil stáhnout skript archinstall ve formátu tar gz. Soubory jsou umístěny na stránce vydání.
Pokud tento odkaz na zdrojový kód otevřu v prohlížeči, získá zdrojový kód ve formátu .tar.gz.
Pokud však použiji terminál ke stažení stejného souboru pomocí příkazu curl, dostanu malý soubor, který není ve správném formátu archivu.
tar -zxvf v2.4.2.tar.gz
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
Když spustím příkaz file, abych věděl přesný typ souboru, řekne mi, že se jedná o HTML dokument.
file v2.4.2.tar.gz
v2.4.2.tar.gz: HTML document, ASCII text, with no line terminators

HTML dokument místo archivu zip nebo tarball? Kde je problém? Dovolte mi, abych vám ukázal rychlou opravu.
Správné stahování archivního souboru pomocí curl
Problém je v tom, že adresa URL, kterou máte, přesměrovává na skutečný archivní soubor. Abyste toho dosáhli, musíte použít další možnosti.
curl -JLO URL_of_the_file
Možnosti mohou být v libovolném pořadí. Je snazší si zapamatovat J LO (Jennifer Lopez).
Zde je rychlé vysvětlení voleb založených na manuálové stránce příkazu curl.
- J:Tato možnost říká volbě -O, --remote-name, aby místo extrahování názvu souboru z adresy URL použila serverem zadaný název souboru Content-Disposition.
- L:Pokud server oznámí, že se požadovaná stránka přesunula na jiné místo (označeno záhlavím Location:a kódem odpovědi 3XX), tato možnost způsobí, že curl znovu provede požadavek na novém místě.
- O:Při použití této možnosti nemusíte zadávat výstupní název souboru pro stahování.
Jak můžete vidět na obrázku níže, podařilo se mi stáhnout správný soubor tentokrát s volbou curl -JLO.

Bonusový tip:Potřebujete se přihlásit?
Toto funguje pro veřejné soubory. Pokud se ale pokusíte stáhnout soubory ze soukromých úložišť nebo GitLab, může se vám zobrazit zpráva o přesměrování na přihlašovací stránku.
<html><body>You are being <a href="https://gitlab.com/users/sign_in">redirected</a>.</body></html>
V takových případech poskytněte token API s volbou -H.
Doufám, že tento rychlý malý tip vám pomůže správně stáhnout archivní soubory pomocí Curl. Dejte mi vědět, pokud stále máte problémy se stahováním curl.