mv
のGNUCoreutilsマニュアル 言う:
宛先ファイルは存在するが通常は書き込みできない場合、標準の
入力は端末であり、-fまたは–forceオプションが指定されていない場合、mv
はファイルを置き換えるかどうかをユーザーに尋ねます。 (
ファイルを所有しているか、そのディレクトリへの書き込み権限を持っている可能性があります。)応答が
肯定的でない場合、ファイルはスキップされます。
ただし、mv
のバージョン 私が使用している(Ubuntu14.04.3LTSのGNUcoreutils8.21)は、予期しない動作を示します:
$ which mv
/bin/mv
$ ls -l
total 0
$ echo foo > 1; chmod -w 1; cp 1 2; ls -l | cut -d' ' -f 1-5,9
-r-x------ 1 me me 4 1
-r-x------ 1 me me 4 2
$ echo bar > 2
-bash: 2: Permission denied
$ mv 1 2
$ ls -l | cut -d' ' -f 1-5,9
-r-x------ 1 me me 4 2
上で引用した手動の抜粋に基づいて、私はmv 1 2
を期待していました ファイル2
を上書きする前にユーザーにプロンプトを表示するコマンド 。
私のバージョンのmv
にバグはありますか? 、または私の理解のバグ?後者の場合、何をするか 手動の意味ですか?
承認された回答:
サーバーは「cifs」タイプのファイルシステム(おそらくCommon Internet File System、別名CIFS)を使用していたことが判明しました。これは、コマンドdf -T
を実行することで発見されました 。
CIFSは、アクセス許可に関して型破りな動作を示しているようです。
ext4ファイルシステムと最新バージョンのCoreutilsを搭載したマシンで同じコマンドを実行すると、次のようになります。
$ mv 1 2
mv: replace ‘2’, overriding mode 0444 (r--r--r--)?
予想通り。