例でCurlコマンドを使用する方法 [Download Files]

The curl 指図 ネットワークサーバーとの間でデータを転送します。 デフォルトでは、すべてのLinuxベースのシステムで使用できます。 これは通常、URLアクセスのトラブルシューティングやファイルのダウンロードに使用されます。 Curlは、HTTP、HTTPS、FTP、FTPS、SFTPなどのさまざまなプロトコルをサポートしています。プロトコルを明示的に指定していない場合は、デフォルトでHTTPになります。 Curlは、転送に関連するすべての機能についてlibcurlを利用しています。

Curlは、プロキシサポート、ユーザー認証、FTPアップロード、HTTPポスト、SSL接続、Cookie、ファイル転送再開、Metalinkなどの多くの便利なトリックを提供します。

このチュートリアルでは、 使い方 curl コマンドとその基本 オプション 例を挙げて。

見つからない場合 curl Linuxシステムにインストールされている場合は、次のコマンドを使用します。

インストールするには curl Ubuntu / Debianで

$ sudo apt install curl

CentOS /にCurlをインストールするにはFedora

$ sudo yum install curl

使い方 curl 指図

Curl構文:

$ curl [options] [URL]

  • オプション- curl 1つまたは2つのダッシュで始まるオプション。
  • URL-リモートサーバーのURL。

Curlコマンドの後にWebサイトのURLを入力すると、ソースコードのWebサイトが標準出力に表示されます。

http://のソースコードを印刷するにはexample。と:

$ curl https://example.com

URLを入力として渡すことができます curl コマンドを実行し、出力をファイルにリダイレクトします。

にとって example:

$ curl https://exmaple.com > example.html

同じ名前のファイルをダウンロードする

ファイルをダウンロードして同じ名前で保存する、-Oオプションを使用します。

にとって example Ubuntu 20.04 isoファイルをダウンロードするには、次のように入力します。

$ curl -O https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso

出力:

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
5 2743M 5 156M 0 0 49.9M 0 0:00:54 0:00:03 0:00:51 49.9M

ダウンロードしたファイルを確認します。

$ ls
ubuntu-18.04.2-desktop-amd64.iso
$

ファイルをダウンロードする で保存します カスタム名、-oオプションを使用します。

$ curl -o ubuntu-20-04.iso https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso

確認するには、lsコマンドを使用します。

$ ls
ubuntu-20-04.iso

複数のファイルをダウンロードする

複数のファイルをダウンロードする 一度に、複数の-Oフラグに続けてファイルのURLを使用します。

構文:

$ curl -O [URL1] -O [URL2] -O [URL3] ...

にとって example:

$ curl -O localhost/file.pdf -O localhost/file1.pdf

異なる名前を使用して複数のファイルを保存するには、ネストされた-oオプションを使用します。

にとって example:

$ curl -o file2.pdf localhost/file.pdf -o file3.pdf localhost/file1.pdf

番号順のファイルをダウンロードし、次のように入力します。

$ curl ftp://ftp.example.com/file[1-30].jpeg

FTP経由でダウンロード/アップロード

アクセスするには 保護されたFTPサーバー とともに curl コマンドでは、ユーザー名とパスワードとともに-uフラグを使用する必要があります。

次のコマンドは、ユーザーのホームディレクトリにあるすべてのファイルとディレクトリを一覧表示します。

$ curl -u USERNAME:PASSWORD ftp://ftp.example.com/

ファイルをダウンロードするには、次を使用します。

$ curl -u USERNAME:PASSWORD ftp://ftp.example.com/file.tar.gz

ファイルをFTPサーバーにアップロードするには、-Tフラグを使用します。

$ curl -T newfile.tar.gz -u USERNAME:PASSWORD ftp://ftp.linoxide.com/

注:FTPサーバーで匿名ログインが許可されている場合は、-u username:passwordを使用する必要はありません。

ファイルをアップロードする

Curlは、-Fオプションを使用して、ユーザーが送信ボタンを押した入力フォームをエミュレートします。

にとって example Content-Type multipart / form-dataを使用してデータをPOSTするには:

$ curl -F @field_name=@path/to/local_file <upload_URL>

中断されたダウンロードを再開します

もし ダウンロードが中断されました 何らかの理由で、オプション-C-を使用して再開し、中断したところからダウンロードを再開できます。

$ curl -C - -O https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso

出力:

** Resuming transfer from byte position 2297856
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 1901M 0 9842k 0 0 734k 0 0:44:10 0:00:13 0:43:57 339k

HTTPヘッダーを取得するためのCurl

HTTPヘッダーをフェッチするには、 -I オプション。 FTPまたはFILEファイルで使用する場合、ファイルサイズと最終変更時刻のみを表示します。

にとって example:

$ curl -I redhat.com
HTTP/1.0 301 Moved Permanently
Location: https://www.redhat.com/en
Server: BigIP
Connection: Keep-Alive
Content-Length: 0

リダイレクトに従うためのカール

「Moved」や「MovedPermanently」などのエラーが発生するURLに遭遇することがあります。 これは通常、 URLリダイレクト 他のURLに。

