LNDIR(1)

名前
lndir - 他のディレクトリツリーへのシンボリックリンクを持つシャドウディレクトリを生成する

書式
lndir [ -silent ] [ -ignorelinks ] fromdir [ todir ]

説明
lndir はディレクトリツリー fromdir のシャドウコピーである todir を生成する。ただし、シャドウコピーは実際のファイルを置いたも のではなく、ディレクトリツリー fromdir にある実際のファイルを指すシンボリックリンクを置いたものである。このコ マンドは異なるマシンアーキテクチャ用のソースコードを管理するときに便利 である。ユーザはリモートマシンの実際のソースがあるディレクトリをマウン トし、これに対するリンクを持つシャドウディレクトリを作ることができる。 このシャドウツリーでプログラムの構築を行うと、シャドウディレクトリにあ るソースファイルは実際のファイルへの単なるシンボリックリンクであるが、 オブジェクトファイルはシャドウディレクトリに生成される。

この方法には、ソースコードを更新しても他のアーキテクチャ用のコードまで 手で直す必要がないという利点がある。なぜなら、シャドウディレクトリにあ る全てのソースコードは実際のソースへのシンボリックリンクだからである。 よって、シャドウディレクトリに移動してそのまま再コンパイルを行うことが できる。

引き数 todir は省略可能であり、その場合にはカレントディレクトリを指定したことになる。 引き数 fromdir は相対ディレクトリ指定(例えば ../src)でもよく、その場合には(カレントディ レクトリではなく) todir に対する相対ディレクトリ指定となる。

CVS.adm は CVS(Concurrent Versions System)が使用する。 ディレクトリ RCS, SCCS, CVS, CVS.adm はシャドウ化されない点に注意する こと。

ファイルを追加した場合には、単に lndir を再実行すればよい。新しいファイルは追加され(メッセージは出力されない)、 前からあるファイルは正しいリンクを持っているかどうかチェックされる。

元のファイルを消したときには問題が起こる。つまり、シンボリックリンクは そのまま何もない場所を指した状態になる。

fromdir 内のファイルがシンボリックリンクの場合、lndir は fromdir の(シンボリックリンクの)元のエントリを指すのではなく、 todir に同じリンクを作る。-ignorelinks オプションでこの動 作を変えることができる。

オプション

-silent
    lndir は通常、サブディレクトリに移動する際にそのディレクトリ名を 出力する。このオプションを指定すると、このステータス出力を行わなくなる。

-ignorelinks
    fromdir のシンボリックリンクを特別扱いしないようにする。 todirに作られるリンクは、fromdir の対応するファイル(シンボ リックリンク)を指す。 リンクがディレクトリを指している場合、このオプションを指定するとほぼ確 実に問題が起こる。

    このオプションは X11R6 に含まれていた C 版の lndir の動作をエミュ レートするためにあるようなものである。

返り値
このプログラムは移動したサブディレクトリの名前を表示し、その後にコロン を表示する。-silent オプションを付けるとこのメッセージを表示し なくなる。

シンボリックリンクを生成できないときには警告メッセージが表示される。 このようになるのは普通、同じ名前の通常ファイルが既に存在するときである。

リンクが既に存在するが正しいファイルを指していない場合、このプログラム はリンク名とそのリンクが指す位置を表示する。

バグ
patch プログラムはファイルを変更できないときにはエラーとなる。いずれにせよ、 シャドウディレクトリで patch プログラムを実行してはならない。

再リンクを行う前(例えば fromdir が移動した場合)には、全てのファイルを 消すために
	find todir -type l -print | xargs rm
のようなコマンドを実行する必要がある。
	 find . \! -type d -print
のようなコマンドを実行するとディレクトリでないファイルを全て表示するこ とができる。