Saya menulis skrip shell untuk dijalankan di bawah KornShell (ksh) di AIX. Saya ingin menggunakan mkdir
perintah untuk membuat direktori. Tetapi direktori mungkin sudah ada, dalam hal ini saya tidak ingin melakukan apa pun. Jadi saya ingin menguji apakah direktori tersebut tidak ada, atau menekan kesalahan "File exist" yang muncul mkdir
ketika mencoba membuat direktori yang sudah ada.
Adakah pemikiran tentang cara terbaik untuk melakukan ini?
mkdir
sistem seperti Unix, bukan pada Windows.-p
diperlukan untuk kepatuhan Spesifikasi POSIX / Single Unix, sehingga segala sesuatu yang bermaksud untuk memenuhi spesifikasi tersebut akan mendukung-p
. Windows sama sekali berbeda, kecuali Anda menggunakan lapisan emulasi POSIX seperti Cygwin atau MSYS.mkdir -p
, Anda dapat menggunakan tanda kurung!{}
untuk membuat pohon direktori "kompleks" dalam sebuah perintah. Lihat di sini: technosophos.com/2010/04/15/…||
daripada&&
karena kemudian seluruh baris memiliki status keluar yang tepat. Penting jika shell Anda berjalan denganerrexit
atau jika baris itu adalah yang terakhir dalam suatu fungsi, switch-case, apa pun.mkdir
; shell memperluas ekspresi seperti itu ke daftar argumen diskrit yang diteruskan kemkdir
.Ini seharusnya bekerja:
atau:
yang akan membuat direktori jika tidak ada, tetapi memperingatkan Anda jika nama direktori yang Anda coba buat sudah digunakan oleh sesuatu selain direktori.
sumber
Gunakan flag -p.
sumber
Mendefinisikan pohon direktori kompleks dengan satu perintah
sumber
mkdir
itu sendiri, tetapi shell yang mengeksekusi perintah. Ini disebut ekspansi brace - AFAIK, hanya Bash, ksh, zsh, dan shell C yang mendukungnya.folder name
Anda harus menggunakanfolder\ name
)Jika Anda tidak ingin menampilkan pesan kesalahan:
Jika Anda ingin menampilkan pesan kesalahan Anda sendiri:
sumber
Yang lama mencoba dan benar
akan melakukan apa yang Anda inginkan tanpa syarat balapan yang dimiliki oleh banyak solusi lainnya.
Terkadang solusi yang paling sederhana (dan paling jelek) adalah yang terbaik.
sumber
mkdir foo
berfungsi bahkan jika direktori ada. Untuk membuatnya berfungsi hanya jika direktori bernama "foo" tidak ada, coba gunakan-p
bendera.Contoh: -
Ini akan membuat direktori bernama "foo" hanya jika tidak ada. :)
sumber
sumber
Atau jika Anda ingin memeriksa keberadaannya terlebih dahulu:
-e adalah tes yang ada untuk cangkang korn.
Anda juga dapat mencoba googling manual shell korn.
sumber
mkdir tidak mendukung -p beralih lagi pada sistem Windows 8+.
Anda bisa menggunakan ini:
sumber
Mengacu pada halaman manual
man mkdir
untuk opsi -p
yang akan membuat semua direktori di jalur yang diberikan, jika ada tidak ada kesalahan jika tidak membuat semua direktori dari kiri ke kanan di jalur yang diberikan. Coba perintah di bawah ini. direktori
newdir
dananotherdir
tidak ada sebelum mengeluarkan perintah iniPenggunaan yang Benar
mkdir -p /tmp/newdir/anotherdir
Setelah menjalankan perintah, Anda dapat melihat
newdir
dananotherdir
membuat di bawah / tmp. Anda dapat mengeluarkan perintah ini sebanyak yang Anda inginkan, perintah itu selalu adaexit(0)
. Karena alasan ini sebagian besar orang menggunakan perintah ini dalam skrip shell sebelum menggunakan jalur yang sebenarnya.sumber
Anda dapat menggunakan apakah loop untuk memeriksa apakah direktori ada atau tidak, jika tidak keluar daripada membuat direktori.
1) dir = / home / dir_name
2) Anda dapat direktori menggunakan mkdir dengan opsi -p untuk membuat direktori. Itu akan memeriksa apakah direktori tidak tersedia itu akan.
mkdir -p juga memungkinkan untuk membuat struktur pohon direktori. Jika Anda ingin membuat direktori induk dan anak menggunakan perintah yang sama, dapat memilih mkdir -p
sumber
Ini adalah fungsi sederhana (bash shell) yang memungkinkan Anda membuat direktori jika tidak ada.
Anda dapat memanggil fungsi di atas sebagai:
Di atas membuat fooDir dan BarDir jika tidak ada. Perhatikan opsi "-p" dalam perintah mkdir yang membuat direktori secara rekursif. Semoga ini membantu.
sumber
sumber
sumber