Como Usar cURL para Transferência de Dados na Linha de Comando e Mais

Se você tem seguido instruções de instalação focadas no terminal para aplicações Linux por um tempo, provavelmente já se deparou com o comando curl em algum momento. cURL é uma ferramenta de linha de comando para transferir dados com URLs. Um dos usos mais simples é baixar um arquivo pela linha de comando. Isso é enganoso, no entanto, já que cURL é uma ferramenta incrivelmente poderosa que pode fazer muito mais.
Índice
- O que é cURL?
- Instalação
- Usando cURL
- Seguindo Redirecionamentos
- Retomando um Download
- Baixando Mais de um Arquivo
- Baixando com Autenticação
- Dividindo e Unindo Arquivos
- Outros Recursos Úteis
- cURL vs. Wget
- Perguntas Frequentes
- Conclusão
Leia também: Como Copiar e Colar Texto, Arquivos e Pastas no Terminal Linux
O que é cURL?
Originalmente escrito por Daniel Sternberg em 1996 para capturar dados financeiros de servidores web e transmiti-los para canais IRC, o cURL evoluiu para se tornar uma ferramenta poderosa para obter dados sem precisar usar um navegador. Se você está sempre usando o terminal, esta será uma das ferramentas mais importantes em seu arsenal.
Na maioria das distribuições Linux, o cURL já vem pré-instalado no sistema, e você pode usá-lo imediatamente. Mesmo que não esteja instalado, ele também pode ser encontrado na maioria dos repositórios, então você pode instalá-lo facilmente usando o Centro de Software.
Para Windows, não existe um comando “similar ao curl”, e o macOS tem o cURL pré-instalado, mas não oferece tantas opções quanto a versão Linux.
Leia também: Como Usar o Comando dd no Linux
Instalação
Antes de prosseguirmos, precisamos garantir que o cURL já esteja instalado em nosso sistema.
Linux
Em distribuições baseadas em Debian/Ubuntu, use o seguinte comando para instalar o cURL:
sudo apt install curlEm distribuições baseadas em Arch:
sudo pacman -S curlEm Fedora/CentOS/RHEL:
sudo dnf install curlmacOS
Para macOS, ele já vem pré-instalado, então você não precisa fazer nada.
Leia também: Como Abrir o Terminal na Localização Atual da Pasta no Mac
Windows
- Para Windows 7/10/11, acesse a página de download do cURL e escolha entre os pacotes de 64 bits ou 32 bits, de acordo com a arquitetura que você está usando. Se você não sabe sua arquitetura, 64 bits é uma aposta segura, já que a grande maioria do hardware feito depois de 2006 é nessa arquitetura.
- Crie uma pasta diretamente no disco do sistema ou em “C:\Program Files\” e nomeie-a como “cURL”.

- Volte para o arquivo zip que você baixou, abra-o e encontre “curl.exe” dentro da pasta “bin”. Copie isso para a pasta cURL que você criou. O EXE que você copiou é completamente autossuficiente e capaz de executar todas as permutações que você pode executar no Linux.
- Para tornar este comando realmente útil, precisamos adicioná-lo à variável PATH no Windows para que ele possa ser executado a partir do prompt de comando em qualquer lugar.
- Clique no menu Iniciar, digite
environmente pressione Enter. - Clique em “Variáveis de Ambiente … ” Você deve estar agora nas configurações de variáveis de ambiente.

Selecione a variável de ambiente “Path” e clique em “Editar … “
Uma vez na janela de edição do caminho, clique em “Novo” e digite o diretório onde seu “curl.exe” está localizado – por exemplo, “C:\Program Files\cURL”.
Clique em “OK” nas janelas de diálogo que você abriu durante esse processo e aproveite ter o cURL no seu terminal!
Cada opção do cURL que é utilizável no Linux deve funcionar na versão do Windows.
Uma dica: lembre-se de que o prompt de comando nunca deve ser confundido com o Windows Terminal. O Windows Terminal vem com sua própria versão do cURL incluída no PowerShell que oferece funcionalidade similar, mas funciona de maneira completamente diferente.
Leia também: Como Usar o Comando Rm no Linux
Usando cURL
Para começar, simplesmente digite curl maketecheasier.com no seu terminal e pressione Enter.
Se você não está obtendo nenhuma saída, é porque o servidor deste site não está configurado para responder a solicitações de conexão aleatórias para seu domínio sem www. Se você sondar um servidor que não existe ou que não está online, você receberá uma mensagem de erro dizendo que o cURL não conseguiu resolver o host.
Para fazer o cURL fazer algo realmente útil, precisamos especificar um protocolo. No nosso exemplo, estamos usando o protocolo HTTPS para consultar a página inicial deste site. Digite curl https://www.maketecheasier.com.

