Bagaimana cara membuat direktori bernama '-p' di Linux dengan Bash? [duplikat]


22

Di Bash, bagaimana saya bisa membuat direktori bernama -p?

mkdir -pgagal.
mkdir "-p"gagal.
mkdir "\-p"gagal.
mkdir \-pgagal.


1
Perhatikan bahwa semua ini berusaha keluar dari parameter untuk bash. Karena itu sama lolos karena tidak lolos, semua ini kecuali yang ketiga hanya akan mengirim string "-p" ke mkdir, yang akan menguraikannya sebagai opsi. Opsi parsing tidak dilakukan dalam bash, jadi cara lain (dijelaskan dalam jawaban di bawah) adalah fitur mkdir (atau lebih tepatnya, kurangnya bug).
Score_Under

11
Harus bertanya mengapa Anda ingin direktori seperti itu. Ini akan menjadi PITA untuk digunakan.
Daniel R Hicks

3
@DanielRHicks: Saya membuat folder ini secara tidak sengaja, tetapi tidak tahu cara menghapusnya.
Jichao

4
Tidakkah seharusnya, pertanyaannya adalah "Bagaimana cara menghapus direktori bernama '-p' di Linux dengan Bash"?
chepner

@ chepner: Karena mereka sebenarnya masalah yang sama. Saya mencoba menghapus direktori dengan rmdirtetapi gagal dengan kesalahan yang sama.
Jichao

Jawaban:


40

Sebagian besar utilitas (semua yang sesuai dengan POSIX kecuali untuk testdan echo) mendukung opsi "end of options" -- , sehingga Anda dapat menjalankan:

mkdir -- -p

Ini sangat berguna saat mengganti nama atau menghapus file yang berpotensi memulai dengan tanda hubung. Dalam skrip Anda harus selalu menggunakan

mv -- "$filename"

bukannya polos mv "$filename"atau, lebih buruk lagi, nama file yang tidak dikutip.


3
Luar biasa. Ini benar-benar baik untuk diketahui
Bruno9779

18

mkdir ./-p

Ingatlah bahwa sebagian besar program lain perlu menggunakan "trik" yang sama.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.