Ich habe es geschafft, ein Verzeichnis mit einem wörtlichen Namen zu erstellen~
.
(Anscheinend macht Python das os.mkdir('~/something')
.)
Wie entferne ich es, ohne mein Zuhause zu beschädigen?
Auch wenn es hilft, habe ich mein real /home
auf einer separaten Partition. Und das Duplikat ~
befindet sich in (der realen ) ~
.
filesystem
directory
UniversallyUniqueID
quelle
quelle
os.mkdir(os.path.expanduser('~/something'))
.os.rmdir('~/something')
zu löschen?Antworten:
Entfliehen Sie dem
~
mit\~
oder verwenden Sie einfache Anführungszeichen'~'
. also kannst duoder
quelle
rmdir
ist zerstörungsfrei.rmdir
löscht nur leere Verzeichnisse. Wenn Sie also versuchen,rmdir
ein Verzeichnis zu öffnen, in dem sich überhaupt etwas befindet,rmdir
wird es abgelehnt, es zu löschen.~
wird speziell nur am Anfang einer Shell "Wort" erweitert.rmdir *
. Da nur leere Verzeichnisse entfernt werden, müssen Sie sich keine Sorgen darüber machen, dass etwas zerstörerisch wird.ls -d
, ob er das gewünschte Verzeichnis oder die gewünschte Datei enthält. Keine Notwendigkeit für etwas mit einem Effekt wiemv
.Was Python gibt, nimmt Python weg:
Wenn Sie dies getan haben
os.mkdir
, können Sie es mitos.rmdir
(und ähnlich füros.makedirs
undos.removedirs
) rückgängig machen .quelle
Sie können den Verzeichnisnamen entweder mit einem umgekehrten Schrägstrich wie folgt umgehen (vorausgesetzt, Sie befinden sich im übergeordneten Verzeichnis des zu löschenden Verzeichnisses):
Oder Sie können relative Pfade mit einem Punkt als aktuelles Verzeichnis verwenden (auch im übergeordneten Verzeichnis):
Oder Sie können den vollständigen absoluten Pfad verwenden:
Und keine Sorge,
rmdir
kann nur leere Verzeichnisse entfernen. Wenn Sie versehentlich den Befehl und den Pfad falsch eingeben, um Ihr reales Ausgangsverzeichnis zu ermitteln, besteht keine Gefahr, da er Dateien enthält:quelle
./~
zu erstellen~/
, unabhängig davon, in welchem Verzeichnis Sie sich gerade befinden. Ähnliches gilt für den vollständigen absoluten Pfad.find
Befehl kann solche Wunder tun. Der BefehlGibt Ihnen die Inode-Nummer der Dateien oder des Verzeichnisses. Dann können Sie
find
solche Dateien oder Verzeichnisse löschen mit:und
quelle
Was hätte getan werden sollen
Sie sollten
home=os.path.expanduser("~")
zuerst und dann durchgeführt habenos.path.join(home,"something")
. Das~
wird in Python als Text behandelt und nicht wie inbash
oder in anderen Shells erweitert.Wie man es los wird
Zusätzlich zu den bereits erwähnten Methoden können wir hex-Werte
~
aus der ASCII-Zeichentabelle verwenden, die im Gegensatz zu actual~
nicht auf das Benutzerverzeichnis in der Befehlszeile ausgedehnt werden (falls Sie sich fragen, wann Tilde am Anfang von erscheint) ein Wort, es erweitert sich zum Home-Verzeichnis des Benutzers. Vergleichen Siels ~
undls $'\x7e'
).So würde es funktionieren:
quelle