インターネット ファイル 転送プログラム
NcFTP
はインターネット標準の
File Transfer Protocol
に対するユーザーインターフェイスである。
リモートネットワークホストとのファイルの送受信を行い、
標準の
ftp
にはない付加的な機能を提供する。
以下の3つモードがある:
ビジュアルモード 、 ラインモード 、 コロンモード である。
使用しているシステムが最近のものなら、デフォルトのモードは
ビジュアルモード にすべきである。
これは
curses
ライブラリを用いたフルスクリーン インターフェイスである。
ビジュアルモードでは、不可解なコマンドを打つ必要はなく、
洒落たスクリーン
インターフェイスで NcFTPの設定を編集することができる。
ビジュアルモードでなければ、
対話的なシェル(interactive shell)である
ラインモード
を使うことになるだろう。
このモードはデフォルトの
ftp
プログラムのコマンドシェルのような簡易なインターフェイスである。
3番目のモードである
コロンモード
は、NcFTP自身のシェルに入ること無しに、シェルコマンドラインから
直接ファイルをすばやく取得する機能を提供する。
このモードはシェルスクリプトで便利である。
インターネットプロトコル
(IP)のアドレスを知っている必要がある。
例えば、名前が ``typhoon.unl.edu'' で
そのIPアドレスが ``129.93.33.24''ならば、
そのシステムに接続するためには、NcFTPの
open
コマンド:
open typhoon.unl.edu
open 129.93.33.24
bookmarks
という特別なファイルに、呼び出したサイトについての情報を
自動的に保存する。
各ブックマークには、ホスト名、
入ったリモートディレクトリ、アカウント情報などの設定が保存される。
これにより、後で再びそのサイトを呼び出すのを簡単になる。
また前回ログオフしたときの全て情報を保存されている。
この情報を保持すると、サイトの正式なホスト名を使う代りに、
より短く意味のある名前で呼び出すことができるようになる。
例えばサイト名 ``typhoon.unl.edu'' を頻繁に呼び出す
と、ブックマーク名は ``typhoon'' になるだろう。すると、
open typnoon.unl.edu
Nethack
というポピュラーなゲームが linc.cis.upenn.edu の /pub/NH3.1 ディレ
クトリに置かれているが、
このサイトのブックマークとして ``nethack'' を指定できる。
すると、
open linc.cis.upenn.edu
の代りに
open nethack
とすることもできる。
bookmarks
と打てば、ブックマークエディタが起動し、
新しい画面が立ち上がる。
右側に NcFTPが保存してあるリモートシステムのリストが
置かれる。
リモートシステムに接続するごとに、NcFTPは自動的に
ブックマークファイルのエントリを保存する。
もしサイトの接続にまだ成功していない場合には、このリストは空に
なる。
左側にリストに対して行うことのできる命令が表示されている。
ブックマークエディタは、コマンド(編集したい設定のブックマークを
選択するなど) 待ち状態になる。
ブックマークエディタには ``ホットキー'' という、単一のキーのみで動作する
コマンドがある。
ホットキーコマンドの後には enter を打つ必要はない。
例えばブックマークエディタを終了するためには、``x'' キーを打てばよい。
マルチキーコマンドは最初に / を打ち、最後に enter キーを打つ必要
がある。
例えば選択したサイトを消去するには、``/'' キーを打った後に ``del''
``enter'' と打てばよい。
リストの(反転している)選択行を下げるには ``d'' キーを打ち、上げる
には ``u'' キーを打つ。
ブックマークリストに多くのエントリがある場合には、全てを一画面で見せる
ことはできなくなるだろうが、ブックマークリストを適当にスクロールさせて
他のサイトも見ることができる。
ページを移動するには、``p'' ``n'' キーを使用する。
ブックマークリストでサイトを選択するには、大文字を使う
方法もある。ブックマークリストに多くのエントリがあるときに、ブック
マーク名 ``nethack'' のサイトを選択するには ``N'' と打つ。すると ``n'' か
ら始まるブックマークのサイトの先頭にリストの選択行が移動する。
編集したいブックマークを反転させた後、
/ ed
を使えば、
そのブックマークの設定を示した画面が立ちあがる。
Bookmark Options
のスクリーンでは、編集したい設定はホットキーで指定する。
例えばブックマークの名前を編集するためには、``a'' と打つ。
このブックマークの編集を終えて、ブックマークエディタ画面に戻るには
``x'' キーを打てばよい。
Bookmark name
フィールドの編集をする。ブックマーク名を変更した後には、このブッ
クマークの参照はこの名前で行わなければならなくなる。例えば
``foobar'' という名前に変更したら、``open foobar''を用いなければならない。
これは、一つのリモートホストに対して、
複数のエントリを持つことができるようにするためである。
例えば wuarchive.wustl.edu に対して2つのブック
マーク ``wumac''と ``wuwindows''を作った場合に、
``open wuarchive.wuustl.edu''としたのでは、NcFTPはどち
らのエントリを使用したら良いのかわからないからである。
サイトのログイン情報は
User , Password , Account
フィールドによって変更する。
匿名(anonymous)ログインを用いる場合は、通常そのままにしておく。
リモートシステムによっては特定のアカウントを用いたいことがあるかもし
れない、
このような場合には匿名(anonymous)ログイン以外の方法を用いる。
Directory
フィールドには、リモートホストへの接続が成功したときに移
動するディレクトリを指定する。
サイトへの接続を終了した時に、このフィールドは自動的に終了時のディレ
クトリに更新される。
Transfer Type
フィールドは、ファイルを転送に標準以外の転送モードを使用する場合に
変更する。
NcFTPはたいてい
UNIX
システム上で使用されるし、リモートシステムの多くも
UNIX
系でなので、デフォルトの転送モードは
何も変換されない
binary ,
となっている。
しかし、プレーンテキストを種類の異なる
非 UNIX
システム間で転送する必要があるときは、
ASCII
モードに変更すると良い。
これはテキストのみのファイルを正しく転送することを保証する。
多くの場合は、
binary
転送モードを使用する必要があるだろう。
Port
フィールドは標準的でないポート番号を使用するときに変更する。
私はこれまで異なるポート番号を必要としたことがないが、必要な場合は変える
ことができる。
Has SIZE Command
フィールドはおそらく編集する必要はないだろう。
このフィールドは通常、情報の提供にだけ用いられる。
SIZE
コマンドは、
FTP Protocol
のコマンドで、
リモートサーバでサポートされていると NcFTPにとって都合が良い。
このコマンドがサポートされていれば、(クライアント側の)
プログラムは転送前にリモートファイルの正確なバイト数を
知ることができ、転送処理の進捗状況がわかるようになる。
Has MDTM Command
フィールドも編集する必要はないだろう。
リモートサーバがこれをサポートしていれば、NcFTPはリモー
トファイルの更新日時を正確に知ることができ、同じ日付をローカルファイルに設定
する。
Can Use Passive FTP
フィールドは、リモートのサーバが
FTP Protocol の PASV
コマンドを使用できるかどうかを指定する。
FTPコネクションを設定する方法は2通りある。
デフォルトの方法は
Port FTP
と呼ばれるものである。
残念なことに、
Port FTP
は、ローカルホストが
ファイヤーウォール
の内側にある場合は使用できない。一方
Passive FTP
はファイヤーウォールの内側からでも使用できるので、
可能な場合はこちらを用いると良いだろう。
これは多くの場合自動的に検出されるので、このフィールドを編集する必
要はないでだろう。
Operating System
フィールドは特定のオペレーティングシステムに依存する情報を伝え
るために使用される。
もしOSがUNIX系ならば、NcFTPはリモートサーバのレスポンスについてあ
る仮定をできる。
例えば、OSが
UNIX
なら、
ls
コマンドは
UNIX
上での `` /bin/ls -CF''のように動作しようとする。
OSが
UNIX
でなけれは、
``-CF'' はリモートサーバで使えないかも知れないし、
サーバが文句をいうかもしれない。
これらは多くの場合自動的に検出できるので、おそらくこのフィー
ルドを編集する必要はないだろう。
コメントフィールドはサイトについての短い説明を記録するのに使用できる。
例えば、私の ``nethack'' エントリでは、このフィールドに
「Nethackの最新バージョンをおいてあるサイト」
という情報を書いてある。
ブックマークエディタウインドウにいるとき、コメントを持つサイトを
反転させると、スクリーンの一番下にこのコメントが表示される。
したがって、コメントを見るためにエディットモードに入る必要はない。
prefs
コマンドを実行する。
Default open mode
フィールドはNcFTPがどのように接続を試みるかを指定する。
もし匿名(anonymous)FTPを多く利用するならば、
anonymous
に設定する。
FTPするホストの多くが匿名(anonymous)ログインを許可していない
なら、
usr と password
フィールドを設定するとよいだろう。
例えば、あなたの会社のネットワーク上で異なるマシンからのコピーをす
るのに NcFTPを使うなら、
anonymous
FTPモードを使いたくはないだろう。
Anonymous password
フィールドは匿名(anonymous)ログインする時にリモートのホストへ
与える値を変える場合に用いる。
匿名(anonymous)FTPのためにパスワードとして利用者の e-mailアドレ
スが習慣的に用いられる(たいていは要求される)。これにより
リモートホストの管理者は、だれがサービスを利用しているかを知ることができる。
もしNcFTPがあなたのe-mailアドレスを正しく得ることができなかったり、
あなたが異なったものを使いたいのならば、このフィールドを変えること。
NcFTPは目の疲れを減らすために以前よりも空白を多く使用してい
る。これが嫌なら、
Blank lines between cmds
フィールドを変更すればこの機能を無効にできる。
NcFTPは転送したファイルのログをとることができるので、
何を取得したのか忘れてしまった場合にはログを参照すること
ができる。
ログが
~/.ncftp/log
に保存されるようにするには
User log size
フィールドに0よりも大きい数をセットする。
おそらくこのファイルを無限に大きくはしたくないだろうから、ファイルの
最大のサイズをセットしておくとよい。
NcFTPは以前にオープンした各サイトを全てブックマークファイルに保存するが、
保存するサイトの数の上限を設定したくなるかもしれない。
NcFTPをロードしたりブックマークを保存するのが遅いマ
シンを使っているとか、ディスクスペースが貴重な場合には、
Max bookmarks to save
フィールドを設定してブックマークの保存数を制限することができる。
制限に達したら、NcFTPは最後の接続が最も古いサイトの情報を捨てる。
言い換えれば、だいぶ前に一度だけ訪れ、忘れさられているサイトが
最初に捨てられる。
NcFTPの機能によっては
大容量のテキストが表示されるので、
pager
プログラムを使う必要がある。
例えば
page
コマンドはリモートファイルを取得し、その閲覧のためにページャを使用する。
pager
フィールド(もしくはコマンドラインフラグ)によって、
NcFTPで使用するページャを指定できる。
リモートホストとローカルホストの間でファイルを転送するとき、NcFTP
は
転送の状態を示す
progress meter
を表示する。
何種類かあるので、
Progress meter
フィールドを変えれば、他のものを試すことができる。
Remote messages
フィールドを変えると、リモートサーバのおしゃべりをどれくらい表示す
るかを制御できる。
NcFTPは全てのエラーメッセージを表示するが、リモートサーバのメッセージの
多くはあまり役に立たない。
表示するに値するメッセージは2つくらいである。
一つめは
startup message
である。
典型的には、サーバーに接続したときサーバについて幾つかの重要な情報
を表示する。
サーバによっては
特定のディレクトリに入ったときに
chdir messages
を表示する。
Remote messages
フィールドをトグルすることによりこれらのメッセージを表示するか指定でき
る。
デフォルトでは、NcFTPを実行している間、ローカルマシンのディレクトリは
NcFTPを実行した時点のディレクトリになる。
よってダウンロードはそのディレクトリに行われる。
私は自分がダウンロードするものは指定したディレクトリ ``download
directory'' を使用するのが好みである。
これは quotaの容量を超えたり、他のファイルを上書きすることを妨げる
からである。
NcFTPの起動時にローカルディレクトリを変更するには
Startup in Local Dir
フィールドを設定すればよい。
これにより、ダウンロードしたファイルのありかがわかるようになる。
NcFTPの自身にも、表示したくなくなるような退屈なメッセージが
いくつか存在している。
プログラムが ``splash screen'' やプログラムの
tip
(ちょっと気のきいた利用法) 情報を表示するかは、
Startup messages
で変えることができる。
リモートファイルを取得するとき、デフォルトではNcFTPはリモー
トファイルと同じ更新時刻をローカルファイルにも設定しようとする。
File timestamps
フィールドを変更することによりこれを無効にすることができる。
フルスクリーンの使用を好まないのなら、
Screen graphics
フィールドを変更することにより行指向のモードを使用することができる。
一度
プレファレンス
スクリーンから
ビジュアル
モードをオフにすると、
ライン
モードを使用しているときに再度 プレファレンススクリーンに戻ることはで
きない。
ビジュアルモードに戻るためには、 ``-V'' フラグをつけてNcFTPを起
動する。例えば以下のようにする。
ncftp -V
open
コマンドについての情報を表示するためには
help open
とする。
シェルエスケープコマンドは簡単で、エクスクラメーションマーク
!
である。
サブシェルを起動するには、単に
!
と打てばよい。
1つのコマンドだけを実行させることもできる。以下のようにする:
!date +%H:%M:%S
cd
コマンドはリモートホスト上でのワーキングディレクトリを変更する。
リモートサーバの異なるエリアへ移動するためにはこのコマンドを使う。
新しいサイトをオープンしたばかりの時には、ルートディレクトリにいるであろ
う。このサイトに、例えば ``/pub/news/comp.sources.d''という
ディレクトリがある、という情報を聞いたとしよう。ここに移動するには、
ルートディレクトリから:
cd pub
cd news
cd comp.sources.d
もしくはより簡潔に
cd /pub/news/comp.sources.d
とすればよい。
移動がすんだら、
get , put , ls
のようなコマンドを使用すれば、そのディレクトリにあるアイテムを参照できる。
UNIX
環境の幾つかのシェルでは直前にいたディレクトリにスイッチするような
機能を持っている (私の好む機能である)。
それらのシェルのように
cd -
とすれば、直前にいたディレクトリに移動できる。
close
コマンドはリモートサーバとの接続を切断する。
NcFTPは必要なときに自動的にこれを実行するので、
他のサイトをオープンしたり、プログラムを終了したりするときに、
わざわざ手動で切断する必要はない。
create
コマンドは、たまに使用する必要があるかもしれない。
これはリモートホスト上に空のファイルを作成する。
リモートサーバの管理者に接触できないが、
関係者の誰かが、あなたのファイルを目にしてくれるかもしれない
場合に役に立つかもしれない。
例えば
create readline2.0.tar_is_corrupt
とすることによって、
そのファイルを再投稿することをだれかに促すことができるかもしれない。
debug
コマンドは、基本的には作者自身とテスターのためのものである。
デバッグモードをオンにするためには、
debug 1
とする。
こうすると、NcFTPとリモートサーバとの間のすべてのメッセージを
見ることができる。この中にはデバッグモードのみで
表示されるいくつかのメッセージが存在する。
バグ報告をする場合には、
trace
ファイルを送ってほしい。
このファイルを作成するには、NcFTPを走らせてから
debug trace 1
とする。
このときには、プログラムがどのようにコンパイルされたかがわかるように、
まず
version
と打って欲しい。
NcFTPを終了した後、
~/.ncftp/trace
ファイルの中身を emailに添付して私宛に送ってもらえれば、
私はその内容からバージョン情報も知ることができる。
dir
コマンドは詳細なディレクトリのリストを表示する。
これは
UNIX の
``/bin/ls -l'' コマンドのような振る舞いをする。
リモートサーバが
UNIX
ホストなら、
ls
と同じフラグも使うことができる、例えば
dir -rt
は
UNIX
上の
/bin/ls -lrt
と同じように動作する。
echo
コマンドはあまり便利には思えないかもしれないが、NcFTPのマクロで
使用すると有益なことがある。これは
UNIX
シェルの echo コマンドのように動作するが、いくつかの拡張
フラグを使用できる。
``%'' フラグはすべて
``%'' フラグはすべて
strftime (4)
を通して表示される。
したがって
echo It is now %H:%M on %B %d.
と打てば、スクリーン上に以下のような表示を得ることができる。
It is now 19:00 on January 22.
``@'' フラグも存在し、NcFTPは以下のように展開する:
@H : 接続されたホストの名前。
@D : リモートホストの現在の作業ディレクトリのフルパス。
@J : リモートの現在の作業ディレクトリの短いパス名。
@N : 改行。
@n : 接続されたホストのブックマーク名。
例えば
echo Connected to @H at %H:%M. >> junk
と打った後で ``junk'' の内容を見れば、以下のようになっている:
Connected to sphygmomanometer.unl.edu at 20:37.
get
コマンドはファイルをリモートホスト上の現在の作業ディレクトリから
あなたのマシンの現在の作業ディレクトリにコピーする。
あなたのローカルディレクトリに ``README'' のコピーを置くためには、
以下のようにすればよい:
get README
get
コマンドは以下の ``ダウンロードの特殊機能'' で説明するようないくつかの
強力な特徴を持っている。
bookmarks
コマンドは
ブックマーク エディタ
を実行する。
これまでの内容を読んでいれば、これが何をするものかを知っているはずである。
lcd
コマンドはローカルホストに作用する ``l'' コマンドの最初のものである。
もし異なるローカルディレクトリにファイルをダウンロードしたければ、
ディレクトリを変えるために
lcd
を使ってディレクトリを変更してからダウンロードすればよい。
その他の手頃なローカルコマンドとしては、
lls
コマンドがある。これはローカルホスト上の ``/bin/ls''を実行し
NcFTPのウインドウに結果を表示する。
コマンドシェルの
ls
と同じフラグを
lls
にも用いることができる。例えば:
lcd ~/doc
lls -lrt p*.txt
NcFTPには、ネームサービスへのインターフェースも組み込まれている。
これには
lookup
コマンドを用いる。
つまり以下のようにすれば、リモートホストのエントリを検索できるのである:
lookup cse.unl.edu ftp.cs.unl.edu sphygmomanometer.unl.edu
以下のように表示される:
cse.unl.edu 129.93.33.1
typhoon.unl.edu 129.93.33.24
sphygmomanometer.unl.edu 129.93.33.126
より詳細に表示することもできる。``-v''を用いればよい。例えば:
lookup -v cse.unl.edu ftp.cs.unl.edu
以下のように表示される:
cse.unl.edu
Name: cse.unl.edu
Address: 129.93.33.1
IP
アドレスを与えることもできる。つまり次のような指定も可能である:
lookup 129.93.33.24
以下のように表示される:
typhoon.unl.edu 129.93.33.24
lpage
コマンドを用いると、ローカルファイルを一度に一つだけ見ることができる。
デフォルトでは、NcFTPはファイルを表示に設定されているページャプロ
グラムを使用する。
``-b''フラグを指定すれば、組み込みのページャを使うこともできる。
例えば:
lpage -b ~/.ncftp/bookmarks
lpwd
コマンドは現在のローカルディレクトリを表示する。
ローカルマシン上でどこのディレクトリにいるのかを忘れたときに
このコマンドを使うと良い。
ls
コマンドはディレクトリのリストを簡潔に表示する。
UNIX の
``/bin/ls -CF '' コマンドのように振る舞おうとする。
もしリモートのサーバーが
UNIX
ホストなら、
ls
と同じフラグを使うことができる。
例えば:
ls -rt
は
UNIX
上での
/bin/ls -CFrt
のように振る舞おうとする。
mkdir
コマンドはリモートホスト上で新しいディレクトリを作ろうとする。
多くの公的なサイトでは、利用者はそのような権限を持っていないであろう。
サーバによっては、特殊な転送モードを使用しなければならないこともある。
多くのサーバではデフォルトのモードである
stream
モードのみをサポートしている。NcFTPはstreamモードと同様に
block
モードもサポートする。このモードを用いる最大の利点は、
全ての転送に同じデータコネクションを用いることである。
stream
モードで、NcFTPとサーバは各ファイル毎に新しいコネクション
を確立しなければならない。これは余計な時間と帯域を消費する。
blockモードにするには
mode
コマンドを使用する。
mode b
とタイプすればよい。
ストリームモードを使用するためのコマンドは
mode s
である。
リモートサーバがblockモードをサポートしており、
その実装が正しいことが分かったなら、NcFTPは
自動的にblockモードに切り替わるので、このコマンドは使うべきでない。
open
コマンドはリモートホストに接続する。
フラグを使わずに単にホストに接続することが多いだろうが、
実は
open
コマンドには、各種の機能を有効にするためのフラグが幾つか存在する。
強制的に匿名(anonymous)でオープンするには、``-a''フラグを使用する。
NcFTP
の公式アーカイブサイトである
ftp.ncftp.com
マシン上で、私は匿名ログインとユーザログインの両方を使用する必要がある。
ブックマーク エディタ
は前回使用したログインのタイプを記憶してしまうので、
もし前回ユーザログインであったならば、
``-a''フラグを使用すれば
ブックマーク エディタ
を変更せずに匿名ログインに戻ることができるわけである。
同様に、強制的にユーザログインにするには ``-u''フラグを使用する。
そのときは、アクセスするための自分のアカウント名とパスワードを入力する。
wuarchive.wustl.edu
のような、巨大なアーカイブサイトの多くは混雑しているので、
それらに対する接続が保証されない。
NcFTPは、接続が成功するまで定期的にサイトに ``リダイアル''
するようにできる。
自動的にリダイアルするには ``-r''フラグを使用する。
リダイアルには固有のパラメータが幾つか存在する。
リダイアルする間の遅延時間を秒単位で設定できる。
また、NcFTPがリダイアルをあきらめる最大回数を設定できる。
以下に、リダイアルモードの全機能を用いている例を示す:
open -r -d 75 -g 10 bowser.nintendo.co.jp
``-r''でリダイアルモードにし、``-d''はリダイアル間隔を75秒にして、
``-g''フラグはリダイアルの回数を10回に限定している。
デフォルトのリダイアル設定にまかせてかまわなければ、
``-r''のみを指定しても良い。
open
コマンドは
オープンするホスト名を与えなければ、
ブックマーク エディタ
を起動する。
ホストを選択するために
ブックマーク エディタ
からもホストを選択することができる。ホスト名を反転させて
リターン(return)
キーを打てばよい。
page
コマンドはリモートファイルを一度に一つだけ表示する。
これは、リモートホスト上の README などのファイルを
ダウンロードせずに読むことができるので便利である。
このコマンドは
ファイルを見るために
Preferrences
スクリーンの中の
pager
フィールドに設定したものを使用する。
pdir と pls
コマンドはそれぞれ
dir と ls
に等しい。ただし出力はページャへ送られる。
これらのコマンドは
line モード
での使用を念頭においている。ディレクトリのリストがオフスクリーンに
スクロールしてしまうかも知れないからである。
もし、
ビジュアル
モードでは、普通に
ls
すれば、オフスクリーンになる場合には組み込みのページャが自動的に起動する。
それゆえ、
ビジュアル
モードで
pdir と pls
を使用することは奨めない。
redir と predir
コマンドは最後に取ったディレクトリのリストを再表示するものである。
NcFTPは最後に行った
dir もしくは ls
コマンドからの出力を保存するので、それを再び見たいときに、ネットワーク
の帯域を浪費せずにすむ。
predir
コマンドは出力をページャに渡すことを除いて
redir
と同じである。
predir
コマンドは出力をページャに渡すことを除いて
redir
と同じである。
私の使い方では、
接続の多くはダウンロードのためで、
アップロードはほとんど必要としなかった。
しかし
put
コマンドもちゃんと存在していて、リモートホストへファイルを
アップロードすることができる。
例えば、いくつかのファイルをリモートホストに送りたいならば、
以下のようにすればよい:
lcd ~/docs/files
put 02.txt 03.txt 05.txt 07.txt 11.txt
put
コマンドはあなたがリモートホスト上に正当な許可属性を持っていない場合には
動作しない。また、このコマンドは
``-z''オプションを除いて
get
コマンドが持っているような特別な機能を持っていない。
pwd
コマンドは現在のリモートディレクトリを表示する。
ビジュアル
モードでは、これはステータスバーに表示される。
リモートファイルの名前は変更したいときには、
以下のように
rename
コマンドを使用すればよい:
rename SPHYGMTR.TAR sphygmomanometer-2.3.1.tar
NcFTPの使用を終了するには、もちろん
quit
と打てば良い。
(
bye 、 exit , ^D
などのコマンドも利用できる。)
quote
コマンドを使えば
リモートサーバへ直接
FTP プロトコル
を送ることができる。
通常、これは一般的なユーザにとっては使いやすいものではない。
rhelp
コマンドは、リモートサーバにヘルプリクエストを送信する。
FTP プロトコル
のコマンドリストが表示されることが多い。たまには、実際に有用な
(サイト管理者への連絡方法など)
が表示されることもある。
リモートサーバによっては、サーバへ以下のような
パラメータを与えることも可能かもしれない:
rhelp NLST
そのようなサーバは以下のように返答する:
Syntax: NLST [ <sp> path-name ]
リモートファイルを削除したい場合には、
rm
コマンドを試してみるとよい。
多くの場合、あなたは正しい許可属性を持っていないだろうから
でうまく行かないであろう。
このコマンドはいかなるフラグも受け入れない。よって
UNIX
でのように ``-rf''を用いて、ディレクトリツリー全体を破壊する
ようなことはできない。
同様に、
rmdir
コマンドはディレクトリを削除する。
リモートサーバによっては、空でないディレクトリを消すことができる
かもしれないので気をつけるように。
set
コマンドはNcFTPの古いバージョンとの互換性のために用意されている。
現在では
prefs
コマンドによって置き換えられた。
基本的な文法は:
set オプション 値
である。ここでオプションは、
Preferences
スクリーンのフィールドに対応したショートネームである。
preferencesフィールドのショートネームは
~/.ncftp/prefs
ファイルを眺めることによって見つけられる。
このコマンドは主に
line mode
で使われるが、私はもうこのモードは公式にサポートしないので、
このコマンドは使用しないで頂きたい。
site
コマンドを使わなければならないようなこともあるかもしれない。
FTP プロトコル
では ``サイト固有の''コマンドが許可されている。
もちろんこれらの ``site''コマンドはサイトによって異なるが、
いくつかのサイトでサポートされているコマンドに
chmod
がある。
例えば:
site chmod 644 README
リモートサーバが何をサポートしているかを知るためには、
以下のようにしてみると良い:
rhelp SITE
site help
サーバとのセッションの途中で、転送タイプを変更する必要があるかもしれない。
これには
type
コマンドを使用することができる。以下のように試してみると良い:
tpe ascii
type binary
type image
NcFTPについて私に連絡する必要が生じた場合には、
version
コマンドに慣れて欲しい。
このコマンドは、あなたが使用しているNcFTPのバージョンと
それがどのようにシステムにインストールされたかを私に伝えるために
多くの情報をダンプする。
このコマンドの出力をファイルに保存する方法を以下に示す。
この結果を私に送ってほしい。
version > version.txt
get
コマンドを使用すればよい、と言うことはおそらく既に知っているだろう。
しかし
get
コマンドにはいくつか有益なトリックがある。
まず、
NcFTP
は既に持っているファイルをスキップできる。
get file24
が指定されたときに
現在のローカルディレクトリに``file24''というファイルが存在する場合には、
NcFTPはそれを再びダウンロードしてネットワークの帯域を
消費してもよいかを決定するために、いくつかの追加的な情報を取得しようとする。
NcFTPはリモートファイル``file24''の日付とサイズを取得しようとする。
もしそのファイルがローカルファイル``file24''と同じ日付で同じサイズなら、
NcFTPはそのファイルをスキップする。
NcFTPがリモートファイルの日付もしくはサイズを取得できなかったり、
それらが異なっていたら、NcFTPはファイルを取り寄せる。
また、ローカルファイルの日付がリモートファイルの日付より新しければ、
NcFTPは既により新しいバージョン持っていると見なしてダウンロードを
スキップする。
つまり、NcFTPを用いればアーカイブを
mirror
することができるわけである。
例えば、``files''と呼ばれるリモートディレクトリのファイル全てを
ミラーしていなければならい仕事があるとする。
そのディレクトリには多数のファイルがあり、その中のいくつかが
時々更新されている。
ncftp
を使用して適切なローカルとリモートディレクトリを設定すれば
この作業を簡単に行うことができる。
get *
NcFTPは古いファイルをスキップし、持っていないファイルと
前回から更新されたファイルのみをダウンロードする。
NcFTPが必要ないと判断した場合でも、
NcFTPのアドバイスを無視してファイルを
ダウンロードしたいかもしれない。
強制的にダウンロードするには
get
に ``-f''フラグを用いれば良い。
get -f README
接続が切れたときにも強制的に継続してダウンロードを続けるためのフラグ
``-C''の使用すればよい。
私は歴史的な理由から、これを ``forced reget(強制再取得)''と呼ぶことがある。
get
に
``-G''フラグを使用すれば
ワイルドカードマッチング
の機能を無効にできる。
他の
FTP
プログラムは
ダウンロードしているファイルのローカルパス名を指定するために
get remote-file [local-file]
という文法の使用を許している。
NcFTP
はその点で異なっている、古いプログラムを使用していた人は、
NcFTPの
get
は古いプログラムの
mget
コマンドのように振る舞うことに気付くだろう。
NcFTP
での以下の指定:
get file01 file01
は、``file01''と ``file02''というリモートファイルをダウンロードしよう
としていることになる。
``-z''フラグを使用すれば、古い動作をさせることもできる。
get -z file01 ../junk/files/01.txt
のようにすればよい。
get
では、ある日付より新しいファイルを取得するために
``-n''フラグを使用することもできる。
アーカイブのうち、最新のファイルだけを取得したいなら、
全てをミラーする必要はない。
``3日より新しいファイル全てをダウンロードする''こともできる。
これには、目的のディレクトリへ行ってから、
get -n 3 *
とする。
NcFTPでは、
get
コマンドに ``reget''モードも組み込まれている。
他のFTPプログラムは
reget
コマンドを別途に提供している。これはダウンロードしている間に接続が切れたとき
有用である。リモートホストにファイルを最初から再送させるのではなく、
切れたところから転送を続けさせることができる。
NcFTP
はこの機能を組み込んでいる。NcFTPは前回中断してしまったところ
から継続すべきか決定するためにリモートファイルとローカルファイルの日付
とサイズを検査する。
もし日付が同じで、ローカルファイルのサイズが小さいなら、NcFTPは
``reget''を試みる。
最後に、
get
のもっとも無駄な機能はリカーシブ(再帰)モードである、これは
``-R''フラグで有効になる。
これの特徴は全てのディレクトリの中身をダウンロードできることである。
例えば:
get -R /pub/info/help
これは現在のローカルディレクトリに ``./help''と呼ばれるディレクトリを作成し、
その中に全てのファイルとサブディレクトリをコピーする。
この機能を用いるときには慎重に考えてから行うこと。
巨大なディレクトリを取得すると、リモートホストを泥沼に
陥らせることになりかねない。
アーカイブ管理者は公共のサービスを提供しているのであるから、
アーカイブを濫用してこのサービスを閉鎖させるようなことがあってはならない。
.ncftp
サブディレクトリの中に
macros
ファイルを作成する必要がある。
~/.ncftp
ディレクトリはNcFTPを最初に実行したときに自動的に作成されるが、
多くのユーザは
macros
ファイルを必要としていないので、これは自分で作らなければならない。
複数の マクロを定義することができる。
文法は以下の通りである:
macro macro-name
macro-body...
end
以下は古い
ftp
プログラムのユーザが喜びそうなマクロの例である:
macro binary
type i
end
マクロは NcFTPを起動させた後、通常の
ncftp
コマンドのように実行できる。
マクロは、
Korn シェル の
関数や
C シェル
の エイリアスのようにパラメータを持つこともできる。
これらのパラメータはマクロに送られ、マクロ内部に対応した
``$''が
あれば、それらは実際に指定された値に展開される。
例として、以下のマクロを示す:
macro cdls
cd $1
ls
end
このマクロを実行するには、ftp接続して以下のようにしてみれば良い:
cdls /pub
これは /pub へ
cd
し、そして
ls .
によって /pub の内容をリストアップする。
$ はある程度
Bourne
シェルと
Korn
シェルに似ている。
文法の例は以下の通りである:
$4 : 4番目の引数
$* : 全ての引数
$@ : 全ての引数、各々ダブルクォートされる。
$(2-5) : 2,3,4番目の引数。
$(2,5) : 2,5番目の引数。
$(3+) : 3,4,5, ..., N番目の引数。
``cdls''マクロコードのより良い例を以下に示す:
macro cdls
cd $1
ls $(2+)
end
イベントマクロ
と呼ばれる特別なマクロがいくつか存在する。
NcFTPはイベントが起きたときに特定の名前を持つマクロを探し、
それが存在していたら実行する。
まず
.start.ncftp
というイベントマクロがある。
マクロファイルにそのような名前で定義されているマクロがあるなら、
NcFTPが起動される度にそのマクロが実行される。
同じように、
NcFTPを終了する度に実行される
.quit.ncftp
マクロというものもある。
その他のイベントマクロは各サイトに対応している。
例えば、もしサイトのブックマークとして ``typhoon'' というもがあるのなら、
``typhoon'' に接続したり、接続を終了する度に実行される
.open.typhoon
と
.close.typhoon
とういうマクロを定義できる。
また、より一般的なイベントマクロとして
.open.any
と
.close.any
というマクロもあり、これらはすべてのサイトの接続・切断時に実行される。
これらのマクロを利用すれば、サイトへの接続終了時に、何らかの
処理をするシェルスクリプトをサイト別に実行できる。
このようなマクロは以下のように書く:
echo Started post-processing downloads at %H:%M:%S
!sh ~/scripts/download-decoder
echo Finished post-processing downloads at %H:%M:%S
end
もうひとつ、
従来の
ftp
プログラムが
.netrc
ファイルで使用していた
古い
macdef init
ハックをコピーして使う利用法もある。
以下に例をあげる:
echo Getting recent files list
get -z /pub/info-mac/help/recent-files ~/docs/recent
ls -lrt
end
コロンモード
の特徴はシェルのコマンドラインから使用できることである。
大昔、ディスコが流行っていた時代には、インターネット標準の
Trivial File Transfer Protocol
を使った
tftp
と呼ばれるプログラムでファイルを取ってくることができた。
シェル上で:
get wuarchive.wustl.edu:/graphics/gif/README
のようにこのプログラムを使えば、
wuarchive を呼び出し、REAMEファイルを取得できた。
NcFTPは、これと同じようにシェルのコマンドラインから使用できる:
csh> ncftp wuarchive.wustl.edu:/graphics/gif/README
csh> head REAMDE
これはシェルに、(この場合は
C シェル
から
NcFTP
を起動し、wuarchibe に接続、/graphics/gif/README を取得、取得できたら
現在の作業ディレクトリに /README ファイルを書き出すように指せている。
コロンモード
の機能はリモートサイトを訪ね回りたくなく、欲しいものが明確であるとき
に便利である。
またシェルスクリプトから実行するときに、
NcFTPのコマンドシェルに入りたくないときや、
出力を吐き出させたくないときにも便利である。
現在の作業ディレクトリに
コロンモード
のファイルを書き出したりしたくないとか、どこか
のリモートファイルに出力をパイプしたいときがある。
コロンモード
にはこのためのオプションが存在する。
これは
ftpcat
という perl スクリプトを書いた人から示唆された。
``-c''オプションは標準出力ストリームに書き出す。
``-m''オプションはページャ(例えば
more )
にファイルをパイプする。
もちろんこれは
コロンモード
に渡したものがディレクトリの場合はうまく動かない!
以下の例はリモートファイルのダンプを標準出力に渡す:
csh> ncftp -c wuarc:/graphics/gif/REAME
以下の例はリモートファイルを異なる場所にリダイレクトする:
csh> ncftp -c wu:/REAME > ~pdietz/thesis.tex
これはどのようにパイプラインを使うかを示している:
csh> ncftp -c wuarc:/REAME | tail | wc -l
10
csh >
これはどのようにリモートファイルを表示(ページ)するかを示している。
csh> ncftp -m wuarc:/graphics/gif/README
ラインモード
を提供する唯一の理由は、
curses
ライブラリを装備していなかったり、このライブラリの機能が
完全でないような原始的なシステムでも、何とかNcFTPを使えるように
するためである。
多くのNcFTPの機能は
ビジュアルモード
が求められる機能を除いて、同じように機能する。
Preferences スクリーンと ブックマークエディタ
のようなものは動作しない。
テキストエディタで
~/.ncftp/prefs と ~/.ncftp/bookmarks
ファイルを編集しなければならないだろう。
次善の解決策としては、
GNU Readline
のような強力な行編集ライブラリを、NcFTPをコンパイルするときに
使用するとよい。
UNIX
プログラムと同じように ``ダッシュフラグ''を用いることができる。
ここにコマンドラインから使用できるオプションのリストを示す:
-D : デバッグモードとトレースを有効にする。
-V : このセッションに``ビジュアル''モードを使用する。
-L : このセッションに``ライン''モードを使用する。
-H : ``version''コマンドからの情報を表示し終了する。
トレースをオンにしているとき、NcFTPは
ホームディレクトリの
.ncftp
サブディレクトリにある
trace
と呼ばれるファイルにデバッグ情報を書き出す。
バグリポートをする場合には、
作者がログを追跡できるように
trace
ファイルをメールに添付してもらえるとありがたい。
コロンモード
では、以上のフラグに加え
open と get
コマンドで用いるフラグをパスとともに指定できる。
以下は非常に複雑な例である:
csh> ncftp -r -d 120 -n 3 sphygmomanometer.unl.edu:/pub/stuff/*
これは2秒ごとにホストに再接続し、``/pub/stuff''ディレクトリから、3日
前より新しい全てのファイルを取得させようとするものである。
NcFTP
は Mike Gleason 、
(mgleason@NcFTP.com)によって書かれた。
NcFTP
is copyrighted 1995 by Mike Gleason.
All rights reserved.
もっとも最新のバージョンは
<ftp://ftp.ncftp.com/ncftp/>
にアーカイブされている。
ncftp
の homeを与えてくれた
Probe Techonology
の Dale Botkin と Tim Russell に感謝します。
仕事の合間にテストに付き合ってくれた
Phil dietz、kok Hon Yin (hkok@yoda.unl.deu)、Andrey A. Chernov
(ache@astral.msk.su)に感謝します。
ファイル名の保管(機能)に関するコードを作ってくれた Tim Mackenzie(t.mackenzie@trl.oz.au)
に感謝します。
manページを手助けしてくれた DaviD W. Sanderson(dws@ssec.wisc.edu)
に感謝します。
curses
ライブラリの制限のため、ビジュアルモードでのスクロールは遅いかもしれない。
ビジュアルモード
でのシェルエスケープ、サスペンド(^Z)とレジューム、割り込み(^C)は依然
ではまだ不具合が残っているかもしれない。
bowser.nintendo.co.jp
や
sphoygmomanometer.unl.edu
というサイトは存在していない。