# Curl

## Fetch headers 

curl --head "https://example.com"

## List contents of a directory

curl --list-only "https://example.com/foo/"

## Redirect query as specified by a 3xx response

curl --location "https://iana.org"

## Fail quickly

curl --fail-early "http://opensource.ga"

## Download a file, saving the file without changing its name

curl --remote-name "https://example.com/linux-distro.iso"

## Download a file, renaming the file

curl --remote-name "http://example.com/index.html" --output foo.html

## Continue a partial download

curl --remote-name --continue-at - "https://example.com/linux-distro.iso"

## Download a file from multiple domains

curl "https://www.{example,w3,iana}.org/index.html" --output "file_#1.html"

## Download a sequence of files

curl "https://{foo,bar}.com/file_[1-4].webp" --output "#1_#2.webp"

## Download all PNG files from a site (uses GNU grep)

curl https://example.com | grep --only-matching 'src="[^"]*.[png]"' | cut -d\" -f2 | while read i; do curl https://example.com/"${i}" -o "${i##*/}"; done

## Check whether a website is down

curl --head --show-error "http://example.com"

## Expand a shortened URL

curl --head --location "https://bit.ly/2yDyS4T"

## Query an API endpoint

curl "https://gitlab.com/api/v4/projects"

## Send raw data

curl --data "Some data" "https://example.com/api/v4/endpoint"

## Send form data (emulates a form and Submit button)

curl --form "username=seth" --form "password=12345678" "https://example.com/api/v4/endpoint"

## Send a file as form data

curl --form "avatar=@me.jpg" "https://example.com/foo/bar"

## Send contents of a file as form data

curl --form "description=<file.md" "https://example.com/foo/bar"

## Send HTTP header

curl --header "Authorization: Bearer F66eD5ffXHp2Y" "https://example.com/api/v4/endpoint"

## Specify HTTP Method

curl --request POST --data "Foo: bar" "https://example.com/api/endpoint"

## Make an API call to a service

curl --request PUT --header "PRIVATE-TOKEN: your_access_token_here" --data "?per_page=10" "https://gitlab.com/api/v4/namespaces"