¿Cómo eliminar un nombre de archivo ":?"

¿Cómo eliminar un nombre de archivo ":?"

Creo un nombre de archivo :~en bash shell por accidente

scp foo :~

¿Cómo eliminarlo?

Respuesta1

intentar rm ':?'o rm ":?"orm :\?

Principalmente es necesario citar el nombre del archivo, ya sea con comillas simples o dobles. O escape los caracteres especiales que contenga el nombre del archivo.

Algunos caracteres especiales que puedo contar son:

*
|
$
&
#
<>
;
space/tab/newline
\
brackets/parenthesis/braces
'"`
?
etc

Sugiero utilizar comillas simples para evitar eliminar un archivo con el nombre incorrecto my_fileen lugar de $filecon rm $fileo rm "$file"cuando file='my_file'. El carácter de comilla simple es el único carácter que no se puede citar entre comillas simples en shells tipo Bourne, pero siempre se puede citar el resto del nombre del archivo con '...'y 'mismo como \':

rm -- '-$#~<>'\''"*?[]{}'`

Tenga en cuenta que esto -no es especial para el shell, pero lo es porque, rmsi se encuentra al comienzo de un argumento, se trata como una opción. Aquí --dice rmque los argumentos que siguen no deben tratarse como opciones incluso si comienzan con a -.

Respuesta2

En general, siempre que desee eliminar un archivo con un nombre extraño, puede intentar utilizar el marcador --que indica el final de las opciones. Todo lo que esté después de esa bandera se maneja como un parámetro posicional. (Ver también:¿Qué significa "--" (doble guión)?)

Entonces, eso sería

rm -i -- :?

(Según lo sugerido por @Doug O'Neal, la -iopción le avisa antes de eliminar para asegurarse de que está eliminando el archivo correcto).

Sin embargo, en este caso ?el shell lo expandirá como un carácter global. Entonces lo anterior no funcionará.

En este caso, puede utilizar la función de autocompletar del shell. Vaya al directorio donde está el archivo con un nombre extraño, luego escriba rm :(sin presionar Enter) y luego presione Tabpara recorrer todos los archivos en el directorio actual. El archivo con un nombre extraño aparecerá entrecomillado correctamente.

información relacionada