Saya memiliki nama direktori yang foo
terletak di ~/Desktop
. Misalkan saya ingin membuat direktori dari terminal dengan nama yang sama dan di lokasi yang sama. Ketika saya mencobanya mkdir
memberikan kesalahan:
mkdir: cannot create directory `/home/nux/Desktop/foo': File exists
Itu masuk akal, tetapi saya ingin mengganti foo
jika ada. Saya sudah melihat-lihat man mkdir
tetapi tidak ada opsi yang melakukan itu.
Jadi bagaimana cara menimpa foo
direktori?
Mengapa tidak mkdir
memiliki opsi untuk melakukan ini?
foo
seperti di hapus semua konten itu?mkdir
memiliki-p
opsi yang mengabaikan jika direktori ada.Jawaban:
Jika tujuan Anda adalah menjalankan perintah satu baris yang:
~/Desktop/foo
jika sudah ada.~/Desktop/foo
jika belum ada.Maka Anda dapat menggunakan:
;
setara dengan baris baru, tetapi ini memungkinkan Anda menjalankan banyak perintah pada satu baris (yaitu, sebagai "perintah tunggal").-f
tanda untuk menghapusnya tanpa mendorong pengguna secara interaktif. Ini tidak apa-apa, tetapi saya sangat merekomendasikan untuk berhati-hatirm -rf ...
. Lihatman rm
detailnya.rm
perintah untuk menyelesaikan sebelummkdir
perintah dijalankan; ini adalah alasan untuk menggunakan;
bukan&
. (Perintah sebelumnya&
berjalan secara tidak sinkron di latar belakang.)mkdir
perintah untuk dijalankan ketikarm
perintah berhasil; ini adalah alasan untuk menggunakan;
bukan||
.mkdir
perintah untuk dijalankan ketikarm
perintah gagal (biasanya kegagalan berarti direktori belum ada); ini adalah alasan untuk menggunakan;
bukan&&
.rm
perintah mungkin gagal bahkan ketika direktori sudah ada, dalam hal inimkdir
perintah akan gagal juga, tapi pesan kesalahan akan masuk akal dan mungkin ada tidak perlu menambahkan langkah pengecekan tengah untukfoo
keberadaan 's sebelum mencoba untuk menciptakannya.Lihat 3.2.3 Daftar dari Perintah dalam Pedoman Bash Reference untuk informasi lebih lanjut dan penjelasan tentang
;
,&
,||
, dan&&
operator.Seperti yang disarankan muru (dan Rinzwind diuraikan ), saya sarankan Anda
rsync
melihat apakah itu akan memenuhi kebutuhan cadangan Anda. Ada beberapa panduan tambahan yang bermanfaat di halaman dokumentasi rsync , serta panduan rsync Ubuntu ini .mkdir
menciptakan direktori ("mk" adalah singkatan dari "make" ). Untuk itu juga menghapus direktori secara rekursif dan semua file di dalamnya akan buruk, karena itu akan melanggar prinsip paling tidak heran dengan cara yang mungkin akan menyebabkan hilangnya data.rmdir
bahkan tidak menghapus direktori yang memiliki file (non-direktori) di dalamnya.rm
memiliki-r
opsi, yang masuk akal karenarm
diharapkan untuk menghapus file (yang tujuannya, sehingga bahaya yang melekat adalah intuitif dan pengguna biasanya tahu untuk berhati-hati ketika menjalankanrm
perintah).sumber
Tidak, tidak ada perintah tunggal untuk melakukan apa yang Anda minta.
Mengapa?
Dalam hal ini, perintah
mkdir
danrm
melakukan apa yang Anda butuhkan, dan bekerja bersama dengan baik, karenarm -r
akan menghapus direktori juga, sehingga selanjutnyamkdir
akan membuat direktori.1 The Art of Unix Programming , Eric S. Raymond, sendiri mengutip Doug McIlroy.
sumber
Perintah untuk menghapus direktori adalah
rm
. Jadi, Anda membutuhkan 2 perintah.Seperti yang ditunjukkan dalam komentar, Anda dapat mengaitkannya dengan
;
(= melakukan keduanya meskipun 1 gagal) atau&&
(= hanya mkdir ketika rm tidak gagal).The
-r
adalah untuk menghapus dirs. Perintah 1 juga menghapus SEMUA isi direktori. Jika itu BUKAN niat Anda baik rm dan mkdir bukan apa yang Anda cari: izin adalahchmod
danchown
.Kemenduaan.
mkdir
berarti membuat direktori. Tidak menghapus dan membuat direktori. Dan karenarm
perintahnya adalah untuk menghapus hal-hal tidak perlu untukrmdir
dapat menghapus direktori.sumber
Untuk melakukannya dengan cara terbersih saya menggunakan ini:
Dan untuk menggunakannya:
Ini memastikan bahwa yang Anda coba hapus adalah direktori dan bukan file:
-d
Periksa apakah direktori dengan nama itu sudah ada. jika demikian, hapus.-f
Pastikan tidak ada file dengan nama ini. jika demikian, cetak pesan kesalahan dan keluar.Buat direktori baru dan gema sukses, atau jika gagal, gema gagal.
sumber