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 /homeen 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
rmdirNo es destructivo.rmdirsolo eliminará los directorios que estén vacíos, por lo que si intenta conrmdircualquier directorio que contenga algo,rmdirse 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 -dpara 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.makedirsyos.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,
rmdirsolo 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.findEl comando puede hacer tales milagros. El comandole dará un número de inodo de archivos o directorio. Luego puede usar
findpara 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 enbashotros 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