.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を再度実行する必要がある。)
新しいコメントの投稿