Se tudo ocorrer bem, você deve estar olhando para uma gigantesca parede de dados. Para tornar esses dados um pouco mais utilizáveis, podemos dizer ao cURL para colocá-los em um arquivo HTML:
curl https://www.maketecheasier.com > ~/Downloads/mte.htmlEste comando coloca o conteúdo da saída do nosso site em um arquivo HTML na sua pasta Downloads. Navegue até a pasta com seu gerenciador de arquivos favorito e clique duas vezes no arquivo que você acabou de criar. Deve abrir uma captura da saída HTML da página inicial deste site.
Da mesma forma, você pode usar a opção -o para alcançar o mesmo resultado:
curl -o ~/Downloads/mte.html https://www.maketecheasier.comSeguindo Redirecionamentos
A maioria dos sites redireciona automaticamente o tráfego do protocolo “http” para “https”. No cURL, você pode alcançar o mesmo resultado com a opção -L. Isso seguirá automaticamente redirecionamentos 301 até que chegue a uma página ou arquivo legível.
curl -L http://google.com.
Retomando um Download
Ao baixar arquivos grandes, dependendo da sua velocidade de Internet, as interrupções podem ser extremamente irritantes. Felizmente, o cURL possui uma função de retomar. Passar a opção -C cuidará desse problema rapidamente.
Para mostrar um exemplo do mundo real, interrompi propositalmente o download do ISO da versão de teste do Debian pressionando Ctrl e C no meio do download.

