이것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--)?
예상대로.