普通にWebアプリ開発している人は、アプリやらライブラリやらプラグインをいったん手元にダウンロードしてから、ftpなりで鯖に上げているようですが、私はほとんどの場合sshでサーバを直接いじっているので、時々ファイルの取得で鬼ハマります(sourceforgeみたいにdirect linkも併記してくれていると嬉しいのですが)。
というわけで、シェルで繋いだ先でファイルを取得したい時のTIPSをいくつか。
●とりあえずリンクはわかっている場合
だいたいの場合、該当のファイルが置かれているサイトをWebブラウザで開いていることが多いと思うので、まずリンクを右クリックでコピー
シェルに切り替えて、ダウンロードしたい場所に切り替えて、wget “コピーしたリンク”
●リンクはわかっているけど、なんか遷移しそうな予感がする場合
これは経験則によるところが多いのですが、リンクのお尻が.zipとかで終わっていない場合、あとはurlをよく見るとダウンロードファイル自体が置いてあるサイトのurlが内包されている(/down.php?http〜/file.zipみたいな)場合、多いです。こういう場合は、wget/curl -Oはうまくいきません。では、どうするか。
w3m “コピーしたリンク”
TABキーをしばくとリンク文字列をおっかけてくれるので、該当ファイルのところまで進む→Enter
ファイルのダウンロードの確認をしてくるので、Enter
Qキーで終了。確認(y/N)してくるので、y
こんな感じで、まんまと入手できます。
●ファイルの展開時の注意
だいたいの場合、フォルダに入れて配布してくれているのですが、まれにそうでないタイプのアーカイヴをしている人がいます。これをコマンドラインでunzipすると、そのディレクトリに直接ファイルがぶちまかれることになり、大物かつ第一階層にたくさんファイルがあるモノの場合、たいへん悲惨なコトになります。さらに、index.phpだのREADME.txtだのが上書きされることもあり、なかなかの惨状を呈することがあります。しかし、毎回mkdirするのもめんどうだし、大体の場合はちゃんとフォルダを作ってくれるので、フォルダがムダに二階層になり、さらにその構造の修正でコマンドをびしばし打つ、という非生産的な作業が発生しがちです。
では、どうするか。
vi “落として来たファイル”
これで、内容のファイル構造がブラウズできるので、該当のブツがフォルダに入っているのか、その階層にぶちまけられてしまうのか、があらかじめわかります。超便利☆
多くのサーバでは、wgetでなくcurlが、w3mでなくlynxが入っていると思いますが、私はどちらも前者を愛好しているので、みんなもインスコするといいよ! (と、説明をはしょる漏れ)