
curl
は、ユーザーの操作なしで動作するように設計されたサーバーとの間でデータを転送するためのコマンドラインユーティリティです。 curl
を使用 、HTTP、HTTPS、SCP、SFTP、FTPなどのサポートされているプロトコルのいずれかを使用してデータをダウンロードまたはアップロードできます。 curl
転送の再開、帯域幅の制限、プロキシサポート、ユーザー認証などを可能にする多数のオプションを提供します。
このチュートリアルでは、実際の例と最も一般的なカールオプションの詳細な説明を通じて、カールツールの使用方法を示します。
Curlのインストール#
curlパッケージは、現在ほとんどのLinuxディストリビューションにプリインストールされています。
Curlパッケージがシステムにインストールされているかどうかを確認するには、コンソールを開き、curl
と入力します。 、Enterキーを押します。 curl
がある場合 インストールすると、システムは curl: try 'curl --help' or 'curl --manual' for more information
。それ以外の場合は、 curl command not found
のようなものが表示されます。 。
curl
の場合 インストールされていない場合は、ディストリビューションのパッケージマネージャーを使用して簡単にインストールできます。
UbuntuとDebianにCurlをインストールする#
sudo apt update
sudo apt install curl
CentOSおよびFedoraにCurlをインストールする#
sudo yum install curl
curl
の構文 コマンドは次のとおりです:
curl [options] [URL...]
最も単純な形式では、オプションなしで呼び出されると、curl
指定されたリソースを標準出力に表示します。
たとえば、example.com
を取得するには 実行するホームページ:
curl example.com
このコマンドは、example.com
のソースコードを出力します ターミナルウィンドウのホームページ。
プロトコルが指定されていない場合は、curl
使用するプロトコルを推測しようとしますが、デフォルトではHTTP
になります 。
出力をファイルに保存する#
curl
の結果を保存するには コマンドを実行するには、-o
のいずれかを使用します または-O
オプション。
小文字の-o
事前定義されたファイル名でファイルを保存します。以下の例では、vue-v2.6.10.js
です。 :
curl -o vue-v2.6.10.js https://cdn.jsdelivr.net/npm/vue/dist/vue.js
大文字の-O
元のファイル名でファイルを保存します:
curl -O https://cdn.jsdelivr.net/npm/vue/dist/vue.js
複数のファイルをダウンロードする#
一度に複数のファイルをダウンロードするには、複数の-O
を使用します オプションの後に、ダウンロードするファイルのURLが続きます。
次の例では、ArchLinuxとDebianのisoファイルをダウンロードしています。
curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso \
-O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso
-C -
を使用してダウンロードを再開できます オプション。これは、大きなファイルのダウンロード中に接続が切断された場合に役立ちます。ダウンロードを最初から開始する代わりに、前のファイルを続行できます。
たとえば、次のコマンドを使用してUbuntu 18.04isoファイルをダウンロードする場合:
curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso
突然接続が切断された場合は、次のコマンドでダウンロードを再開できます:
curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso
URLのHTTPヘッダーを取得する#
HTTPヘッダーは、ユーザーエージェント、コンテンツタイプ、エンコーディングなどの情報を含む、コロンで区切られたキーと値のペアです。ヘッダーは、リクエストまたはレスポンスとともにクライアントとサーバーの間で渡されます。
-I
を使用する 指定されたリソースのHTTPヘッダーのみをフェッチするオプション:
curl -I --http2 https://www.ubuntu.com/

