2011-01-24 12 views

答えて

1

私の知る限りでは、MVは仕様が言うれるrename() POSIXシステムコール、使用しています:

名前の変更()関数は次の場合に失敗しなければならない。

(...)

[EINVAL] [CX]新しいディレクトリ パス名には、接頭辞「 」に古いディレクトリが指定されています。

...他にも数多くの詳細な障害モードがあります。

オペレーティングシステムはおそらく、階層に沿った中間ディレクトリのiノード番号を比較することによって、一般的なVFSレイヤでの検出を実装します。

1

シェルはプログラムがあるか、それが何をしたいかもしれないもの何の知識がないと、単にファイル/ディレクトリが存在するものに基づいて、mvにコマンドラインを通過する前に*のようなワイルドカードを展開するための責任であり、そのように直接行いますそれらの名前で。したがって、この場合、../*は、現在のディレクトリ<ディレクトリ名>を含む、親ディレクトリ内のすべてのファイル/ディレクトリ名に展開されます。その後、mvは受信した引数のリストを通過し、最後のものを除くすべてのものを最後のものに移動しようとするため、表示されるエラーが発生します。

+0

これは_last_エントリ自体がどういうことでしょうか? _mv_は自分自身を動かそうとしているかどうかをチェックしますか? –