it-swarm.com.ru

опция "-p" у mkdir

Так что это не кажется мне ужасно сложным вопросом, но я не могу найти ответ на него. Я не совсем понимаю, что делает опция -p в Unix. Я использовал его для лабораторного задания при создании подкаталога, а затем другого подкаталога в этом каталоге. Это выглядело так:

mkdir -p cmps012m/lab1

Это в личном каталоге с обычными правами (rlidwka). О, и кто-то возражает дать небольшое объяснение того, что означает rlidwka? Я не абсолютный новичок в Unix, но я не очень хорошо знаю, что это значит. Надеюсь, это не слишком неопределенный вопрос.

79
user3476866

Страницы руководства - лучший источник информации, который вы можете найти ... и он всегда у вас под рукой: 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 здесь не применима.

113
Paulo Bu

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

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

О rlidwka это означает предоставление полного или административного доступа. Нашел его здесь https://itservices.stanford.edu/service/afs/intro/permissions/unix .

4
Rahul

mkdir [-switch] foldername

-p - это необязательный параметр, он создает подпапку и родительскую папку, даже если родительская папка не существует.

Со страницы руководства:

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

Пример:

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

Это создаст сеансы подпапки, представления, кэш внутри папки фреймворка, независимо от того, был ли "фреймворк" доступным ранее или нет.

3
Amitesh

Обратите внимание, что -p является аргументом для команды mkdir, а не всего Unix. Каждая команда может иметь любые аргументы, в которых она нуждается.

В этом случае это означает "родители", то есть mkdir создаст каталог и всех родителей, которые еще не существуют.

2
IMSoP

ПУТЬ: Ответил давно, однако, возможно, было бы более полезно думать о -p как о "Пути" (легче запомнить), так как в этом случае 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

Как видите, это избавляет вас от необходимости набирать текст и думать, поскольку вам не нужно выяснять, что уже есть, а что нет.

1
Able Mac