NcFTP(1)

名前
Ncftp - インターネット ファイル 転送プログラム

書式
ncftp [プログラム オプション] [[オープン オプション] ホスト名[ : パス]]

オプション

プログラム オプション:
  -D : デバッグモード、トレースモードを有効にする。
  -L : ビジュアルモードを使用しない(ラインモード)。
  -V : ビジュアルモードを使用する。
  -H : バージョン情報。

コマンドラインのオープンオプション:
  -a : 匿名(anonymous)で接続。
  -u : ユーザ名とパスワードプロンプトで接続。
  -p X : 接続時に ポート番号Xで接続。
  -r : 接続するまでリダイアルする。
  -d X : リダイアルまで、X秒の間隔を開けてリダイアルする。
  -g X : X回リダイアルして接続できなければ、あきらめる。

コマンドラインの取得オプション:
  -C : 強制接続(再取得)。
  -f : 強制的に上書きする。
  -G : ワイルドカードを使用しない。
  -R : 再帰。ディレクトリ全体を取得するときに役立つ。
  -n X : X日前より新しいファイルのみを選択して取得。

説明
NcFTP はインターネット標準の File Transfer Protocol に対するユーザーインターフェイスである。 リモートネットワークホストとのファイルの送受信を行い、 標準の ftp にはない付加的な機能を提供する。

以下の3つモードがある: ビジュアルモード、ラインモード、コロンモードである。

使用しているシステムが最近のものなら、デフォルトのモードは ビジュアルモードにすべきである。 これは curses ライブラリを用いたフルスクリーン インターフェイスである。 ビジュアルモードでは、不可解なコマンドを打つ必要はなく、 洒落たスクリーン インターフェイスで NcFTPの設定を編集することができる。

ビジュアルモードでなければ、 対話的なシェル(interactive shell)である ラインモード を使うことになるだろう。 このモードはデフォルトの ftp プログラムのコマンドシェルのような簡易なインターフェイスである。

3番目のモードである コロンモード は、NcFTP自身のシェルに入ること無しに、シェルコマンドラインから 直接ファイルをすばやく取得する機能を提供する。 このモードはシェルスクリプトで便利である。

ビジュアルモードの概論

ビジュアルモードになると、スクリーンはクリアされ、派手なスクリーンで書き換 えられる。 スクリーンの下から2番目に黒色のステータスバーが現れる。 ステイタスバーの下は入力行で、プログラムのシェルへコマンドを打ち 込む場所である。

NcFTPは何か命令されるまで待機している。 たいていはリモートのファイルシステムをオープンして、 ローカルマシーンのファイルシステムと ファイルのやり取りをすることになるだろう。 そのためにはリモートシステムの名前か、もしくはその インターネットプロトコル (IP)のアドレスを知っている必要がある。 例えば、名前が ``typhoon.unl.edu'' で そのIPアドレスが ``129.93.33.24''ならば、 そのシステムに接続するためには、NcFTPの open コマンド:

open typhoon.unl.edu
open 129.93.33.24

を使用する。

これらは、 Nebraska 大学 の typhoonと呼ばれるマシンに接続しようとする。 IPアドレス予告無く変更されることがあるが、名前はたいてい同じままであるので、 名前を使用した方が好ましいだろう。

リモートファイルシステムに接続するときは、接続するための 権限を持っていなければならない。 FTP Protocol の認証システムは、(UNIX等の)アカウントにログインすることにとてもよく似ている。 しかし、あなたが興味を持つようなリモートシステムの多くでは使用にあたって アカウント名を求められることはないだろう。 多くの場合はリモートファイルシステムへ匿名アクセスすれば、 公共的にアクセスできるファイルを交換できる。 NcFTPはデフォルトでは、リモートシステムに匿名アクセスを行う。 これは実際には、``anonymous''というアカウント名を用い、 パスワードのプロンプトに管理者への礼儀として E-mailアドレスを記入する。 もちろん特定のアカウントを使用することもできる。 これについては後述する。

接続が成功すると、ステータスバーの片側にリモートシステムの名が表示される。 現在のリモートディレクトリの内容を見るには、 lsと dir コマンドを使用すれば良い。前者は少ないスクリーンスペースで多く のリモートファイルを選べるように簡潔である。また後者はディレクトリの各項 目について詳しい情報を与えるように、冗長である。

cd コマンドを使えば、リモートシステムの他のディレクトリへ移動できる。 cd コマンドは Bourneシェルと Kornシェル の同名のコマンドと、ほぼ似た動作をする。

NcFTPの目的は他のシステムとデータの交換をすることである。 get コマンドはリモートシステムからローカルシステムへファイルをコピー する:

get README.txt

