Entonces, estoy trabajando en un entorno UNIX y noté que dentro de mi directorio de trabajo, que está a millas de distancia de mi hogar UNIX, hay un ~
.
Ahora, una vez en el pasado, lo hice rm -rf ~
desde mi directorio de trabajo y terminé borrando completamente mi directorio de inicio y tuve que involucrarlo.
No quiero volver a hacerlo. Al mismo tiempo, quiero saber
¿Por qué se
~
crea en mi directorio de trabajo? ¿Es un deslizamiento de dedo defectuoso al guardar (:w!
pero lo que sucede es:w~
?!)Antes de registrarse, hay una secuencia de comandos que busca archivos o carpetas adicionales que p4 desconoce, por lo que definitivamente esto
~
podría causar un problema. Entonces, ¿cómo puedo eliminar~
mi directorio de trabajo y al mismo tiempo no borrar mi casa?
Tengo un comando de copia de seguridad llamado del
que uso en lugar de rm -rf
. Simplemente coloca cosas en una ubicación temporal. Podría usar eso y deshacerme del ~
. Pero estoy más interesado en saber por qué sucede esto y cómo puedo eliminarlo.
/home/yourUserName/~
para acceder al directorio llamado~
.Respuestas:
Cítelo:
O referencia por una ruta, en lugar de solo un nombre base:
Tenga en cuenta que, a pesar de ser un nombre de carácter único de aspecto gracioso, esto no es conceptualmente diferente de si hubiera creado un archivo llamado
SOME$PATH
haciendoY trató de eliminarlo haciendo:
( Advertencia: la variable
SOME$PATH
no se cita por el bien del ejemplo aquí. Normalmente se incluiría entre comillas'SOME$PATH'
)En ambos casos, el shell está expandiendo el nombre que le das, y debes evitarlo.
Además: ¡No lo use
rm -rf
para eliminar un archivo! Todo el propósitorm -r
es decirrm
que está bien eliminar directorios. Si no desea eliminar accidentalmente directorios completos mientras intenta eliminar archivos, ¡no los pase habitualmente-r
!fuente
:w~
en vim creó un archivo llamado~
.rm ~
devueltocannot remove /home/seth it is a directory
.rm "~"
eliminó el archivo . Solo para subrayar , no pase-rf
automáticamente .kill -9
por defecto, lo que he visto.rm -i $FOO
intencionalmente no cita la variable por el bien del ejemplo, pero aún así: mostrar un ejemplo de shell que involucrarm
y una variable no citada como argumento es MUY MALO , lo siento, independiente del contexto. Estoy seguro de que incluso se puede probar :) Agregaré una nota, pero ¿tal vez podría cambiar el ejemplo, un poco?SOME/bin:/usr/bin
ninguna parte de su sistema de archivos. :)La tilde cuando se usa solo en el contexto de
ls ~
listará su directorio de inicio como ~ es un acceso directo a su directorio de inicio. Si lo hicistels ~brown
, enumerarás el contenido del directorio de inicio de brown.VIM, a menos que se le indique lo contrario, creará una copia de seguridad de un archivo modificado: myFile myFile ~.
Este comportamiento es bueno ya que crea una copia de seguridad, pero si no lo desea, agregue un archivo .vimrc: no configure ninguna copia de seguridad (a la que acabo de acceder
vi ~/.vimrc
).Y, por supuesto, como dijeron otros, si tiene un archivo llamado ~, simplemente escape del carácter como \ ~
fuente
Esto podría ser efectuado por mistypes. Si su
TERM=xterm
configuración es similar a la mía, prácticamente todas las teclas de función en su teclado enviarán secuencias de escape como ...Más de la mitad de la salida de
infocmp -1
contiene~
tilde se escapa en mi máquina, y no entiendo qué hacen la mayoría de ellos. Sé quezsh
al menos en realidad se come la porción escapada de la cuerda en la mayoría de los casos, y deja solo la~
tilde .Por ejemplo, escribir
echo
a continuación,<space>
a continuación,F6
y<return>
las impresiones ...La secuencia de escape real enviada es ...
Curiosamente, hay otras de estas secuencias de escape que contienen
>
caracteres.Esos son escapes de uso común: cadenas de reinicio e inicialización. No es difícil imaginar que un teclado caído o un golpe de botón de algún tipo cuando un shell interactivo está esperando la entrada podría dar lugar a
~
archivos truncados aleatoriamente en todo su sistema de archivos. Al menos, ocasionalmente aparece en la mía.fuente