touch, mv 등이 "필요에 따라" 하위 디렉토리를 생성하지 않는 이유에 대해

touch, mv 등이 "필요에 따라" 하위 디렉토리를 생성하지 않는 이유에 대해

일부 하위 디렉터리가 이미 존재하지 않으면 많은 Unix 명령이 실패하지만, 이러한 명령의 경우 계속하기 전에 누락된 하위 디렉터리를 만드는 것이 쉽지 않습니다.

예를 들면 다음과 같습니다 touch.

% touch /tmp/foo/bar/baz/frobozz
touch: cannot touch `/tmp/foo/bar/baz': No such file or directory
% mkdir -p /tmp/foo/bar/baz
% touch /tmp/foo/bar/baz/frobozz # succeeds

마찬가지로 mv:

% mv --target-directory=/tmp/foo/frotz/quux /tmp/foo/bar/frobozz
% mv: failed to access `/tmp/foo/frotz/quux': No such file or directory
% mkdir -p /tmp/foo/frotz/quux
% mv --target-directory=/tmp/foo/frotz/quux /tmp/foo/bar/frobozz # succeeds

이 동작에 대한 한 가지 주목할만한 예외는 "필요에 따라 하위 디렉터리를 생성"하라는 플래그가 mkdir있는 자체 입니다.-p

touchmv,, et al이라는 사실이 조금 혼란스럽습니다 . 기본적으로 또는 특정 플래그(예: mkdirs -p)를 사용하여 요청 시 "명백한 작업"을 수행하지 않습니다.

여기에는 타당한 이유가 있을 것이라고 생각하지만, 나에게는 분명하지 않습니다. 통찰력을 환영합니다.

mmv(이 질문을 하게 된 동기 는 실제 유틸리티와는 달리 mmv( 비표준) 유틸리티와 매우 유사한 유틸리티를 구현하고 싶다는 것입니다 .회의"필요에 따라 하위 디렉터리 만들기" 이 새로운 기능이 정말 나쁜 생각인지 궁금합니다.

예를 들어, 제가 고려하고 있는 유틸리티(제가 부르겠습니다 mmmv)를 사용하면 동시에 파일을 이동하고 이름을 바꿀 수 있습니다.

1caf73ee55b4e11d6e3b12ccbf8c477c2839bfae
1f37fd8ce865f98579d10d8045ac1e88c6717215
73f2af84ba8ed27fa332d52745274377aa67cda5
a257a7c7cac26c391e8636193ff47b45c5e587ec

도착하다

1c/af73ee55b4e11d6e3b12ccbf8c477c2839bfae
1f/37fd8ce865f98579d10d8045ac1e88c6717215
a2/57a7c7cac26c391e8636193ff47b45c5e587ec
73/f2af84ba8ed27fa332d52745274377aa67cda5

다음과 같은 단일 명령을 사용하십시오.

% mmmv '??*' '#1#2/#3'

이렇게 하려면 mmmv필요에 따라 두 글자로 명명된 하위 디렉터리를 만들 수 있어야 합니다. )

답변1

일반적으로 유틸리티가 이를 수행하지 않는 이유는 예상하지 못한 일이고 그렇게 하면 보안 위험이 발생할 수 있기 때문입니다.

/foo예를 들어, 모드 700( )를 사용하여 비공개로 간주되는 디렉터리가 있다고 가정합니다 rwx------. 존재 touch /foo/bar하지만 /foo존재하지 않는 경우 기본값 755( rwxr-xr-x)을 사용하여 생성합니다. 하지만 /foo비공개여야 하며 /foo일반적으로 비공개로 생성되고 설정된 모든 항목은 그렇게 하지 않습니다. 방금 생성된 것을 모르기 때문에 /foo조정해야 한다는 것을 알 수 없습니다.

관련 정보