にとって example、出力からgoogle.comはwww URLにリダイレクトするため、次のようなエラーが発生します。

$ curl google.com

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

伝えるために curl リダイレクトに従うには、-Lオプションを使用します。

$ curl -L google.com

ユースケース1:ファイルをダウンロードしようとしているURLに301リダイレクトがある場合、ファイルがダウンロードされない可能性があります。 にとって example、URLにhttpからhttpsへのリダイレクトがある場合は、オプション-Lを使用してリダイレクトとダウンロードを実行する必要があります。

$ curl -o test.txt -L https://www.test.com

ユースケース2:リモートサーバーのサポートを確認するには http2 -Lの後に–http2を使用します。 にとって example

$ curl -I --http2 -s https://linoxide.com/ | grep HTTP

出力にHTTP / 2 200が表示されている場合は、リモートサーバーがHTTP / 2をサポートしていることを示しています。

最大転送速度を制限する

データ転送速度を制限するための使用法は次のとおりです。

$ curl --limit-rate [value] [URL]

値は、バイト、k接尾辞が付いたキロバイト、m接尾辞が付いたメガバイト、およびg接尾辞が付いたギガバイトで表すことができます。

次のコマンドは、ダウンロード速度を1MBに制限します。

$ curl --limit-rate 1m -O https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso

SSL証明書をスキップする

デフォルトでは、 curl 確立するすべてのSSL接続を確認します。 SSL / TLSエラーが原因でファイルをダウンロードしたり、自己署名証明書または無効な証明書を使用してAPIエンドポイントをテストしたりするときに問題が発生することがあります。 このような場合は、-kオプションを使用してSSLをスキップしてください。

$ curl -o -k https://www.test.com

自己署名証明書を確認する

自己署名証明書を確認するには curl、-cacertオプションを使用します。

curl --cacert myssl.crt -O https://test.com/file.tgz

ユーザーエージェント文字列を指定します

ユーザーエージェントを指定する HTTPサーバーに送信する文字列は-Aオプションを使用します。

ユースケース:一部のhttpサーバーブロック curl そのような状況でファイルをダウンロードするためのユーザーエージェント curl ユーザーエージェントを指定できます。 にとって example:

$ curl -A "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5" -O https://localhost/file1.pdf

プロキシを指定する

を使用するには 指定されたHTTPプロキシ ダウンロードするには、-xオプションを使用します。 ポート番号が指定されていない場合は、ポート1080で想定されます。

にとって example ポート8080で特定のプロキシ192.168.35.8を使用してファイルをダウンロードするには、次のように入力します。

$ curl -x 192.168.35.8:8080 -O https://example.com/file01.tar.gz

-Uまたは–proxy-userオプションを使用して、認証ユーザー名とパスワードを指定します。

にとって example:

$ curl -x 192.168.35.8:8080 -U user:password -O https://example.com/file01.tar.gz

クッキーを保存/渡すには

クッキーを書く リソースにアクセスするときにダウンロードされるファイルに、-cookie-jarまたは-cオプションを使用し、その後にテキストファイル名を付けて保存します。

にとって example https://www.nytimes.com/からcookies.txtという名前のファイルにCookieを保存するには、次を使用します。

$ curl -c cookies.txt https://www.nytimes.com/index.html -O

教えてもいいよ curl クッキーを再利用する 以前に-bまたは–cookieオプションを使用し、その後にCookieまたは文字列を含むファイル名を使用して受信しました。 これにより、データがCookieとしてHTTPサーバーに渡されます。 デフォルトでは、 curl リソースを要求するためにCookieを使用しません。

$ curl -b Cookies.txt https://www.nytimes.com

リクエストの合計時間

取得するには 合計時間 curl リクエストが成功するために-wオプションを使用しました。

にとって example 転送完了後の合計時間を印刷するには、転送完了後にubuntu 20.04isoファイルをダウンロードします。

$ curl -w "%{time_total}n" -o /dev/null -s https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso

出力:

276.044317

ローカルの名前解決

リソースのローカルバージョンをテストするには example APIエンドポイントは–resolveオプションを使用します。 この開発者は、デプロイ用のAPIをテストします。

$ curl --resolve www.example.com:80:localhost https://www.example.com/

プログレスメーター

デフォルトでは、Curlは、データをアップロードまたはダウンロードするときに進行状況メーターを表示します。 合計サイズ、受け取った%とサイズ、費やした時間、残り時間、現在の速度などの情報が表示されます。

表示するには 代替の進歩 メーターは-#または–progress-barを使用します。 にとって example:

$ curl -# -O https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso
############### 20.9%

プログレスメーターを無効にするには、-silentまたは-sを使用します。

$ curl -O --silent https://releases.ubuntu.com/20.04/ubuntu-20.04.2.0-desktop-amd64.iso

結論

このチュートリアルでは、使用方法を学びました curl Linuxでデータを転送するコマンド。 あなたがについてもっと知りたいなら curl 訪問 カールドキュメント ページ。 以下のコメントセクションで、このチュートリアルに関するあなたの考えや提案を教えてください。

また読む:

  • httpie-Linux上のCurl代替HTTPコマンドラインクライアント