mv(유닉스)
mv (Unix)| 원저작자 | 켄 톰슨, 데니스 리치 (AT&T 벨 연구소) |
|---|---|
| 개발자 | 다양한 오픈 소스 및 상용 개발자 |
| 초기 릴리즈 | 1971년 11월 3일, 전( |
| 운영 체제 | Unix, Unix like, Inferno, IBM i |
| 플랫폼 | 크로스 플랫폼 |
| 유형 | 명령어 |
| 면허증. | 코어 유틸리티: GPLv3 |
mv는 1개 이상의 파일 또는 디렉토리를 한 장소에서 다른 곳으로 이동하는 Unix 명령어입니다.양쪽 파일명이 같은 파일시스템상에 있는 경우는, 간단하게 파일명을 변경할 수 있습니다.그렇지 않으면, 파일의 내용이 새로운 장소에 카피되어 낡은 파일이 삭제됩니다.사용.mv를 사용하려면 사용자에게 파일을 이동할 디렉토리에 대한 쓰기 권한이 있어야 합니다.그 이유는mv는, 이동에 관련하는 양쪽 모두의 디렉토리(송신원과 타겟)의 내용을 변경합니다.를 사용하는 경우mv명령어는 같은 파일시스템에 있는 파일의 타임스탬프는 갱신되지 않습니다.
AT&T UNIX에서 파생된 UNIX 구현에서는 cp, ln 및 mv는 하드 링크된 바이너리를 가진 단일 프로그램으로 구현됩니다.동작은 경로 이름에서 선택됩니다.argv[0]이것은 하나의 단위로 패키지화된 밀접하게 관련된 명령어를 사용자가 의도한 액션의 특정 경로를 지정할 수 있도록 하는 일반적인 기술입니다.
역사
A move디렉토리 엔트리를 새로운 디렉토리로 이동하는 명령어는 Multics에서 처음 구현되었습니다.계약할 수 있다mv나중에.[1]mv이 명령어는 버전1[2] Unix에서 등장하여 1987년 [3]X/Open Portability Guide 2호의 일부가 되었습니다.의 버전mv 번들 인 GNUcoreutils는 Mike Parker, David MacKenzie 및 Jim Meyering에 [4]의해 작성되었습니다.이 명령어는 일반적인 GNU Unix 유사 [5]유틸리티의 nativeWin32ports UnxUtils 컬렉션의 일부로 Microsoft Windows용 별도의 패키지로 사용할 수 있습니다.그mv 명령어는 IBM i 운영 [6]체제에도 이식되었습니다.
기존 파일 충돌
파일명을 기존 파일명으로 이동하면 기존 파일은 기본적으로 삭제(클러버링)됩니다.기존 파일이 쓰기 가능하지 않지만 쓰기 가능한 디렉토리에 있는 경우 mv 명령은 -f(force) 옵션을 사용하지 않는 한 계속하기 전에 확인을 요청합니다(단말기에서 실행되는 경우).
GNU를 사용하면 실수로 덮어쓰는 것을 방지할 수 있습니다.-n(롱 포맷:--no-clobber) 플래그. 또는-u(--update)는 소스 파일보다 오래된 대상 파일만 덮어씁니다.-i(--interactive)는 각 이름의 경합에 대해 확인을 요구합니다.-b(--backup)는, 타겟 파일의 이름을 변경합니다.
파일명을 기존 디렉토리로 이동하면 관련 모호성이 발생합니다.디폴트로는mv는, 이 디렉토리내에서 이름을 이동하려고 하는 경우와 같이 처리됩니다.GNU MV에는-T이 전제 조건을 무효로 하고, 대신에 디렉토리를 덮어쓰려고 합니다.역수-t디렉토리 이동 조작을 [4]명시적으로 합니다.
이동과 복사 및 삭제
같은 파일 시스템내의 파일의 이동은, 통상, 파일을 카피하고 나서 원본을 삭제하는 것과는 다릅니다.이름 변경을 지원하지 않는 플랫폼에서는 새 디렉토리에 새 링크가 추가되고 원래 링크가 삭제됩니다.파일의 데이터에 액세스 할 수 없습니다.모든 POSIX 준거 시스템은 이름 변경 콜을 구현합니다.
실제 이동(실제로 이름 변경)은 회로 복사 및 이동 절차보다 훨씬 빠릅니다.파일의 i-number("inode number")는 변경되지 않습니다.개념적으로 "이동"의 결과로 변경되는 정보만 카탈로그화하면 이동 중인 파일을 읽기 위한 권한이 필요하지 않습니다.소스 디렉토리와 타깃디렉토리가 변경되고 있기 때문에, 확실히 타겟디렉토리내에 엔트리가 작성되어 소스디렉토리내에서 삭제되고 있기 때문에, 이동을 완료하려면 양쪽 디렉토리에 「쓰기」권한이 필요합니다.파일 시스템 간에 파일을 이동하면 완전히 실패하거나 원자적인 복사 및 삭제 작업으로 자동으로 수행될 수 있습니다. 실제 세부 사항은 구현에 따라 달라집니다.
디렉토리를 한 부모 디렉토리에서 다른 부모 디렉토리로 이동하려면 이전 부모 디렉토리와 새 부모 디렉토리를 수정할 수 있는 권한과 함께 이동 중인 디렉토리에 대한 쓰기 권한이 필요합니다.그 이유는 이름 변경에 따라 디렉토리 엔트리 ".."의 i-번호(현재 디렉토리의 부모에 대한 별칭으로 모든 컨텍스트에서 사용할 수 있음)가 변경되기 때문입니다.
옵션들
대부분의 MV 지원 버전:
-i대화식으로 처리하여 기존 파일을 덮어쓰는 파일을 이동하기 전에 표준 오류에 대한 프롬프트를 작성합니다.표준 입력으로부터의 응답이 문자 「y」또는 「Y」로 개시되면, 이동이 시도됩니다.(이전 -f 옵션보다 우선합니다).-f수신처를 강제로 덮어씁니다(이전 -i 옵션 제외).
이러한 옵션은 나중에 POSIX 및 SUS의 기반이 되는 X/Open Portability Guidelines의 일부입니다.모든 POSIX 준거 MV 구현은 이러한 [7]기능을 지원해야 합니다.
예
| 명령어 | 설명. |
|---|---|
| mv myfile mynewfilename | myfile을 mynewfilename으로 변경합니다. |
| mv myfile subdir/myfile | 현재 디렉토리를 기준으로 'myfile'을 'subdir/myfile'로 이동합니다. |
| mv myfile subdir | 이전 명령어와 동일한 파일 이름을 지정합니다. |
| mv be.03 /mnt/bkup/bes | "be.03"을 마운트된 볼륨 "bkup"의 "be.03" 디렉토리에 복사한 후 "be.03"을 제거합니다. |
| mv be.03/* /mnt/bkup/bes | 위와 동일하지만, 각 파일의 이동처be.03전체 복사가 완료된 후 한 번에 모두 삭제되지 않고 개별적으로 삭제됩니다. |
| mv afile another mydir | 여러 파일을 'mydir' 디렉토리로 이동 |
| mv /var/log/*z ~/logs | '/var'이(가) 다른 파일 시스템에 있는 경우 파일이 복사 및 삭제되므로 예상보다 오래 걸립니다.셸은 사용자의 홈디렉토리로 확장되어 와일드카드 문자로 취급됩니다. |
위의 예에서 /mnt는 특정 파일시스템이 마운트되어 있는 디렉토리(「마운트 포인트」)를 참조하고 있습니다.이러한 디렉토리의 /mnt를 명명하는 것은 일반적인 관례이지만 반드시 필요한 것은 아닙니다."파일 시스템"은 논리적으로 하나의 단위로 간주되는 독립된 트리로 간주할 수 있습니다.그 루트는 관리자가 선택한 디렉토리 위에 "마운트"됩니다.이 디렉토리의 이전 콘텐츠는 표시되지 않지만 새 볼륨이 마운트 해제되면 "복원"됩니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Multics 명령어
- ^ – FreeBSD 일반 명령어 매뉴얼
- ^ : 파일 이동– Shell and Utilities Reference, 싱글 UNIX 사양, 버전 4 from The Open Group
- ^ a b – Linux 일반 명령어 매뉴얼
- ^ "Native Win32 ports of some GNU utilities". unxutils.sourceforge.net.
- ^ IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). Retrieved 2020-09-05.
{{cite web}}: CS1 maint :url-status (링크) - ^ 단일 Unix 사양 #1980s: 동기 부여