J'ai réussi à faire un répertoire nommé littéralement~
.
(Apparemment, Python le os.mkdir('~/something')
fait.)
Comment puis-je l'enlever sans détruire ma maison?
Aussi, si cela peut aider, j'ai mon réel /home
sur une partition séparée. Et le duplicata ~
est situé dans (le réel ) ~
.
filesystem
directory
UniversellementUniqueID
la source
la source
os.mkdir(os.path.expanduser('~/something'))
.os.rmdir('~/something')
supprimer?Réponses:
Echappez le
~
avec\~
ou utilisez des guillemets simples'~'
. afin que vous puissiezou
la source
rmdir
est non destructif.rmdir
supprime uniquement les répertoires vides. Par conséquent, si vous essayezrmdir
un répertoire contenant quelque chose,rmdir
refuse de le supprimer.~
n’est développé spécialement que au début d’un "mot" shell.rmdir *
. Comme il ne supprime que les répertoires vides, vous n'avez pas à vous soucier de la destruction de celle-ci.ls -d
pour voir si elle répertorie le répertoire ou le fichier que vous souhaitez. Pas besoin de quoi que ce soit avec un effet commemv
.Ce que python donne, python enlève:
Si vous le faisiez
os.mkdir
, vous pourriez l'annuler avecos.rmdir
(et de même pouros.makedirs
etos.removedirs
).la source
Vous pouvez soit échapper le nom du répertoire en utilisant une barre oblique inverse comme celle-ci (en supposant que vous travaillez dans le répertoire parent de celui que vous souhaitez supprimer):
Ou vous pouvez utiliser des chemins relatifs avec un point comme répertoire actuel (également lorsqu'ils sont situés dans le répertoire parent):
Ou vous pouvez utiliser le chemin absolu complet:
Et pas de soucis,
rmdir
ne peut que supprimer les répertoires vides. Si vous tapez mal la commande par inadvertance et que le chemin est évalué dans votre répertoire personnel, cela n’est pas dangereux car il contient des fichiers:la source
./~
vers~/
, quel que soit le répertoire dans lequel vous vous trouvez. Situation similaire avec le chemin absolu complet.find
le commandement peut faire de tels miracles. La commandevous donnera le numéro d'inode de fichiers ou le répertoire. Ensuite, vous pouvez utiliser
find
pour supprimer ces fichiers ou répertoires en utilisant:et
la source
Ce qui aurait dû être fait
Vous auriez dû jouer d'
home=os.path.expanduser("~")
abord et ensuiteos.path.join(home,"something")
. Le~
est traité comme du texte en python et ne se développe pas comme dans lesbash
autres shells.Comment s'en débarrasser
En plus des méthodes déjà mentionnées, nous pouvons utiliser la valeur hexadécimale pour
~
la table de caractères ascii, qui, contrairement à la valeur actuelle,~
ne s'étend pas au répertoire de base de l'utilisateur en ligne de commande (Si vous vous le demandez, le tilde apparaît au début de un mot, il se développe dans le répertoire de base de l'utilisateur. Comparezls ~
etls $'\x7e'
).Voici comment cela fonctionnerait:
la source