Estoy buscando una solución que se utilice como respuesta a "rm: ¿eliminar el archivo regular protegido contra escritura [x]?"
Estaba pensando en emitir un personaje seguido de un retorno de carro varias veces, en bashrc. ¿Como hacemos eso?
Estoy buscando una solución que se utilice como respuesta a "rm: ¿eliminar el archivo regular protegido contra escritura [x]?"
Estaba pensando en emitir un personaje seguido de un retorno de carro varias veces, en bashrc. ¿Como hacemos eso?
Respuestas:
Editar según la pregunta actualizada:
Para evitar que se le pregunte si desea eliminar archivos, agregue la -f
opción ("forzar"):
rm -f /path/to/file
Esto tiene un efecto secundario que debe tener en cuenta: si alguna de las rutas dadas no existe, no informará de esto y volverá con éxito:
$ rm -f /nonexistent/path
$ echo $?
0
Respuesta original:
Aquí hay una solución simple:
yes "$string" | head -n $number | tr $'\n' $'\r'
yes
repite cualquier cadena que le des infinitamente, separada por nuevas líneas. head
lo detiene varias $number
veces y tr
traduce las nuevas líneas a retornos de carro. Es posible que no vea ningún resultado debido a los retornos de carro, pero pasarlo a este comando (en bash
) debería ilustrarlo:
printf %q "$(yes "$string" | head -n $number | tr $'\n' $'\r')"
Los usuarios sin bash
tubo de lata el resultado de od
, hexdump
o xxd
para ver los caracteres reales devueltos.
El otro problema con el que me encuentro de vez en cuando es que rm
tiene un alias rm -i
, algo como esto en / etc / bashrc:
alias rm='rm -i'
En ese caso, puedes unalias rm
usar este truco que descubrí hace años o poner una barra diagonal inversa frente a un comando con alias para ignorar el alias solo esa vez, por ejemplo:
\rm somefile
Puede obtener más información sobre los alias a través de un artículo en Nixcraft .
rm
está codificado para preguntar "interactivamente" (espera de la entrada del usuario) en archivos protegidos contra escritura. Hay dos métodos para evitar rm
preguntar:
rm -rf somedir
y
rm -r --interactive=never somedir
(ambos también funcionan sin -r
eliminar archivos en lugar de directorios)
explicación:
-f
hace rm
para "ignorar los archivos y argumentos inexistentes, nunca preguntar".
--interactive=never
hace lo que dice: nunca seas interactivo. en otras palabras: nunca preguntar.
La diferencia entre -f
y --interactive=never
es esta parte: "ignorar los archivos y argumentos inexistentes".
comparar:
$ rm -rf nonexistingname
$ echo $?
0
y
$ rm -r --interactive=never nonexistingname
rm: cannot remove 'nonexistingname': No such file or directory
$ echo $?
1
La diferencia es principalmente interesante cuando se escriben guiones en los que nunca quieres rm
ser interactivo pero aún quieres manejar errores.
resumen: en uso de línea de comando rm -rf
. en uso de guiones rm -r --interactive=never
.
para obtener una respuesta a la pregunta indicada ("Cómo evitar la necesidad de emitir" y "varias veces al eliminar el archivo protegido") consulte https://askubuntu.com/questions/338857/automatically-enter-input-in-command-line / 338860 # 338860
Yo también me encontré con el mismo problema. La respuesta anterior es solo para un archivo, pero si desea ignorar muchos sí.
Puedes usar
sudo rm -r /path/to/directory
para eliminar todos los archivos regulares protegidos contra escritura