Opcja „-p” mkdir


100

Więc nie wydaje mi się to strasznie skomplikowane pytanie, ale nie mogę znaleźć odpowiedzi. Nie wiem, co -probi ta opcja w systemie Unix. Użyłem go do zadania laboratoryjnego podczas tworzenia podkatalogu, a następnie innego podkatalogu w tym katalogu. Wyglądało to tak:

mkdir -p cmps012m/lab1

To jest w prywatnym katalogu z normalnymi prawami ( rlidwka). Aha, i czy ktoś mógłby wyjaśnić trochę, co rlidwkato znaczy? Nie jestem całkowitym noobem dla Uniksa, ale nie bardzo wiem, co to oznacza. Mam nadzieję, że to nie jest zbyt niejasne pytanie.


2
man mkdirodpowie na Twoje pytanie. Co do „rlidwki”, to nie mam pojęcia; musisz podać nam więcej kontekstu.
Keith Thompson

Odpowiedzi:


145

Strony podręcznika systemowego są najlepszym źródłem informacji, jakie można znaleźć ... i są na wyciągnięcie ręki: zawiera man mkdirinformacje o -pprzełączniku:

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

Przykład zastosowania: Załóżmy, że chcę utworzyć katalogi, hello/goodbyeale żaden nie istnieje:

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

-pstworzył zarówno, jak helloigoodbye

Oznacza to, że polecenie utworzy wszystkie katalogi niezbędne do spełnienia żądania, nie zwracając żadnego błędu, jeśli katalog istnieje .

O mnie rlidwka, Google ma bardzo dobrą pamięć na akronimy :). Moje wyszukiwanie zwróciło to na przykład: 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. 

Stąd rlidwkaoznacza: Wszystkie uprawnienia .

Warto wspomnieć, jak zauważył @KeithThompson w komentarzach, że nie wszystkie systemy Unix obsługują ACL. Więc prawdopodobnie rlidwkakoncepcja nie ma tutaj zastosowania.


1
Jednak nie wszystkie systemy uniksopodobne obsługują listy ACL, więc rlidwkamoże mieć znaczenie lub nie.
Keith Thompson

1
@KeithThompson Cóż, zgadzam się, chciałem tylko wspomnieć, co oznacza ten akronim.
Paulo Bu

1
Tak, ale często samo udzielenie odpowiedzi na czyjeś pytanie jest mniej pomocne niż podanie podstawowych informacji potrzebnych do zrozumienia odpowiedzi.
Keith Thompson

1
Wskażę to w odpowiedzi. Po prostu nie byłam tego świadoma. Dzięki za poprawienie mnie.
Paulo Bu

4
Ta odpowiedź jest najbardziej rozwlekłym sposobem powiedzenia „RTFM, pozwól mi to wygooglować” i bardzo mi się podoba. Kiedyś byłem stażystą noobie, który nic nie wiedział, i zapomniałem o tym, zanim poprosiłem mojego przełożonego, żebym to wyszukał. Nie spiesz się z tymi nowymi facetami; czasami trudno jest dowiedzieć się, co wyszukać w Google. Nie wiesz, czego nie wiesz. Ale po latach każdy staje się bardziej zręczny w googlowaniu.
Dagrooms

4

mkdir [-switch] nazwa folderu

-p jest przełącznikiem, który jest opcjonalny, utworzy podfolder i folder nadrzędny, a nawet folder nadrzędny nie istnieje.

Ze strony podręcznika:

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

Przykład:

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

Spowoduje to utworzenie sesji podfolderu, widoków, pamięci podręcznej w folderze frameworka, niezależnie od tego, czy „framework” był dostępny wcześniej, czy nie.


4

-p|--parentbędzie używany, jeśli próbujesz utworzyć katalog z top-downpodejściem. Spowoduje to utworzenie katalogu nadrzędnego, następnie podrzędnego i tak dalej, jeśli żaden nie istnieje.

-p, --parents brak błędu, jeśli istnieje, tworzy katalogi nadrzędne według potrzeb

O rlidwkato znaczy, dając pełny dostęp lub administracyjnej. Znalazłem go tutaj https://itservices.stanford.edu/service/afs/intro/permissions/unix .


2

Zauważ, że -pjest to argument dlamkdir polecenia, a nie całego systemu Unix. Każde polecenie może mieć potrzebne argumenty.

W tym przypadku oznacza „rodziców”, co oznacza, mkdirże utworzy katalog i wszystkich rodziców, których jeszcze nie ma.


2

ŚCIEŻKA: Odpowiedziano dawno temu, jednak może być bardziej pomocne myślenie o -p jako o "ścieżce" (łatwiejszej do zapamiętania), ponieważ powoduje to, że mkdir tworzy każdą część ścieżki, której jeszcze nie ma.

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

jeśli / usr / bin / comm już istnieje, zachowuje się jak: mkdir / usr / bin / comm / diff mkdir / usr / bin / comm / diff / er mkdir / usr / bin / comm / diff / er / fence

Jak widać, oszczędza ci to trochę pisania i myślenia, ponieważ nie musisz zastanawiać się, co już tam jest, a co nie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.