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.
rmdir
tetapi gagal dengan kesalahan yang sama.Jawaban:
Sebagian besar utilitas (semua yang sesuai dengan POSIX kecuali untuk
test
danecho
) mendukung opsi "end of options"--
, sehingga Anda dapat menjalankan:Ini sangat berguna saat mengganti nama atau menghapus file yang berpotensi memulai dengan tanda hubung. Dalam skrip Anda harus selalu menggunakan
bukannya polos
mv "$filename"
atau, lebih buruk lagi, nama file yang tidak dikutip.sumber
mkdir ./-p
Ingatlah bahwa sebagian besar program lain perlu menggunakan "trik" yang sama.
sumber