Elimine un archivo llamado "-f" o "-r" [duplicado]

Respuestas:

1

Puede utilizar rm ./'-f'y rm ./'-r', rm -i ./*o rm -i ./-*. Estas soluciones son ampliamente conocidas.

Larssend
fuente
Gracias Larssend, ¿cuál es el propósito de ./?
Lin Ma
1
./significa 'directorio de trabajo actual'. rmpensaría -fy -rson argumentos / opciones en lugar del nombre de archivo real sin él.
Larssend
4

La solución de Larssend (especificando un directorio actual antes de especificar el nombre del archivo) funciona bien. Sin embargo, solo para darle otra solución:

rm - -f

Entonces, pase un parámetro de dos guiones antes de especificar el nombre de archivo desafiante.

El - significa "dejar de tratar los próximos caracteres como opciones", por lo que los guiones dejarán de actuar como caracteres especiales en los parámetros posteriores. Ayuda a garantizar que un archivo que comienza con un guión no haga que especifique accidentalmente algunas opciones no deseadas. Esta es una función de programa, no una función de shell, por lo que el soporte para esta función puede variar entre programas, pero muchos programas estándar de Unix lo admiten.

TOOGAM
fuente
Gracias TOOGAM, usted mencionó, "deje de tratar a los próximos personajes como opciones", confundido y ¿quiere decir que no trata a los próximos personajes como opciones, entonces -f es tratado como nombre de archivo?
Lin Ma
1
El nombre de archivo es un parámetro que escribe, también conocido como "argumento" recibido por el programa. Sin embargo, un nombre de archivo no es una opción. Un nombre de archivo no es una "opción" que altera principalmente el funcionamiento del programa. Entonces, al abandonar el comportamiento de tratar a los próximos caracteres (la "-f") como una opción potencial, esos caracteres ya no se verifican para ver cómo se ejecutará "rm". El resultado es que los caracteres pierden cualquier tipo de significado especial, por lo que "rm" hará la otra cosa más natural que podría hacer, que es tratar los caracteres como un nombre de archivo.
TOOGAM