Logré hacer un directorio literalmente llamado ~
.
(Aparentemente, Python os.mkdir('~/something')
hace esto).
¿Cómo lo elimino sin bombardear mi casa?
Además, si ayuda, tengo mi real /home
en una partición separada. Y el duplicado ~
se encuentra en (lo real ) ~
.
filesystem
directory
ID universalmente único
fuente
fuente
os.mkdir(os.path.expanduser('~/something'))
.os.rmdir('~/something')
para eliminarlo?Respuestas:
Escápese
~
con\~
o use comillas simples'~'
. así que puedeso
fuente
rmdir
No es destructivo.rmdir
solo eliminará los directorios que estén vacíos, por lo que si intenta conrmdir
cualquier directorio que contenga algo,rmdir
se negará a eliminarlo.~
se expande especialmente solo al comienzo de una "palabra" de shell.rmdir *
. Como solo elimina directorios vacíos, no necesita preocuparse de que haga algo destructivo.ls -d
para ver si muestra el directorio o archivo que desea. No hay necesidad de nada con un efecto comomv
.Lo que Python da, Python quita:
Si lo hiciera
os.mkdir
, podría deshacerlo conos.rmdir
(y de manera similar paraos.makedirs
yos.removedirs
).fuente
Puede escapar del nombre del directorio utilizando una barra invertida como esta (suponiendo que esté operando en el directorio principal del que desea eliminar):
O puede usar rutas relativas con un punto como el directorio actual (también cuando se encuentra en el directorio principal):
O puede usar la ruta absoluta completa:
Y no se preocupe,
rmdir
solo puede eliminar directorios vacíos. Si accidentalmente escribe incorrectamente el comando y la ruta se evaluaría en su directorio de inicio real, no está en peligro porque contiene archivos:fuente
./~
a~/
, independientemente de qué directorio te encuentras. Una situación similar con la ruta absoluta completa.find
El comando puede hacer tales milagros. El comandole dará un número de inodo de archivos o directorio. Luego puede usar
find
para eliminar dichos archivos o directorios usando:y
fuente
Lo que debería haberse hecho
Deberías haber actuado
home=os.path.expanduser("~")
primero y luegoos.path.join(home,"something")
. El~
se trata como texto en Python y no se expande como lo hace enbash
otros shells.Cómo deshacerse de él
Además de los métodos ya mencionados, podemos usar el valor hexadecimal
~
de la tabla de caracteres ascii, que a diferencia del real~
no se expande al directorio de inicio del usuario en la línea de comandos (en caso de que se pregunte, cuando aparece tilde al comienzo de una palabra, se expande al directorio de inicio del usuario. Comparels ~
yls $'\x7e'
).Así es como funcionaría:
fuente