Opsi “-p” mkdir

97

Jadi ini bukan pertanyaan yang terlalu rumit yang saya miliki, tetapi saya tidak dapat menemukan jawabannya. Saya bingung tentang apa yang dilakukan -popsi di Unix. Saya menggunakannya untuk tugas lab sambil membuat subdirektori dan kemudian subdirektori lain di dalamnya. Ini terlihat seperti ini:

mkdir -p cmps012m/lab1

Ini ada di direktori pribadi dengan hak normal ( rlidwka). Oh, dan apakah ada yang keberatan memberikan sedikit penjelasan tentang apa rlidwkaartinya? Saya bukan noob total bagi Unix, tapi saya tidak terlalu paham dengan apa artinya ini. Mudah-mudahan pertanyaan itu tidak terlalu kabur.

pengguna3476866
sumber
2
man mkdirakan menjawab pertanyaan Anda. Adapun "rlidwka", saya tidak tahu; Anda harus memberi kami lebih banyak konteks.
Keith Thompson

Jawaban:

138

Halaman manual adalah sumber informasi terbaik yang dapat Anda temukan ... dan ada di ujung jari Anda: man mkdirmenghasilkan ini tentang -pswitch:

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

Contoh kasus penggunaan: Asumsikan saya ingin membuat direktori hello/goodbyetetapi tidak ada:

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

-pmenciptakan keduanya, hellodangoodbye

Ini berarti bahwa perintah akan membuat semua direktori yang diperlukan untuk memenuhi permintaan Anda, tidak menampilkan kesalahan apa pun jika direktori tersebut ada .

Soal rlidwka, Google memiliki memori yang sangat bagus untuk akronim :). Pencarian saya menghasilkan ini misalnya: 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. 

Karenanya rlidwkaberarti: Semua izin aktif .

Perlu disebutkan, seperti yang ditunjukkan @Keithompson di komentar, bahwa tidak semua sistem Unix mendukung ACL. Jadi mungkin rlidwkakonsep tersebut tidak berlaku di sini.

Paulo Bu
sumber
1
Tetapi tidak semua sistem mirip Unix mendukung ACL, jadi rlidwkamungkin berarti atau mungkin tidak.
Keith Thompson
1
@KeithThompson Ya saya setuju, saya hanya ingin menyebutkan apa singkatannya.
Paulo Bu
1
Ya, tetapi sering kali hanya menjawab pertanyaan seseorang kurang membantu daripada memberikan informasi latar belakang yang diperlukan untuk memahami jawabannya.
Keith Thompson
1
Saya akan menunjukkannya di jawaban. Saya hanya tidak menyadari hal ini. Terima kasih telah mengoreksi saya.
Paulo Bu
4
Jawaban ini adalah cara paling verbose untuk mengatakan "RTFM, izinkan saya mencari di Google untuk Anda" dan saya menyukainya. Saya pernah menjadi magang noobie yang tidak tahu apa-apa, dan lupa bahwa sebelum bertanya kepada manajer saya, saya sebaiknya google saja. Bersikaplah santai pada orang-orang baru ini; terkadang sulit untuk mencari tahu apa yang harus google. Anda tidak tahu apa yang tidak Anda ketahui. Tetapi semua orang menjadi lebih terampil dalam googling setelah bertahun-tahun melakukannya.
Dagrooms
4

-p|--parentakan digunakan jika Anda mencoba membuat direktori dengan top-downpendekatan. Itu akan membuat direktori induk kemudian anak dan seterusnya jika tidak ada.

-p, --parents tidak ada kesalahan jika ada, buat direktori induk sesuai kebutuhan

Tentang rlidwkaitu berarti memberikan akses penuh atau administratif. Temukan di sini https://itservices.stanford.edu/service/afs/intro/permissions/unix .

Rahul
sumber
3

nama folder mkdir [-switch]

-p Merupakan sebuah saklar yang bersifat opsional, ia akan membuat subfolder dan folder induk serta bahkan folder induk tidak ada.

Dari halaman manual:

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

Contoh:

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

Ini akan membuat sesi subfolder, tampilan, cache di dalam folder framework terlepas dari 'framework' tersedia sebelumnya atau tidak.

Amitesh Bharti
sumber
2

Perhatikan bahwa -pini adalah argumen khusus untuk mkdirperintah, bukan keseluruhan Unix. Setiap perintah dapat memiliki argumen apa pun yang dibutuhkannya.

Dalam hal ini berarti "orang tua", artinya mkdirakan membuat direktori dan semua orang tua yang belum ada.

IMSoP
sumber
2

PATH: Menjawab sejak lama, bagaimanapun, mungkin lebih membantu untuk memikirkan -p sebagai "Path" (lebih mudah diingat), karena ini menyebabkan mkdir membuat setiap bagian dari path yang belum ada.

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

jika / usr / bin / comm sudah ada, itu berfungsi seperti: mkdir / usr / bin / comm / diff mkdir / usr / bin / comm / diff / er mkdir / usr / bin / comm / diff / er / fence

Seperti yang Anda lihat, ini menghemat sedikit waktu mengetik, dan berpikir, karena Anda tidak perlu mencari tahu apa yang sudah ada dan apa yang tidak.

Bisa Mac
sumber