web-dev-qa-db-ja.com

mkdirの「-p」オプション

だから、これは私が持っているひどく複雑な質問のようには見えませんが、答えを見つけることができないものです。 Unixで-pオプションが何をするかについて混乱しています。サブディレクトリを作成し、そのサブディレクトリ内に別のサブディレクトリを作成する際に、ラボの割り当てに使用しました。このように見えた:

mkdir -p cmps012m/lab1

これは、通常の権利(rlidwka)を持つプライベートディレクトリにあります。ああ、そして誰かがrlidwkaが何を意味するのかについて少し説明してもいいですか?私はUnixに完全に慣れているわけではありませんが、これが何を意味するのかはあまりよくわかりません。それが質問の曖昧すぎないことを願っています。

82
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は両方を作成しました、hellogoodbye

これは、コマンドがリクエストを実行するために必要なすべてのディレクトリを作成し、ディレクトリが存在する場合にエラーを返さないことを意味します

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は次を意味します:All-Permissions on

@KeithThompsonがコメントで指摘したように、すべてのUnixシステムがACLをサポートしているわけではないことに言及する価値があります。したがって、おそらくrlidwkaの概念はここでは適用されません。

118
Paulo Bu

-p|--parentアプローチでディレクトリを作成しようとしている場合は、top-downが使用されます。存在しない場合は、親ディレクトリ、次に子ディレクトリなどが作成されます。

-p、--parents既存の場合エラーなし、必要に応じて親ディレクトリを作成

rlidwkaについては、完全または管理アクセスを与えることを意味します。ここで見つけました https://itservices.stanford.edu/service/afs/intro/permissions/unix

4
Rahul

mkdir [-switch]フォルダー名

-pはオプションのスイッチで、サブフォルダーと親フォルダーを作成します。親フォルダーも存在しません。

Manページから:

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

例:

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

これにより、「フレームワーク」が以前に使用可能かどうかに関係なく、フレームワークフォルダー内にサブフォルダーセッション、ビュー、キャッシュが作成されます。

3
Amitesh

-pは、Unix全体ではなく、mkdirコマンドに対する引数であることに注意してください。すべてのコマンドには、必要な引数を指定できます。

この場合、「親」を意味します。つまり、mkdirは、ディレクトリと、まだ存在しない親を作成します。

2
IMSoP

PATH:ずっと前に答え​​ましたが、-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