これGNU Coreutils マニュアルmv
説明する:
宛先ファイルが存在するが、通常は書き込めず、標準入力が端末であり、-f または --force オプションが指定されていない場合、mv はユーザーにファイルを置き換えるかどうかを尋ねます。 (ファイルを所有しているか、そのディレクトリへの書き込み権限がある可能性があります。)応答が肯定的でない場合は、ファイルをスキップしてください。
しかし、私が使用しているバージョンmv
(Ubuntu 14.04.3 LTSのGNU coreutils 8.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
私のバージョンや理解に問題がありますか?後者ならどうしますかするマニュアルとはどういう意味ですか?
答え1
サーバーが「cifs」タイプのファイルシステムを使用していることがわかりました(おそらく共通インターネットファイルシステム、別名CIFS)。これはコマンドの実行によって検出されましたdf -T
。
CIFS は明らかに権限に関して一様な行動を示す。
ext4ファイルシステムと最新バージョンのCoreutilsがあるシステムで同じコマンドを実行すると、次のようになります。
$ mv 1 2
mv: replace ‘2’, overriding mode 0444 (r--r--r--)?
予想通り。