WebサイトがHTTP/2をサポートしているかどうかをテストする#
特定のURLが新しいHTTP/2プロトコルをサポートしているかどうかを確認するには、-I
を使用してHTTPヘッダーをフェッチします --http2
と一緒に オプション:
curl -I --http2 -s https://linuxize.com/ | grep HTTP
-s
オプションはcurl
に指示します サイレント(静か)で実行し、進行状況メーターとエラーメッセージを非表示にします。
リモートサーバーがHTTP/2をサポートしている場合、curl
HTTP/2.0 200
を出力します :
HTTP/2 200
それ以外の場合、応答はHTTP/1.1 200
です。 :
HTTP/1.1 200 OK
カールバージョン7.47.0
をお持ちの場合 以上の場合、--http2
を使用する必要はありません。 HTTP/2はすべてのHTTPS接続でデフォルトで有効になっているためオプションです。
デフォルトでは、curl
HTTPロケーションヘッダーに従わない。
www以外のバージョンのgoogle.com
を取得しようとした場合 、ページのソースを取得する代わりに、wwwバージョンにリダイレクトされることに気付くでしょう:
curl google.com

-L
オプションはcurl
に指示します 最終目的地に到達するまでリダイレクトを追跡するには:
curl -L google.com
ユーザーエージェント番号を変更する
ファイルをダウンロードするときに、リモートサーバーがCurl User-Agentをブロックしたり、訪問者のデバイスやブラウザに応じて異なるコンテンツを返すように設定されている場合があります。
このような状況で別のブラウザをエミュレートするには、-A
を使用します オプション。
たとえば、Firefox 60をエミュレートするには、次を使用します。
curl -A "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" https://getfedora.org/
最大転送速度を指定します#
--limit-rate
オプションを使用すると、データ転送速度を制限できます。値は、k
を使用してバイト、キロバイトで表すことができます。 接尾辞、m
のメガバイト 接尾辞、およびg
のギガバイト 接尾辞。
次の例では、curl
Goバイナリをダウンロードし、ダウンロード速度を1 mbに制限します:
curl --limit-rate 1m -O https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
このオプションは、curl
を防ぐのに役立ちます 利用可能なすべての帯域幅を消費します。
FTP経由でファイルを転送する#
curl
を使用して保護されたFTPサーバーにアクセスするには 、-u
を使用します オプションを選択し、以下に示すようにユーザー名とパスワードを指定します。
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
ログインすると、コマンドはユーザーのホームディレクトリ内のすべてのファイルとディレクトリを一覧表示します。
次の構文を使用して、FTPサーバーから単一のファイルをダウンロードできます。
curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz
FTPサーバーにファイルをアップロードするには、-T
を使用します アップロードするファイルの名前が続きます:
curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
Cookieの送信#
リモートリソースにアクセスしたり、問題をデバッグしたりするために、特定のCookieを使用してHTTPリクエストを行う必要がある場合があります。
デフォルトでは、curl
を使用してリソースをリクエストする場合 、Cookieは送信または保存されません。
サーバーにCookieを送信するには、-b
を使用します スイッチの後にCookieまたは文字列を含むファイル名が続きます。
たとえば、Oracle JavaJDKrpmファイルjdk-10.0.2_linux-x64_bin.rpm
をダウンロードするには oraclelicense
という名前のCookieを渡す必要があります 値a
:
curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm
プロキシの使用#
curl
HTTP、HTTPS、SOCKSなどのさまざまなタイプのプロキシをサポートします。プロキシサーバーを介してデータを転送するには、-x
を使用します (--proxy
)オプションの後にプロキシURLが続きます。
次のコマンドは、192.168.44.1
のプロキシを使用して指定されたリソースをダウンロードします ポート8888
:
curl -x 192.168.44.1:8888 http://linux.com/
プロキシサーバーで認証が必要な場合は、-U
を使用してください (--proxy-user
)オプションの後にコロンで区切られたユーザー名とパスワード(user:password
):
curl -U username:password -x 192.168.44.1:8888 http://linux.com/
結論#
curl
は、リモートホストとの間でデータを転送できるコマンドラインツールです。問題のトラブルシューティング、ファイルのダウンロードなどに役立ちます。
このチュートリアルに示されている例は単純ですが、最もよく使用されるcurl
を示しています。 オプションであり、curl
コマンドワーク。
curl
の詳細については Curlのドキュメントページにアクセスしてください。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。