[unix] mkdir의 “-p”옵션

그래서 이것은 제가 가진 매우 복잡한 질문처럼 보이지는 않지만 대답을 찾을 수 없습니다. -pUnix 에서 옵션이 수행하는 작업에 대해 혼란 스럽습니다 . 하위 디렉터리를 만들고 그 안에 다른 하위 디렉터리를 만드는 동안 랩 할당에 사용했습니다. 다음과 같이 보였습니다.

mkdir -p cmps012m/lab1

이것은 일반 권한 ( rlidwka)을 가진 개인 디렉토리에 있습니다. 아, 그리고 누군가가 무슨 rlidwka뜻 인지에 대해 조금 설명해 주 시겠습니까? 나는 유닉스에 대해 완전히 멍청한 사람은 아니지만 이것이 무엇을 의미하는지 잘 알지 못합니다. 너무 모호한 질문이 아니기를 바랍니다.



답변

man 페이지는 당신이 찾을 수있는 최고의 정보 소스입니다 … 그리고 당신의 손끝에 있습니다 : 스위치 man mkdir에 대해 이것을 산출합니다 -p:

-p, --parents
    no error if existing, make parent directories as needed

사용 사례 예 : 디렉터리를 만들고 hello/goodbye싶지만 존재하지 않는다고 가정 합니다.

$mkdir hello/goodbye
mkdir:cannot create directory 'hello/goodbye': No such file or directory
$mkdir -p hello/goodbye
$

-p만들어 모두 hellogoodbye

, 명령이 요청을 수행하는 데 필요한 모든 디렉토리를 생성하고 해당 디렉토리가있는 경우 오류를 반환하지 않습니다 .

에 대해 rlidwkaGoogle은 약어에 대한 아주 좋은 메모리를 가지고 있습니다. :). 내 검색 결과가 다음과 같습니다. http://www.cs.cmu.edu/~help/afs/afs_acls.html

 Directory permissions

l (lookup)
    Allows one to list the contents of a directory. It does not allow the reading of files.
i (insert)
    Allows one to create new files in a directory or copy new files to a directory.
d (delete)
    Allows one to remove files and sub-directories from a directory.
a (administer)
    Allows one to change a directory's ACL. The owner of a directory can always change the ACL of a directory that s/he owns, along with the ACLs of any subdirectories in that directory.

File permissions

r (read)
    Allows one to read the contents of file in the directory.
w (write)
    Allows one to modify the contents of files in a directory and use chmod on them.
k (lock)
    Allows programs to lock files in a directory.

따라서 rlidwka의미 : 모든 권한에 .

@KeithThompson이 주석에서 지적했듯이 모든 Unix 시스템이 ACL을 지원하는 것은 아니라는 점을 언급 할 가치가 있습니다. 그래서 아마도 rlidwka개념이 여기에 적용되지 않을 것입니다.


답변

-p|--parenttop-down접근 방식 으로 디렉토리를 생성하려는 경우 사용됩니다 . 존재하지 않는 경우 부모 디렉토리와 자식 등이 생성됩니다.

-p, –parents 존재하는 경우 오류 없음, 필요에 따라 상위 디렉토리 만들기

정보 rlidwka그것은 전체 또는 관리 액세스 권한을 부여 의미한다. https://itservices.stanford.edu/service/afs/intro/permissions/unix 에서 찾았습니다 .


답변

mkdir [-switch] 폴더 이름

-p 선택적인 스위치로, 상위 폴더가 존재하지 않더라도 하위 폴더와 상위 폴더를 생성합니다.

man 페이지에서 :

-p, --parents no error if existing, make parent directories as needed

예:

mkdir -p storage/framework/{sessions,views,cache}

이렇게하면 ‘프레임 워크’가 이전에 사용 가능했는지 여부에 관계없이 프레임 워크 폴더 내에 하위 폴더 세션,보기, 캐시가 생성됩니다.


답변

이것은 Unix 전체가 아니라 명령에 -p대한 인수 mkdir입니다. 모든 명령은 필요한 인수를 가질 수 있습니다.

이 경우 “부모”를 의미합니다. 즉 mkdir, 디렉토리와 아직 존재하지 않는 모든 부모를 만듭니다.


답변

PATH : 오래 전에 답변했지만 -p를 “Path”(기억하기 쉬움)로 생각하는 것이 더 도움이 될 수 있습니다.이 경우 mkdir이 경로의 모든 부분을 생성하게됩니다.

mkdir -p / usr / bin / comm / diff / er / fence

/ usr / bin / comm이 이미 존재하는 경우 다음과 같이 작동합니다. mkdir / usr / bin / comm / diff mkdir / usr / bin / comm / diff / er mkdir / usr / bin / comm / diff / er / fence

보시다시피, 이미있는 것과없는 것을 파악할 필요가 없기 때문에 약간의 타이핑과 생각을 절약 할 수 있습니다.


답변