アフィリエイトリンクまたはスポンサーシップを通じて、ベンダーから収益を得る場合があります。これにより、サイト上の商品配置が影響を受ける可能性がありますが、レビューの内容には影響しません。詳細は利用規約をご覧ください。
ネットワーク経由でファイルをダウンロード (またはアップロード) する必要があるスクリプトの作成を検討している場合、curl コマンドは最も役立ちます。
curlコマンドは非常に便利で柔軟性に優れています。このツールの目的は、ユーザーの介入なしに、サポートされている多数のプロトコルのいずれかを使用して、サーバーとの間でデータを転送することです。curlコマンドがこれほど柔軟に対応できるのは、以下のプロトコルをサポートしているからです。
- ディクテーション
- ファイル
- FTP
- FTPS
- ゴーファー
- HTTP
- HTTPS
- IMAP
- IMAPS
- LDAP
- LDAP
- POP3
- POP3S
- RTMP
- RTSP
- SCP
- 中小企業
- SMBS
- SMTP
- SMTPS
- テルネット
- TFTP
可能性は実に豊富です。これは、curl がほぼあらゆる種類のデータを転送できることを意味します。URL のソースコードを表示することも可能です。これらすべてを、ユーザーによる操作なしで実行できます(これはスクリプト作成にとって非常に重要な機能です)。
このコマンド(Linuxのハウツーやスクリプトでよく見かけるコマンド)の使い方をご紹介します。ここではElementary OSでデモを行いますが、このコマンドはほぼすべてのLinuxディストリビューションで動作します。CurlはmacOSとWindowsでも利用可能です。
参照: Linux ネットワークを簡単にする 20 のクイックヒント (無料 PDF) (TechRepublic)
curlのインストール
Linuxディストリビューションにはデフォルトでcurlがインストールされているはずです。インストールされていない場合でも、インストールは非常に簡単です。Debian派生ディストリビューションでは、インストールコマンドは以下のようになります。
sudo apt install curl
curl –versionコマンドを実行すると、インストール状況を確認できます。インストールされたアプリケーションのバージョン番号が表示されます(私のElementary OSマシンでは7.47.0です)。
curlの使用
まず、curlの最もシンプルな使い方を見てみましょう。ウェブサイトのソースコードを表示したいとします。例としてcurlサイトを使用します。次のコマンドを実行します。
curl https://curl.haxx.se | less
これで、そのサイトの HTML をスクロールできるようになります (図 A )。
図A
これは、サイトがどのように作成されたかを把握したり、独自のサイトのトラブルシューティングを行うのに最適な方法です。
もちろん、この例は非常に限定的です。curl を使ってサイトからファイルをダウンロードしてみましょう。同じ例で進めましょう。例えば、curl サイトの HTML をダウンロードして後で表示したいとします。そのためには、次のように -o スイッチを使用します。
curl https://curl.haxx.se -o curl.html
上記のコマンドは、curlサイトからHTMLコードをダウンロードし、curl.htmlとして保存します。もちろん、curlはHTMLソースのダウンロードだけができるわけではありません。例えば、サイトからファイルをダウンロードしたい場合、curlは次のように処理できます。
curl http://SERVER_ADDRESS/FILENAME -o FILENAME
ここで、SERVER_ADDRESSはサーバーのURL、FILENAMEはダウンロードするファイルの名前です。例えば、Ubuntu Serverの最新リリースをダウンロードしたいとします。その場合は次のようにします。
curl http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso -o ubuntu-server-18.04.iso
そのファイルがパスワードで保護されている場合、curl は次のように処理できます。
curl -u USERNAME:PASSWORD http://SERVER_ADDRESS -o FILENAME
どこ:
- USERNAME はサーバー上のユーザー名です。
- PASSWORD はサーバー上のユーザーのパスワードです。
- FILENAME はダウンロードするファイルです。
- SERVER_ADDRESS はファイルへの直接リンクです。
curlはFTPサーバーでも使用できます。例えば、パスワード保護されたFTPサーバーからファイルをダウンロードする必要がある場合、コマンドは以下のようになります。
curl ftp://SERVER_ADDRESS/FILENAME -user USERNAME:PASSWORD -o FILENAME
どこ:
- SERVER_ADDRESS は FTP サーバーのアドレスです。
- FILENAME はダウンロードするファイルの名前です。
- USERNAME は FTP サーバー上のユーザー名です。
- PASSWORD は、FTP サーバー上のユーザーのパスワードです。
FTP サーバーにファイルをアップロードするには、コマンドは次のようになります。
curl -T FILENAME SERVER_ADDRESS -user USERNAME:PASSWORD
ここでもまた:
- SERVER_ADDRESS は FTP サーバーのアドレスです。
- FILENAME はダウンロードするファイルの名前です。
- USERNAME は FTP サーバー上のユーザー名です。
- PASSWORD は、FTP サーバー上のユーザーのパスワードです。
ある時点で、curl開発者はlibcurlからSFTPサポートを削除しました。SSH経由でファイルをダウンロードする必要がある場合は、sftpコマンドを使用する必要があります。
curlを使用する理由
curl の最大の利点の一つは、操作なしで使用できることです。そのため、スクリプト作成に最適です。Linux インストーラースクリプトでは curl が使われている例を数多く目にするでしょう。インストーラースクリプトを実行すると、curl が必要な依存関係をダウンロードする様子を目にするでしょう。そのため、Linux bash スクリプト(またはインストーラースクリプト)を作成する場合、curl は間違いなく頼りになるでしょう。curl に関する詳細情報(膨大な情報があります)は、man curl コマンドを実行してマニュアルページをご覧ください。
TechRepublic Academy で Linux について詳しく学びましょう。
以下も参照:
- Linux の watch コマンドを使って出力の追跡を簡単にする方法 (TechRepublic)
- Linux の screen コマンドを使用してリモートプロセスを実行し続ける方法 (TechRepublic)
- Linux で SFTP サーバーを設定する方法 (TechRepublic)
- Linux ログファイルをリアルタイムで監視する方法 (TechRepublic)
- ICANN、GDPR要件に対応するためWHOISを直前に変更(ZDNet)

ジャック・ウォーレン
ジャック・ウォーレンは、TechRepublic、The New Stack、Linux New Mediaなどで受賞歴のあるライターです。20年以上にわたり様々なトピックを執筆し、オープンソースの熱心な推進者でもあります。ジャック・ウォーレンに関する詳細は、ウェブサイトjackwallen.comをご覧ください。