Параметр mkdir “-p”


96

Отже, це не здається мені надзвичайно складним питанням, але на це я не можу знайти відповіді. Я збентежений тим, що -pробить ця опція в Unix. Я використовував його для лабораторного завдання під час створення підкаталогу, а потім іншого підкаталогу в ньому. Це виглядало так:

mkdir -p cmps012m/lab1

Це в приватному каталозі зі звичайними правами ( rlidwka). О, і хтось не задумав би дати невелике пояснення, що rlidwkaозначає? Я не є абсолютно нубом для Unix, але я насправді не знайомий із тим, що це означає. Сподіваємось, це не надто туманне питання.


2
man mkdirвідповість на ваше запитання. Щодо "rlidwka", я поняття не маю; вам потрібно буде дати нам трохи більше контексту.
Кіт Томпсон,

Відповіді:


138

Сторінки "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створив і те, helloі іншеgoodbye

Це означає, що команда створить усі каталоги, необхідні для виконання вашого запиту, не повертаючи жодної помилки у випадку, якщо цей каталог існує .

Про те rlidwka, Google має дуже гарну пам’ять для скорочень :). Мій пошук повернув це, наприклад: 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поняття тут не застосовується.


1
Але не всі Unix-подібні системи підтримують ACL, тому rlidwkaможуть бути, а можуть і не мати значення.
Кіт Томпсон,

1
@KeithThompson Ну, я згоден, я просто хотів згадати, що означає абревіатура.
Пауло Бу

1
Так, але часто просто відповісти на чиєсь питання є менш корисним, ніж надання довідкової інформації, необхідної для розуміння відповіді.
Кіт Томпсон,

1
Я вкажу на це у відповіді. Я просто цього не знав. Дякую за виправлення.
Паулу Бу,

4
Ця відповідь є найбільш багатослівним можливим способом сказати "RTFM, дозвольте мені погуглити це для вас", і мені це подобається. Колись я був стажером-нубі, який нічого не знав, і забув, що перед тим, як запитати у свого менеджера, я повинен просто погуглити. Будьте легкі на цих нових хлопцях; іноді важко зрозуміти, що гуглити. Ти не знаєш того, чого не знаєш. Але після того, як роками це роблять, кожен стає вправнішим у гуглинні.
Dagrooms

4

-p|--parentбуде використано, якщо ви намагаєтеся створити каталог із top-downпідходом. Це створить батьківський каталог, а потім дочірній і так далі, якщо такого не існує.

-p, --parents без помилок, якщо вони є, зробіть батьківські каталоги за необхідності

Про rlidwkaце означає надання повного або адміністративного доступу. Знайшов тут https://itservices.stanford.edu/service/afs/intro/permissions/unix .


3

mkdir [-switch] ім'я папки

-p є комутатором, який є необов’язковим, він створить підпапку та батьківську папку, а також навіть батьківська папка не існує.

Зі сторінки користувача:

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

Приклад:

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

Це створить сеанси підпапок, подання, кеш усередині папки фреймворку незалежно від того, чи "фреймворк" був доступний раніше чи ні.


2

Зверніть увагу, що -pце аргумент mkdirкоманди, а не всього Unix. Кожна команда може мати будь-які аргументи, які їй потрібні.

У цьому випадку це означає "батьки", тобто mkdirстворення каталогу та будь-яких батьків, які ще не існують.


2

PATH: Давно відповіли, однак, можливо, було б корисніше розглядати -p як "Шлях" (легший для запам'ятовування), оскільки в цьому mkdir створює кожну частину шляху, якого там ще немає.

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

якщо / usr / bin / comm вже існує, він діє так: mkdir / usr / bin / comm / diff mkdir / usr / bin / comm / diff / er mkdir / usr / bin / comm / diff / er / plot

Як бачите, це економить трохи набору тексту та роздумів, оскільки вам не потрібно з’ясовувати, що вже є, а що ні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.