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'
yes
mengulangi setiap string yang Anda berikan tanpa batas, dipisahkan oleh baris baru. head
menghentikannya setelah beberapa $number
kali, dan tr
menerjemahkan 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 bash
dapat menyalurkan hasilnya ke od
, hexdump
atau xxd
untuk melihat karakter yang sebenarnya dikembalikan.
Masalah lain yang sering saya rm
temui adalah, alias rm -i
, seperti ini di / etc / bashrc:
alias rm='rm -i'
Dalam hal ini Anda bisa unalias rm
atau 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 .
rm
hardcoded untuk bertanya "secara interaktif" (prompt menunggu input pengguna) pada file yang dilindungi tulis. ada dua metode untuk mencegah rm
bertanya:
rm -rf somedir
dan
rm -r --interactive=never somedir
(keduanya juga berfungsi tanpa -r
saat menghapus file, bukan dirs)
penjelasan:
-f
membuat rm
untuk "mengabaikan file dan argumen yang tidak ada, tidak pernah meminta".
--interactive=never
melakukan apa yang dikatakannya: tidak pernah interaktif. dengan kata lain: tidak pernah cepat.
perbedaan antara -f
dan --interactive=never
merupakan 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 rm
interaktif 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