Saya mencari solusi untuk digunakan sebagai respons terhadap "rm: hapus file biasa yang dilindungi tulis [x]?"
Saya berpikir untuk mengeluarkan karakter diikuti dengan carriage return untuk beberapa kali, di bashrc. Bagaimana kita melakukannya?
Saya mencari solusi untuk digunakan sebagai respons terhadap "rm: hapus file biasa yang dilindungi tulis [x]?"
Saya berpikir untuk mengeluarkan karakter diikuti dengan carriage return untuk beberapa kali, di bashrc. Bagaimana kita melakukannya?
Jawaban:
Edit berdasarkan pertanyaan yang diperbarui:
Untuk menghindari ditanya tentang menghapus file, tambahkan opsi -f("paksa"):
rm -f /path/to/file
Ini memiliki satu efek samping yang harus Anda perhatikan: Jika salah satu jalur yang diberikan tidak ada, itu tidak akan melaporkan ini, dan itu akan kembali dengan sukses:
$ rm -f /nonexistent/path
$ echo $?
0
Jawaban asli:
Inilah satu solusi sederhana:
yes "$string" | head -n $number | tr $'\n' $'\r'
yesmengulangi setiap string yang Anda berikan tanpa batas, dipisahkan oleh baris baru. headmenghentikannya setelah beberapa $numberkali, dan trmenerjemahkan baris baru ke carriage return. Anda mungkin tidak melihat output apa pun karena carriage return, tetapi meneruskannya ke perintah ini (di bash) harus menggambarkannya:
printf %q "$(yes "$string" | head -n $number | tr $'\n' $'\r')"
Pengguna tanpa bashdapat menyalurkan hasilnya ke od, hexdumpatau xxduntuk melihat karakter yang sebenarnya dikembalikan.
Masalah lain yang sering saya rmtemui adalah, alias rm -i, seperti ini di / etc / bashrc:
alias rm='rm -i'
Dalam hal ini Anda bisa unalias rmatau Anda dapat menggunakan trik ini yang saya temukan bertahun-tahun yang lalu, letakkan backslash di depan perintah yang telah alias, untuk mengabaikan alias hanya sekali itu saja, misalnya:
\rm somefile
Anda dapat mempelajari lebih lanjut tentang alias melalui sebuah artikel di Nixcraft .
rmhardcoded untuk bertanya "secara interaktif" (prompt menunggu input pengguna) pada file yang dilindungi tulis. ada dua metode untuk mencegah rmbertanya:
rm -rf somedir
dan
rm -r --interactive=never somedir
(keduanya juga berfungsi tanpa -rsaat menghapus file, bukan dirs)
penjelasan:
-fmembuat rmuntuk "mengabaikan file dan argumen yang tidak ada, tidak pernah meminta".
--interactive=nevermelakukan apa yang dikatakannya: tidak pernah interaktif. dengan kata lain: tidak pernah cepat.
perbedaan antara -fdan --interactive=nevermerupakan bagian ini: "abaikan file dan argumen yang tidak ada".
membandingkan:
$ rm -rf nonexistingname
$ echo $?
0
dan
$ rm -r --interactive=never nonexistingname
rm: cannot remove 'nonexistingname': No such file or directory
$ echo $?
1
perbedaannya terutama menarik ketika menulis skrip di mana Anda tidak pernah ingin rminteraktif tetapi masih ingin menangani kesalahan.
ringkasan: pada penggunaan baris perintah rm -rf. dalam penggunaan skrip rm -r --interactive=never.
untuk menjawab pertanyaan yang dinyatakan ("Bagaimana cara menghindari kebutuhan untuk mengeluarkan" y "beberapa kali saat menghapus file yang dilindungi") lihat https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line / 338860 # 338860
Saya juga mengalami masalah yang sama. Jawaban di atas hanya untuk satu file tetapi jika Anda ingin mengabaikan banyak ya.
Anda dapat gunakan
sudo rm -r /path/to/directory
untuk menghapus semua file biasa yang dilindungi tulis