GNU/Linux >> Belajar Linux >  >> Linux

Opsi Rm Untuk Gagal Pada File yang Tidak Ada?

man halaman rm di GNU coreutils 8.12.197-032bb menjelaskan -f atau --force opsi sebagai "abaikan file yang tidak ada, jangan pernah meminta". Tanpa opsi ini, itu akan menghapus file yang ada, tidak pernah meminta, dan mengembalikan kode keluar bukan nol jika salah satu file yang ditentukan tidak ada. Saya ingin melestarikan file jika ada dari file yang ditentukan tidak ada . Apa cara termudah untuk melakukannya?

Kasus penggunaannya adalah keamanan :Jika saya mencoba menghapus file yang tidak ada, mungkin karena ada ekspektasi yang tidak valid (atau bug biasa) dalam perintah. Misalnya rm -rf /usr /lib/nvidia-current/xorg/xorg yang terkenal dapat dihindari dengan banyak cara, salah satunya adalah opsi seperti itu (jelas kecuali jika pengguna secara kebetulan luar biasa memiliki /lib/nvidia-current/xorg/xorg direktori), dan makhluk lain untuk Menggunakan Lebih Banyak Kutipan™. Namun, kutipan tidak selalu cukup. Misalnya, pertimbangkan ssh host '/bin/rm some paths; /bin/bash foo.sh' – Jika saya lupa titik koma atau menyisipkan hampir semua simbol lain seperti titik dua atau koma, itu akan mencoba untuk menghapus /bin/bash dan ~/foo.sh .

Jawaban yang Diterima:

Saya menggunakan hal semacam ini:

mkdir DELETE && mv "some" "paths" DELETE && rm -rf DELETE

Untuk satu jalur:

mv /some/path DELETE && rm -rf DELETE

Lebih baik lagi, ketik rm command pada baris perintah terpisah:mv /some/path DELETE Masukkan rm -rf DELETE Masukkan . Dengan begitu, satu-satunya rm perintah yang membuatnya menjadi riwayat shell Anda ada di file bernama DELETE , jadi jika Anda menghapus file versi lama, Anda tidak mengambil risiko menghapus versi baru dengan menekan Up secara tidak sengaja beberapa kali salah lalu Masukkan .

Jika Anda ingin sedikit mengotomatisasi:

mv_to_DELETE () {
  mkdir DELETE &&
  mv -- "[email protected]" DELETE/
}
mv_to_DELETE "some" "paths"
rm -rf DELETE

Linux
  1. Hapus file secara rekursif dengan aman:merobek-robek

  2. Rsync Dengan Opsi Hapus, Tapi Pertahankan Apa yang Dihapus?

  3. Hapus pembaruan Windows yang diunduh

  1. File .o vs file .a

  2. Cara lebih cepat untuk menghapus sejumlah besar file

  3. rsync tidak akan menghapus file di tujuan

  1. Linux Hapus File dan Direktori

  2. Bagaimana cara menghapus file .fuse_hidden*?

  3. Hapus file dengan logrotate