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そうですね、私は頭字語が何を表すのか言及したかっただけです。
Paulo Bu

1
はい、しかし、多くの場合、誰かの質問に答えるだけでは、答えを理解するために必要な背景情報を提供するよりも役に立ちません。
キース・トンプソン

1
回答で指摘しておきます。私はこれを知らなかっただけです。私を訂正してくれてありがとう。
Paulo Bu

4
この答えは、「RTFM、Googleに教えてあげる」という可能な限り最も詳細な方法であり、とても気に入っています。私はかつて何も知らない初心者のインターンで、マネージャーに尋ねる前にそれをググるだけでいいのを忘れていました。これらの新しい人に気楽に行きましょう。時々グーグルのことを理解するのは難しいです。あなたはあなたが知らないことを知らない。しかし、何年にもわたって誰もがグーグルでより上手になります。
ダグルームズ2017年

4

-p|--parenttop-downアプローチでディレクトリを作成しようとしている場合に使用されます。これにより、親ディレクトリが作成され、子が作成されます。

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

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


3

mkdir [-switch]フォルダー名

-p オプションのスイッチです。親フォルダーが存在しない場合でも、サブフォルダーと親フォルダーが作成されます。

manページから:

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

例:

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

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


2

これ-pmkdirコマンド全体の引数であり、Unix全体ではありません。すべてのコマンドには、必要な引数があります。

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


2

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

ご覧のように、既存の内容とそうでないものを区別する必要がないので、入力する手間が省け、思考の手間が省けます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.