curlコマンドを使用してWebページをフェッチし、ターミナルからファイルを直接ダウンロードする方法を説明する広範なガイド
The カール
commandは、Linuxが提供するもう1つの興味深いコマンドラインユーティリティです。 カール
コマンドを使用すると、ユーザーはサーバーからファイルをフェッチできます。
カール
RTMP、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、TELNET、HTTP、HTTPS、FTP、FTPS、IMAP、 IMAPS、DICT、FILE、GOPHER、LDAP、LDAPS、POP3、POP3Sなど。
カール
コマンドは、Webページを取得するだけではありません。このコマンドで使用できるオプションを知っていると、より用途が広くなります。チュートリアルを詳しく見て、の使用法をよく理解しましょう。 カール
いくつかの簡単な例を使用したコマンド。
インストール
使用する前に カール
コマンドを実行し、システムにすでにインストールされているかどうかを確認します。コマンドを使用する curl --version
確認する カール
がインストールされています。
場合は カール
がインストールされていない場合は、次の手順を使用します。
UbuntuおよびDebianベースのシステムでは、 使用する:
sudo apt-get update
sudo apt-get install curl
RHEL、CentOs、Fedoraディストリビューションでは、 使用する:
sudo yum install curl
今使用します curl --version
正しくインストールされていることを確認するコマンド。
curl --version
出力:
curl 7.58.0(x86_64-pc-linux-gnu)libcurl / 7.58.0 OpenSSL / 1.1.1 zlib / 2.1.11 libidn2 / 2.0.4 libpsl / 0.19.1(+ libidn2 / 2.0.4)nghttp2 /1.30。 0 librtmp / 2.3リリース日:2018-01-24プロトコル:dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp機能:AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSocketsHTTPSプロキシPSLgaurav @ ubuntu:〜$
これで、使用する準備が整いました カール
指図。
CURLコマンドで利用可能なオプション
まず、で利用可能な主要なオプションのいくつかを見てみましょう。 カール
指図。
オプション | 説明 |
-u | FTPサーバーからファイルをダウンロードするには |
-C | 中断されたダウンロードを再開するには |
-o | 結果を保存するには カール 事前定義されたファイル名のコマンド |
-私 | 定義されたURLのHTTPヘッダーを取得するには |
-O | 結果を保存するには カール 元のファイル名のコマンド |
--libcurl | を使用するCソースコードを出力します libcurl 指定されたオプションの |
-バツ | プロキシを使用してURLにアクセスするには |
-# | 進行状況バーを表示してダウンロードステータスを表示します |
CURLを使用してWebページを取得する
The カール
コマンドをオプションなしで使用すると、コマンドで指定されたURLのコンテンツをフェッチします。
構文:
カール[URL]
例:
curl //allthings.how
出力:
gaurav @ ubuntu:〜$ curl //allthings.how html {overflow-x:hidden!important} html.i-amphtml-fie {height:100%!important; width:100%!important} html:not([amp4ads ])、html:not([amp4ads])body {height:auto!important} html:not([amp4ads])body {margin:0!important} body {-webkit-text-size-adjust:100%;- moz-text-size-adjust:100%; -ms-text-size-adjust:100%; text-size-adjust:100%} html.i-amphtml-singledoc.i-amphtml-embedded {-ms-touch -action:pan-y; touch-action:pan-y} html.i-amphtml-fie> body、html.i-amphtml-singledoc> body {overflow:visible!important} html.i-amphtml-fie:not (.i-amphtml-inabox)> body、html.i-amphtml-singledoc:not(.i-amphtml-inabox)> body {position:relative!important} html.i-amphtml-webview> body {overflow-x :hidden!important; overlay-y:visible!important; min-height:100vh!important} html.i-amphtml-ios-embed-legacy> body {overflow-x:hidden!important; overlay-y:auto!important ; position:absolute!important} html.i-amphtml-ios-embed {overflow-y:auto!important; position:static}#i-amphtml-wrapper {overflow-x:hidden!important; over flow-y:auto!important; position:absolute!important; top:0!important; left:0!important; right:0!important; bottom:0!important; margin:0!important; display:block!important} html.i-amphtml-ios-embed.i-amphtml-ios-overscroll、html.i-amphtml-ios-embed.i-amphtml-ios-overscroll>#i-amphtml-wrapper {-webkit-overflow-scrolling: touch!important}#i-amphtml-wrapper> body {position:relative!important; border-top:1px solidtransparent!important}#i-amphtml-wrapper + body {visibility:visible}#i-amphtml-wrapper + body .i-amphtml-lightbox-element、#i-amphtml-wrapper + body [i-amphtml-lightbox] {visibility:hidden}#i-amphtml-wrapper + body [i-amphtml-lightbox] .i-amphtml-lightbox -element {visibility:visible}#i-amphtml-wrapper.i-amphtml-scroll-disabled、.i-amphtml-scroll-disabled {overflow-x:hidden!important; overlay-y:hidden!important} amp-instagram {padding:54px 0px 0px!important; background-color:#fff} amp-iframe iframe {box-sizing:border-box!important} [amp-access] [amp-access-hide] {display:none} [subscriptions -dialog]、body:not(.i-amphtml-s ubs-ready)[subscriptions-action]、body:not(.i-amphtml-subs-ready)[subscriptions-section] {display:none!important} amp-experiment、amp-live-list> [update] {display :none} .i-amphtml-jank-meter {position:fixed; background-color:rgba(232,72,95,0.5); bottom:0; right:0; color:#fff; font-size:16px; z-index:1000; padding:5px} amp-list [resizable-children]>。i-amphtml-loading-container.amp-hidden {display:none!important} amp-list [fetch-error]、amp-list [load-more] [load-more-button]、amp-list [load-more] [load-more-end]、amp-list [load-more] [load-more-failed]、amp-list [load -more] [load-more-loading] {display:none} amp-list [diffable] div [role = list] {display:block} amp-story-page、amp-story [standalone] {min-height:1px !important; display:block!important; height:100%!important; margin:0!important; padding:0!important; overlay:hidden!important; width:100%!important} amp-story [standalone] {background- color:#202125!important; position:relative!important} amp-story-page {background-color:#757575} amp-story .amp-active> div、amp-story .i-amphtm l-loader-background {display:none!important} amp-story-page:not(:first-of-type):not([distance]):not([active]){transform:translateY(1000vh)!important } amp-autocomplete {position:relative!important; display:inline-block!important} amp-autocomplete> input、amp-autocomplete> textarea {padding:0.5rem; border:1px solid rgba(0,0,0,0.33) } .i-amphtml-autocomplete-results、amp-autocomplete> input、amp-autocomplete> textarea {font-size:1rem; line-height:1.5rem} [amp-fx ^ = fly-in] {visibility:hidden} amp-script [nodom] {position:fixed!important; top:0!important; width:1px!important; height:1px!important; overlay:hidden!important; visibility:hidden}
ここでは、Webページのコンテンツがソースコードとして端末に直接フェッチされます。
オプションを使用できます -o
と -O
とともに カール
このコンテンツをファイルに保存するコマンド。
いつ -o
オプションを使用すると、URLのコンテンツがユーザー定義のファイル名で現在のディレクトリに保存されます。
構文:
curl -o [userdefined_filename] [URL]
例:
gaurav @ ubuntu:〜/ worksheet $ curl -o ath.html //allthings.how%Total%Received%Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 199k 100 199k 0 0 58743 0 0:00:03 0:00:03-:-:-58743 gaurav @ ubuntu:〜/ worksheet $ ls ath.html gaurav @ ubuntu:〜/ worksheet $
この例では、URL「allthings.how」のコンテンツがath.htmlという名前のHTMLファイルとして現在の作業ディレクトリに保存されています。このHTMLファイルを開くと、保存されているWebページにリダイレクトされます。
CURLコマンドを使用したファイルのダウンロード
を使用して -O
curlコマンドを指定すると、コンテンツ、Webページ、またはダウンロード可能なパッケージもファイルとして保存されますが、このファイルは元の名前で保存されます。
例を通してこれを見てみましょう:
例:
ここで私は使用しました カール
でコマンド -O
‘という名前のUbuntuパッケージをダウンロードするオプションCherrytree_0.37.6-1.1_all.deb‘Ubuntuパッケージリポジトリから。
gaurav @ ubuntu:〜/ workspace $ curl -O //kr.archive.ubuntu.com/ubuntu/pool/universe/c/cherrytree/cherrytree_0.37.6-1.1_all.deb%合計%受信%Xferd平均速度時間時間時間現在のDloadアップロード合計使用済み左速度100613k 100 613k 0 0 220k 0 0:00:02 0:00:02-:-:-220k gaurav @ ubuntu:〜/ worksheet $
出力:
trinity @ ubuntu:〜/ worksheet $ ls ath.html Cherrytree_0.37.6-1.1_all.deb trinity @ ubuntu:〜/ worksheet $
そのため、パッケージがダウンロードされ、元の名前で現在の作業ディレクトリ(CWD)に保存されます。
ファイルのダウンロード中にプログレスバーを表示する
使用中に利用できるもう1つの美的修正があります カール
ファイルをダウンロードするコマンド。ターミナルへのプログレスバーの形式でファイルのダウンロードの進行状況を表示できます。あなたはただ追加する必要があります -#
ファイルをダウンロードするコマンドのオプション。
この微調整の例を見てみましょう。
構文:
curl-#-O [URL]
例:
gaurav @ ubuntu:〜/ worksheet $ curl-#-O //archive.ubuntu.com/ubuntu/pool/main/e/emacs-defaults/emacs-defaults_47.0.tar.xz ######## #################################################### #################################################### ################################### 100.0%gaurav @ ubuntu:〜/ worksheet $
出力:
gaurav @ ubuntu:〜/ worksheet $ ls ath.html Cherrytree_0.37.6-1.1_all.deb emacs-defaults_47.0.tar.xz gaurav @ ubuntu:〜/ worksheet $
この出力では、「」という名前のパッケージをダウンロードしたことがわかります。emacs-defaults_47.0.tar.xz‘がCWDにあり、ダウンロードの進行中にプログレスバーが端末に表示されます。
CURLで中断されたダウンロードを再開する
多くの場合、より大きなサイズのファイルをダウンロードしなければならない状況が発生する可能性があります。電源障害やネットワーク障害などの理由により、ファイル全体をダウンロードせずにダウンロードが途中で中止される場合があります。押しても Ctrl + C
ターミナルでは、プロセスは中止されます。
The カール
と一緒に使用する場合のコマンド -C
オプションは、中断されたダウンロードを再開します。
構文:
curl -C --- O [URL]
例:
この図では、UbuntuWebサイトからUbuntu20.04ISOイメージをダウンロードしようとしました。
gaurav @ ubuntu:〜/ worksheet $ curl -O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250922-1570904140.1591164974%合計%受信%Xferd平均速度時間時間時間現在のDloadアップロード合計使用済み左速度02656M 0 1744k 0 0 87038 0 8:53:17 0:00:20 8:52:57 77726 ^ C
ここで、私は意図的にダウンロードプロセスを中止しました Ctrl + C
.
今、私は使用します -C
オプションと カール
同じソースWebサイトから中断されたダウンロードを再開するコマンド。
出力:
gaurav @ ubuntu:〜/ worksheet $ curl -C --- O //releases.ubuntu.com/20.04.1/ubuntu-20.04.1-desktop-amd64.iso?_ga=2.212264532.1184373179.1600250922-1570904140.1591164974**からの転送を再開バイト位置1851392%合計%受信%Xferd平均速度時間時間時間現在のDloadアップロード合計使用済み左速度0 2654M 0 20.2M 0 0 57940 0 13:20:35 0:06:06 13:14:29 98278
ダウンロードは、中止された場所から取得されました。
CURLを使用してFTPサーバーからファイルをダウンロードする
それはかなり簡単です カール
を使用してFTPサーバーからファイルをダウンロードするコマンド -u
オプション。 URLを入力する前に、ユーザー名とパスワードをコマンドに入力する必要があります。
構文:
curl -u [ユーザー名]:[パスワード] [URL]
説明のために、オンラインのパブリックFTPを使用します。
例:
gaurav @ ubuntu:〜/ workspace $ curl -O -u [email protected]:eUj8GeW55SvYaswqUyDSm5v6N ftp://ftp.dlptest.com/16-Sep-20-16-0-0.csv%合計%受信%Xferd平均速度時間時間時間現在のDloadアップロード合計使用済み左速度1003901003900 0 93 0 0:00:04 0:00:04-:-:-93 gaurav @ ubuntu:〜/ worksheet $
ここで、「」という名前のファイルをダウンロードしました20年9月16日-16-0-0.csv ’ このftpサーバーから、元の名前でCWDに保存しました。ダウンロードしたファイルを確認します ls
指図。
gaurav @ ubuntu:〜/ worksheet $ ls -al total 1092 drwxrwxr-x 3 gaurav gaurav 4096 Sep 1616:15。 drwxr-xr-x 87 gaurav gaurav 266240 Sep 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 Sep 16 16:15 16-Sep-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 2044299月16日11:45ath.html gaurav @ ubuntu:〜/ worksheet $
CURLを使用して複数のファイルを一緒にダウンロードする
を使用して一度に複数のファイルをダウンロードする カール
コマンドは非常に単純なタスクです。あなたはただ使用します -O
オプションと カール
上記のブロックで実行したのと同様のコマンド。
構文:
curl -O [URL-1] -O [URL-2] -O [URL-n]
例:
gaurav @ ubuntu:〜/ worksheet $ curl -O //archive.ubuntu.com/ubuntu/pool/universe/a/aegean/aegean_0.15.2+dfsg-1.debian.tar.xz -O // archive.ubuntu。 com / ubuntu / pool / main / a / apache2 / apache2_2.4.29.orig.tar.gz%合計%受信%Xferd平均速度時間時間時間現在のDloadアップロード合計使用済み左速度100 63500 100 63500 0 0 55458 0 0:00 :01 0:00:01-:-:-55458 100 8436k 100 8436k 0 0 123k 0 0:01:08 0:01:08-:-:-127k gaurav @ ubuntu:〜/ worksheet $
この例では、Ubuntuリポジトリから2つの異なるパッケージをダウンロードしました。
出力:
gaurav @ ubuntu:〜/ worksheet $ ls -al total 9596 drwxrwxr-x 3 gaurav gaurav 4096 Sep 1616:28。 drwxr-xr-x 87 gaurav gaurav 266240 Sep 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 390 Sep 16 16:15 16-Sep-20-16-0-0.csv -rw- r--r-- 1 gaurav gaurav 63500 Sep 16 16:28 aegean_0.15.2 + dfsg-1.debian.tar.xz -rw-r--r-- 1 gaurav gaurav 8638793 Sep 16 16:29apache2_2.4.29。 orig.tar.gz -rw-r--r-- 1 gaurav gaurav 2044299月16日11:45ath.html gaurav @ ubuntu:〜/ worksheet $
2つのパッケージは、curlコマンドを使用して同時にダウンロードされます。
CURLを使用したURLのHTTPヘッダーのフェッチ
URLのHTTPヘッダーフィールドには、ユーザーエージェント、コンテンツタイプ、エンコーディングなどの有用な情報が含まれています。これらのヘッダーファイルは、メッセージ本文で送信されるオブジェクトに関する情報も提供します。要求と応答に関する詳細も、これらのHTTPヘッダーから取得されます。
使用できます カール
でコマンド -私
URLのこれらのHTTPヘッダーを取得するオプション。
構文:
curl -I [URL]
例:
gaurav @ ubuntu:〜/ worksheet $ curl -I www.firefox.com HTTP / 1.1 200 OKコンテンツタイプ:text / html; charset = ISO-8859-1 P3P:CP = "これはP3Pポリシーではありません!詳細については、g.co / p3phelpを参照してください。"日付:2020年9月16日水曜日11:17:00 GMTサーバー:gws X-XSS-保護:0 X-フレーム-オプション:SAMEORIGIN転送-エンコード:チャンク有効期限:2020年9月16日水曜日11:17:00GMTキャッシュ-コントロール:プライベートSet-Cookie:1P_JAR = 2020-09-16-11;有効期限=金、2020年10月16日11:17:00 GMT;パス= /; domain = .google.com;セキュアセット-Cookie:NID = 204 = SpeHTVXkKYwe6uaKYLsPWmCA0A-sGb94c9jpbw067e7uhyeJnkap6TFEIESztwLOEst7KcDSBLgGrokh1EM2IZi2VPVzllH0tsvCu-QbKiunPoPJ6dD7oAnB7有効期限= 2021年3月18日木曜日11:17:00GMT;パス= /; domain = .google.com; HttpOnly gaurav @ ubuntu:〜/ worksheet $
この例では、 ‘のHTTPヘッダーをフェッチしましたwww.firefox.com‘.
CURLを使用したCソースコードの取得
使用する カール
とのコマンド --libcurl
オプションはCソースコードをフェッチできます。これは素人ユーザーにとっては重要な用途ではありませんが、システムプログラマー、セキュリティアナリスト、およびアプリケーション開発者にとって非常に役立つことがわかります。
構文:
curl [URL]> filename --libcurl [code_filename]
例:
この例では、URLのコンテンツを取得しました allthings.how 名前の付いたファイルに保存しました gy_ath.html。 Cソースコードは個別に source.c ファイル。
curl //www.allthings.how> gy_ath.html --libcurl source.c
出力:
gaurav @ ubuntu:〜/ worksheet $ curl //www.allthings.how> gy_ath.html --libcurl source.c%合計%受信%Xferd平均速度時間時間時間現在のDloadアップロード合計使用済み左速度0 0 0 0 0 0 0 0-:-:-0:00:01-:-:-0 gaurav @ ubuntu:〜/ worksheet $
ダウンロードしたファイルを確認してみましょう。
gaurav @ ubuntu:〜/ worksheet $ ls -al total 404 drwxrwxr-x 3 gaurav gaurav 4096 Sep 1617:08。 drwxr-xr-x 87 gaurav gaurav 266240 Sep 16 10:22 .. -rw-r--r-- 1 gaurav gaurav 0 Sep 16 17:13 gy_ath.html -rw-r--r-- 1 gaurav gaurav 1535 .. 9月16日17:13source.c gaurav @ ubuntu:〜/ worksheet $
The source.c ファイルにはソースコードが含まれています。これは、を使用して端末に表示できます。 猫
指図。以下のブロックに出力から数行を入れました。
C sourcegaurav @ ubuntu:〜/ worksheet $ cat source.c / ********* curlコマンドラインツールによって生成されたサンプルコード************すべてのcurl_easy_setopt()オプションが文書化されていますで:* //curl.haxx.se/libcurl/c/curl_easy_setopt.html ******************************** **************************************** / #include int main(int argc、char * argv []){CURLcode ret; CURL * hnd; hnd = curl_easy_init(); curl_easy_setopt(hnd、CURLOPT_BUFFERSIZE、102400L); curl_easy_setopt(hnd、CURLOPT_URL、 "//www.allthings.how"); curl_easy_setopt(hnd、CURLOPT_USERAGENT、 "curl / 7.58.0"); curl_easy_setopt(hnd、CURLOPT_MAXREDIRS、50L);
CURLでプロキシを使用してURLにアクセスする
はじめに説明したように、 カール
コマンドは、FTP、SMTP、HTTPS、SOCKSなどの幅広いプロトコルをサポートします。転送速度を向上させ、IDを保護したい場合は、ファイル転送にプロキシサーバーを使用することが重要になることがあります。 カール
コマンドを追加すると、プロキシサーバーを介してファイルを簡単に転送できます。 -バツ
それへのオプション。
例:
curl -x [proxy_address]:[port] [URL]
上記の例では、プロキシは認証を必要としないと想定しています。プロキシが転送を開始するために認証を必要とする場合は、次のコマンドを使用できます。
curl -u [ユーザー名]:[パスワード] -x [プロキシアドレス]:[ポート] [URL]
この簡単な方法を使用して、オプションを使用してプロキシサーバーを介してファイルを転送できます -バツ
で使用 カール
指図。
結論
この簡単なチュートリアルでは、その方法を学びました カール
コマンドは、端末から直接コンテンツをダウンロードするのに役立つことがわかります。また、さまざまなタスクに使用できるこのコマンドで使用できるさまざまなオプションについても学びました。