NcFTPはスクリーンに転送の進行状況を表示するので、 転送が終了するまでにどれくらいかかるかわかる。 転送が終了すると、NcFTPのコマンドシェルにコマンドを打つことがで きるようになる。

put コマンドはローカルのシステムからリモートシステムへファイルをコピーするた めに使用できる:

put something.tar

リモートシステムでの作業が終わったら、他のシステムをオープ ンすることができる。また quit コマンドは NcFTPを終了させる。

ブックマーク ファイル

NcFTPの目標の一つは最小限のタイピングで最大限の便宜を得ること である。 NcFTPは ホームディレクトリの .ncftp サブディレクトリにある bookmarks という特別なファイルに、呼び出したサイトについての情報を 自動的に保存する。 各ブックマークには、ホスト名、 入ったリモートディレクトリ、アカウント情報などの設定が保存される。 これにより、後で再びそのサイトを呼び出すのを簡単になる。 また前回ログオフしたときの全て情報を保存されている。

この情報を保持すると、サイトの正式なホスト名を使う代りに、 より短く意味のある名前で呼び出すことができるようになる。 例えばサイト名 ``typhoon.unl.edu'' を頻繁に呼び出す と、ブックマーク名は ``typhoon'' になるだろう。すると、

open typnoon.unl.edu

の代りに

open typhoon

とすることができる。

問い合わせたサイトを NcFTPが特定できる限りにおいて、ブックマークの 名前を短縮することができる。 ブックマークの名前に``ty''から始まるものが他になければ、以下のようにできる：

open ty

ブックマークの機能を用いれば、実際の名前が覚えにくいような ホストに対して、より記憶しやすい名前を割り当てることができる。 Nethack というポピュラーなゲームが linc.cis.upenn.edu の /pub/NH3.1 ディレ クトリに置かれているが、 このサイトのブックマークとして ``nethack'' を指定できる。 すると、

open linc.cis.upenn.edu

の代りに

open nethack

とすることもできる。

ブックマーク エディタの使用

ブックマークファイルに蓄えられているブックマークを操作するため には、NcFTPに付属するブックマーク エディタを使用する。 NcFTPの中から 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 に対して２つのブック マーク ``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の最新バージョンをおいてあるサイト」 という情報を書いてある。 ブックマークエディタウインドウにいるとき、コメントを持つサイトを 反転させると、スクリーンの一番下にこのコメントが表示される。 したがって、コメントを見るためにエディットモードに入る必要はない。

好みの設定

リモートホストごとに指定するオプションに加えて、NcFTPはユーザが設定可能な グローバルオプションを持っている。 NcFTPの設定を変えるためには、NcFTP起動中に 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は全てのエラーメッセージを表示するが、リモートサーバのメッセージの 多くはあまり役に立たない。 表示するに値するメッセージは２つくらいである。 一つめは 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

コマンドリファレンス
NcFTPのコマンドシェルがサポートしているコマンドについて説明する。 まず最初に知っておくべきコマンドは help である。

help

とコマンドシェルから打てば

NcFTPはサポートしているコマンドの名前をすべて表示する。 さらに helpの後に指定したコマンドを指定すれば、 そのコマンドのヘルプが 得られる。例えば: 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

ftp.cs.unl.edu:
    Name:     typhoon.unl.edu
    Alias:    ftp.cs.unl.edu
    Address:  129.93.33.24

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は簡単な マクロ/エイリアス 機能を持っている。 ユーザ独自のコマンドの拡張や、 イベントが起きたときに何か行うためにマクロを利用できる。

マクロを使用するためには、ホームディレクトリの .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 というマクロもあり、これらはすべてのサイトの接続・切断時に実行される。 これらのマクロを利用すれば、サイトへの接続終了時に、何らかの 処理をするシェルスクリプトをサイト別に実行できる。 このようなマクロは以下のように書く:

macro .quit.ncftp
    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 ハックをコピーして使う利用法もある。 以下に例をあげる:

macro .open.infomac
    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をコンパイルするときに 使用するとよい。

コマンドラインオプションのまとめ

シェルから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/> にアーカイブされている。

謝辞

アイディアとある部分のコードは私のパートナーである
 Phil Dietzによって寄付された。

何年にもわたってNcFTPをテストし、 フィードバックしてくれた全ての人に感謝します。 あなた方のサポートは、NcFTPを改良する上での動機となりました。

様々なプラットホームでのテストを可能にし、余分なディスクスペースを 私に与えてくれ、UNL FTPサイトを管理してくれた 私のシステム管理者たちに、特に Charles Danielに感謝をしたい。

probe.net に 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 というサイトは存在していない。

関連項目
ftp(1), ftpd(8), nslookup(1), archie(1), rcp(1), tftp(1).