Para o nosso próximo comando, estamos anexando a opção -C. Por exemplo,
curl -C - -o ~/Downloads/debiantesting.iso -L https://cdimage.debian.org/cdimage/weekly-builds/amd64/iso-dvd/debian-testing-amd64-DVD-1.iso
O download foi iniciado com sucesso de onde parou.
Baixando Mais de um Arquivo
Como o cURL não tem uma maneira mais intuitiva de baixar múltiplos arquivos, existem dois métodos, cada um com seu próprio compromisso.
Se os arquivos que você está baixando estão enumerados (por exemplo, file1, file2 e assim por diante), você pode usar colchetes para obter a faixa completa de arquivos e “#” dentro da saída que você especifica com a opção -o. Para tornar isso um pouco menos confuso, aqui está um exemplo:
curl "http://example.com/file[1-5].zip" -o "#1_#2"Uma maneira mais simples de fazer isso é com -O (--remote-name). Essa opção faz o cURL baixar o arquivo remoto para um arquivo local com o mesmo nome. Como você não precisa especificar uma saída, deve usar este comando quando o terminal estiver aberto no diretório onde você deseja baixar os arquivos.
curl -O "https://example.com/file1.zip" -O "https://example.com/file2.zip"Se você tem uma grande quantidade de arquivos enumerados para baixar, --remote-name-all é uma opção melhor para isso:
curl --remote-name-all "https://example.com/file[1-5].zip"Você poderia até especificar arquivos não enumerados vindos do mesmo site sem ter que reescrever a URL usando colchetes:
curl --remote-name-all "https://example.com/{file1.zip,anotherfile.zip,thisisfun.zip}"Baixando com Autenticação
Baixe arquivos que exigem autenticação (por exemplo, ao pegar de um servidor FTP privado) com a opção -u. Cada solicitação de autenticação deve ser feita com o nome de usuário primeiro e a senha em seguida, com dois pontos separando os dois. Aqui está um exemplo para simplificar as coisas:
curl -u username:password -o ~/Downloads/file.zip ftp://example.com/file.zipIsso autentica nosso amigo bonobo_bob no servidor FTP e baixa o arquivo para a pasta Downloads.
Dividindo e Unindo Arquivos
Se por algum motivo você deseja baixar um arquivo grande e dividi-lo em pedaços, pode fazer isso com a opção --range do cURL. Com --range, você deve especificar o byte em que deseja começar até o que deseja finalizar. Se você não especificar um fim para o intervalo, ele simplesmente baixará o resto do arquivo.
No comando abaixo, o cURL irá baixar os primeiros 100 MB da imagem de instalação do Arch Linux:
curl --range 0-99999999 -o arch.part1 -L https://mirrors.chroot.ro/archlinux/iso/2021.11.01/archlinux-2021.11.01-x86_64.isoPara os próximos 100 MB, use --range 100000000-199999999, etc. Você pode encadear esses comandos usando o operador &&:
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-2021.11.01-x86_64.iso && \
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.isoSe você seguir a estrutura do comando acima à risca, oito arquivos devem aparecer onde você pediu para o cURL baixar.
Para reunificar esses arquivos, você precisará usar o comando cat se estiver no Linux ou no macOS assim:
cat arch.part? > arch.isoPara Windows, você precisará usar o comando copy assim:
copy/b arch.part* arch.isoOutros Recursos Úteis
Existem muitas opções e usos para o cURL:
-#– Usa uma barra de progresso para indicar quão longe você está no que está baixando. Exemplo:curl -# https://asite.com/somefile.zip > ~/somefile.zip.-a– Pede ao cURL para anexar a um arquivo em vez de sobrescrevê-lo. Exemplo:curl -ao ~/collab-full.x https://example-url.com/collab-part26.x.--head– Apenas captura o cabeçalho de resposta do servidor sem os dados de saída. Isso é útil quando você está depurando um site ou dando uma olhada nas respostas programadas do servidor para os clientes. Exemplo:curl --head https://example-url.com.--limit-rate– Ordena um download com largura de banda limitada. É útil em situações onde você não quer que o cURL consuma toda a largura de banda disponível no seu sistema. Um número simples será interpretado como bytes por segundo. K representa kilobytes por segundo; M representa megabytes por segundo. Exemplo:curl --limit-rate 8M https://example-url.com/file.zip > ~/file.zip.-o– Como mencionado anteriormente, determina um arquivo de saída para o cURL usar. Exemplo:curl -o ~/Downloads/file.zip https://thefileplace.com/file.zip -o file2.zip https://thefileplace.com/file2.zip.--proxy– Se você quiser trabalhar com um proxy, esta é a maneira de fazê-lo. Exemplo:curl --proxy proxyurl:port https://example-url.com/file.zip > ~file.zip.
cURL vs. Wget
Ambos lançados no mesmo ano (1996), cURL e Wget são praticamente programas irmãos para o observador casual. No entanto, mergulhe um pouco mais fundo e você poderá ver que essas duas irmãs têm propósitos diferentes.
Wget
- Foi completamente construído do zero para capturar dados da Internet.
- Não precisa das opções
-Lou-ocomo o cURL; basta digitarwget [url]e ir! - Pode baixar recursivamente para pegar tudo em um diretório com a opção
-r. - Possui todas as funções que um usuário precisa para uso diário e atende às tarefas cotidianas de sysadmin.
- (No Linux) Não precisa de muitas dependências; todas elas devem estar disponíveis imediatamente.
Leia também: Como Instalar e Usar wget no Mac
cURL
- Repertório expansivo de opções e funções úteis para recuperação remota.
- Suporta redes locais (LDAP) e impressoras de rede (Samba).
- Funciona bem com bibliotecas de compressão gzip.
- Depende do libcurl, que permite que desenvolvedores escrevam software ou scripts bash que incluam a funcionalidade do cURL.
Em resumo, o Wget é a “caixa de ferramentas do homem comum” para pegar coisas da Internet, enquanto o cURL expande isso com um controle mais granular para usuários avançados e administradores de sistema.
Perguntas Frequentes
1. Eu recebi um erro de certificado no Linux. Como posso corrigir isso?
Se você recebeu um erro que diz algo como “o emissor do certificado do par foi marcado como não confiável”, a maneira mais fácil de corrigir isso é reinstalando o pacote de certificados comuns na sua distribuição.
Para sistemas baseados em Debian/Ubuntu:
sudo apt reinstall ca-certificatesPara Fedora/CentOS/RHEL:
dnf reinstall ca-certificatesPara sistemas baseados em Arch:
pacman -S ca-certificatesObserve que no Arch você pode querer limpar seu cache de pacotes usando pacman -Scc antes de reinstalar o pacote de certificados.
Se você ainda receber esse erro, pode haver algo errado no lado do servidor.
2. É seguro executar comandos cURL e bash juntos?
Embora não seja a maneira mais comum de instalar aplicativos Linux, há vários desenvolvedores (como as pessoas por trás do NodeJS) que não lhe dão outra escolha a não ser usar o curl junto com um comando de acesso root que é executado pelo bash (por exemplo, curl [argumento] | sudo -E bash -) para instalar o software.
Pode parecer um pouco assustador, mas se as pessoas por trás do aplicativo são confiáveis, é muito improvável que você quebre algo. Atores maliciosos estão por toda parte e podem infiltrar repositórios como o AUR do Arch, então instalar usando curl em combinação com comandos de acesso root não é geralmente mais inseguro do que fazê-lo através do seu gerenciador de pacotes.
3. Posso usar cURL com Tor?
Sim! Inicie o Tor Browser (ou um serviço tor autônomo) e use a opção --proxy. O Tor lhe dá um proxy local que você pode usar para ocultar seu IP em outras aplicações. Aqui está um exemplo de cURL usado com Tor:
curl --proxy localhost:9050 http://example.comServiços Tor autônomos usarão 9050 como sua porta de escuta, enquanto o Tor Browser usa a porta 9150.
Conclusão
O cURL provou ser resiliente em meio à constante mudança do mundo Linux, mantendo sua posição como uma ferramenta importante no arsenal do usuário de terminal.
Se você é novo na linha de comando, confira alguns dos comandos Linux mais úteis. Se você simplesmente quiser pesquisar na Web em vez de baixar dados da Internet, você também pode navegar pelo terminal.