Udało mi się stworzyć katalog o nazwie dosłownie~
.
(Najwyraźniej Python os.mkdir('~/something')
robi to.)
Jak mogę go usunąć, nie nukając domu?
Ponadto, jeśli to pomoże, mam swoją prawdziwą /home
na osobnej partycji. A duplikat ~
znajduje się w ( rzeczywistym ) ~
.
filesystem
directory
UniversallyUniqueID
źródło
źródło
os.mkdir(os.path.expanduser('~/something'))
.os.rmdir('~/something')
usunąć?Odpowiedzi:
Ucieczka
~
z\~
lub używać apostrofów'~'
. więc możeszlub
źródło
rmdir
jest nieniszczący.rmdir
usunie tylko katalogi, które są puste, więc jeśli spróbujesz przejść dormdir
dowolnego katalogu, w którym coś jest w ogóle,rmdir
odmówisz jego usunięcia.~
jest specjalnie rozwinięty tylko na początku „słowa” powłoki.rmdir *
. Ponieważ usuwa tylko puste katalogi, nie musisz się martwić, że spowoduje to destrukcję.ls -d
aby zobaczyć, czy zawiera ono katalog lub plik, który chcesz. Nie potrzeba niczego z efektem podobnym domv
.Co daje Python, odbiera:
Jeśli tak
os.mkdir
, możesz cofnąć to za pomocąos.rmdir
(i podobnie dlaos.makedirs
ios.removedirs
).źródło
Możesz albo zmienić nazwę katalogu, używając odwrotnego ukośnika (zakładając, że działasz w katalogu nadrzędnym katalogu, który chcesz usunąć):
Lub możesz użyć ścieżek względnych z kropką jako katalogu bieżącego (również gdy znajduje się w katalogu nadrzędnym):
Lub możesz użyć pełnej ścieżki bezwzględnej:
I nie martw się,
rmdir
możesz usunąć tylko puste katalogi. Jeśli przypadkowo wpiszesz polecenie, a ścieżka zmieni się w prawdziwy katalog domowy, nie jest to niebezpieczne, ponieważ zawiera pliki:źródło
./~
, aby~/
, niezależnie od katalogu w którym aktualnie jesteś. Podobna sytuacja z pełną ścieżkę bezwzględną.find
rozkaz może czynić takie cuda. Komendada ci i-węzła liczbę plików lub katalogu. Następnie możesz użyć
find
do usunięcia takich plików lub katalogu za pomocą:i
źródło
Co należało zrobić
Powinieneś był wykonać
home=os.path.expanduser("~")
najpierw, a potemos.path.join(home,"something")
. W~
Pythonie jest traktowany jak tekst i nie rozwija się tak jak wbash
innych powłokach.Jak się tego pozbyć
Oprócz wspomnianych już metod, możemy użyć wartości szesnastkowej
~
z tabeli znaków ascii, która w przeciwieństwie do faktycznej~
nie rozwija się do katalogu domowego użytkownika w wierszu poleceń (w przypadku, gdy zastanawiasz się, kiedy tylda pojawia się na początku słowo, rozwija się do katalogu domowego użytkownika. Porównajls ~
ils $'\x7e'
).Oto jak to będzie działać:
źródło