Respuestas:
La solución más o menos definitiva cuando se trata de archivos que no se pueden eliminar por medios normales:
ls -il
La primera columna mostrará el número de inodo de los archivos.
find . -inum [inode-number] -exec rm -i {} \;
Esto eliminará el archivo con el número de inodo especificado después de la verificación.
-deletelugar de -exec, luego me di cuenta de que estaba usando, lo rm -icual es una buena idea, así que retrocedí. Lo siento.
Debería poder referirse a ese archivo como ~/~(sin comillas) porque tilde-expansion solo aplica tilde ( ~) al comienzo de la palabra.
rm ./~, por la misma razón que usted dijo
./~literalmente significa "un archivo o carpeta nombrado ~en el directorio actual" . No hay hacks como caracteres de escape o referencias de inodo.
./~sí. Después de cinco años, mi memoria está un poco borrosa, pero creo que es por eso que sugerí en ~/~lugar de lo más normal ./~: la pregunta se refiere específicamente a "un archivo nombrado ~en el directorio de inicio de [OP] "; no "en el directorio actual".
Cítala ( rm '~') o escapa ( rm \~).
Siempre es uno de esos (también para, por ejemplo $), o agregar --para evitar que el nombre del archivo se interprete como argumento: rm -- -ielimina el archivo nombrado -i; También es útil para rm -- *cuando desea eliminar todos los archivos en el directorio actual: No accidental rm -f *solo porque un archivo se llama así.
--solo detiene la interpretación de los siguientes argumentos como parámetros: no impide que el shell realice su expansión (por ejemplo *), que es lo que está sucediendo aquí. (Sé que lo sugirió como alternativa para otras situaciones, pero una advertencia sería buena).