Next: rm invocation, Previous: install invocation, Up: Basic operations [Contents][Index]
mv
: ファイルの移動 (名前の変更) を行うmv
は、ファイル (やディレクトリ) の移動、または名前の変更を行う。
書式:
mv [option]… [-T] source dest mv [option]… source… directory mv [option]… -t directory source…
mv
は最初のファイルを 2 番目のファイルに移動する。
mv
は各 source ファイルを指定されたディレクトリに、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 Trailing slashes.
注意: mv
が移動先にあるディレクトリを置き換えるのは、そのディレクトリが空のときだけである。
移動先にある名前の衝突する (訳注: 要するに移動元ディレクトリと同名の) ディレクトリにファイルがあるときは、
「ディレクトリが空ではない」旨のメッセージを出して、そのディレクトリをスキップする。
このプログラムでは以下のオプションが使用できる。参照: Common options.
See Backup options. そのままでは、上書きされるか、消去されてしまう各ファイルのバックアップを作成する。
移動先のファイルを消去する前に、プロンプトを出してユーザに問い合わせることをしない。 -i, -f, -n オプションを同時に指定している場合は、 最後に指定したもののみが効果を持つ。
ファイルの許可属性に関係なく、存在する各移動先ファイルを上書きするかどうかを、プロンプトを出してユーザに問い合わせる。 答えが肯定でなければ、そのファイルをスキップする。-i, -f, -n オプションを同時に指定している場合は、 最後に指定したもののみが効果を持つ。
存在するファイルを上書きしない。-i, -f, -n オプションを同時に指定している場合は、 最後に指定したもののみが効果を持つ。 このオプションは、-b や --backup オプションと一緒には使えない。
ディレクトリ以外のものを移動する際、それが移動先にも存在し、しかもその更新日時 (modification time) が移動元と同じか、より新しい場合には、移動を行わない。 移動が別のファイルシステムに向かって行われる場合、 タイムスタンプの比較は、移動元のタイムスタンプを移動先のファイルシステム、 及びタイムスタンプの更新に使われるシステムコールの精度に落とした上で行われる。 これは、同じ移動元と移動先に対して、‘mv -u’ コマンドが何回か実行される場合に、 コピー作業が繰り返されるのを避けるためである。
移動する前に各ファイルの名前を表示する。
source 引数の後ろにスラッシュが付いていたら、それを削除する。 See Trailing slashes.
-b によって作られる各バックアップファイルの後ろに suffix を 付ける。 See Backup options.
directory を出力先ディレクトリに指定する。 See Target directory.
最後のオペランドがディレクトリやディレクトリへのシンボリックリンク でも、それを特別扱いしない。 See Target directory.
このオプションは restorecon
と同様の働きをする。
すなわち、移動先における SELinux セキュリティ・コンテキストを、
移動先のファイルやそこに作られる各ディレクトリに対する、システムのデフォルトのタイプによって調整する。
終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
Next: rm invocation, Previous: install invocation, Up: Basic operations [Contents][Index]