.netrc を使うともうちょっとFTPコマンドも使い易くなる

.netrc ファイルを記述すれば、もう少し使い易くなったりする。

.netrc ファイルには、FTPサーバへのログインアカウント、パスワード等を記述しておけるのだ。

私の .netrc ファイルをさらしてみよう(いや、もちろん実際のホスト名、アカウントじゃないのですが)。このファイルは、$HOMEディレクトリに置いておく。chmod go-rwx $HOME/.netrcしておかないと ftpコマンドが使ってくれないので注意。

machine www.example.com
login user
password pass
macdef init
cd public_html/cgi

machine www.randynetwork.com
login hoge
macdef init
cd /usr/local/www/data/

www.example.com に示したようにパスワードも一緒に書いておくと誰かに見られちゃうので、www.randynetwork.com の例に示したように password エントリは書かないほうがお薦めである。

それで、macdef というコマンドを使えばマクロが指定できたりする。macdef init とすれば、ログイン後に必ず実行してくれるコマンドを指定可能だ。上記の例のように目的のディレクトリへの cd (チェンジディレクトリ)を書いておくと便利だろう。macdef の場合、空行を必ず入れておく必要がある。空行の手前までが定義されたマクロの内容になるのだ。ちなみに、私の環境では、空行を書いていなかったばっかりに ftpコマンドがセグメント違反で coreを吐いてしまった。

Zshからの利用

zsh といえば、強烈な補完機能である。compctlを使って、補完ルールが設定できる。今回は、ftp コマンドの時は、$HOME/.netrc ファイルの machineエントリから抜き出したホスト名で補完するようにやってみた。

compctl -k "(`sed -n 's/^machine[ \t][ \t]*\(.*\)/\1/p' ~/.netrc`)" ftp

こんな設定を、$HOME/.zlogin にでも書いておけば結構便利だったりする。(このやりかたの場合、.netrcファイルを読み込むタイミングは compctl を実行したときだ。.netrcファイルを変更しても zsh が自動的に認識してくれるわけではない。.netrcファイルを変更した場合は、compctlを再度実行する必要がある。)

新しいコメントの投稿

このフィールドの内容は非公開にされ、公表されることはありません。
  • HTMLタグは使用できません
  • 行と段落は自動的に折り返されます。

書式オプションに関するより詳しい情報...

CAPTCHA
この質問はあなたが人間であるかどうかについて調べる為と、自動化したスパムを防ぐ為のものです。うまくいかない場合は電子メールでお問い合わせ下さい。
イメージ CAPTCHA
画像の中に見える文字を入力して下さい