[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.4 mv: ファイルの移動 (名前の変更) を行う

mv は、ファイル (やディレクトリ) の移動、または名前の変更を行う。

書式:

 
mv [option]… [-T] source dest
mv [option]… sourcedirectory
mv [option]… -t directory source

mv はいかなるタイプのファイルでも、 一つのファイルシステムから別のファイルシステムへ移動させることができる。 fileutils パッケージのバージョン 4.0 以前では、mv がファイルシステム間を移動させることができたのは、通常ファイルだけだった。 それに対して、現在の mv では、 たとえば、スペシャル・デバイスファイルを含むディレクトリ階層の全体を、 あるパーティションから別のパーティションへ移動させることが可能になっている。 mv は、まず cp -a が使用するのと同じコードを使って、 指定されたディレクトリやファイルをコピーし、その後で (コピーに成功した場合は) コピー元を削除する。 コピーに失敗した場合は、移動先のパーティションにすでにコピーした部分を消去することになる。 仮に、あるパーティションから別のパーティションに、3 個のディレクトリをコピーしようとして、 最初のディレクトリのコピーには成功したものの、2 番目のディレクトリのコピーに失敗したとしよう。 その場合、最初のディレクトリは、移動先のパーティションに残るが、2 番目と 3 番目のディレクトリは、元のパーティションに残ることになる。

mv は拡張属性 (xattr) を常にコピーしようとする。 この拡張属性は、SELinux コンテキストや ACL、ケーパビリティであってもよい。 拡張属性のコピーに失敗したときは、‘Operation not supported’ 以外のすべての警告が出力される。

移動先ファイルがすでに存在し、それが普通なら書き込みのできないものである場合、 標準入力が端末であり、‘-f’ や ‘--force’ オプションが指定されていなければ、 mv はプロンプトを出して、ファイルを置き換えるかどうか、ユーザに問い合わせる (ファイルの書き込み権限がなくても、自分がそのファイルの所有者であったり、 そのディレクトリの書き込み権限を持っていたりすることは、ありえることである)。 答えが肯定でなければ、そのファイルはスキップされる。

警告: 名前変更の対象 (または、移動元) がディレクトリへのシンボリックリンクかもしれないときは、 その名前を指定する際に、末尾にスラッシュを付けてはいけない。 さもないと、mv の動作は内部で使っている rename システムコール次第なので、全く予想外のことが起きるかもしれないのだ。 Linux ベースの最近のカーネルを使っているシステムでは、errno=ENOTDIR で実行に失敗する。しかし、他のシステムでは (少なくとも、FreeBSD 6.1 や Solaris 10 では)、シンボリックリンクではなく、リンクが参照しているディレクトリの名前の方を、 警告なしで変更するのである。 See section 末尾のスラッシュ.

注意: mv が移動先にあるディレクトリを置き換えるのは、そのディレクトリが空のときだけである。 移動先にある名前の衝突する (訳注: 要するに移動元ディレクトリと同名の) ディレクトリにファイルがあるときは、 「ディレクトリが空ではない」旨のメッセージを出して、そのディレクトリをスキップする。

このプログラムでは以下のオプションが使用できる。参照: 共通オプション.

-b
--backup[=method]

See section バックアップ・オプション. そのままでは、上書きされるか、消去されてしまう各ファイルのバックアップを作成する。

-f
--force

移動先のファイルを消去する前に、プロンプトを出してユーザに問い合わせることをしない。 ‘-i’, ‘-f’, ‘-n’ オプションを同時に指定している場合は、 最後に指定したもののみが効果を持つ。

-i
--interactive

ファイルの許可属性に関係なく、存在する各移動先ファイルを上書きするかどうかを、プロンプトを出してユーザに問い合わせる。 答えが肯定でなければ、そのファイルをスキップする。‘-i’, ‘-f’, ‘-n’ オプションを同時に指定している場合は、 最後に指定したもののみが効果を持つ。

-n
--no-clobber

存在するファイルを上書きしない。‘-i’, ‘-f’, ‘-n’ オプションを同時に指定している場合は、 最後に指定したもののみが効果を持つ。 このオプションは、‘-b’ や ‘--backup’ オプションと一緒には使えない。

-u
--update

ディレクトリ以外のものを移動する際、それが移動先にも存在し、しかもその更新日時 (modification time) が移動元と同じか、より新しい場合には、移動を行わない。 移動が別のファイルシステムに向かって行われる場合、 タイムスタンプの比較は、移動元のタイムスタンプを移動先のファイルシステム、 及びタイムスタンプの更新に使われるシステムコールの精度に落とした上で行われる。 これは、同じ移動元と移動先に対して、‘mv -u’ コマンドが何回か実行される場合に、 コピー作業が繰り返されるのを避けるためである。

-v
--verbose

移動する前に各ファイルの名前を表示する。

--strip-trailing-slashes

source 引数の後ろにスラッシュが付いていたら、それを削除する。 See section 末尾のスラッシュ.

-S suffix
--suffix=suffix

-b’ によって作られる各バックアップファイルの後ろに suffix を付ける。 See section バックアップ・オプション.

-t directory
--target-directory=directory

directory を出力先ディレクトリに指定する。 See section 出力先ディレクトリ.

-T
--no-target-directory

最後のオペランドがディレクトリやディレクトリへのシンボリックリンク でも、それを特別扱いしない。 See section 出力先ディレクトリ.

-Z
--context

このオプションは restorecon と似た働きをする。 すなわち、移動先における SELinux セキュリティ・コンテキストを、 移動先のファイルやそこに作られる各ディレクトリに対する、システムのデフォルトのタイプに合わせて調整する。

終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on June 7, 2022 using texi2html 1.82.