Consegui criar um diretório chamado literalmente~
.
(Aparentemente, o Python os.mkdir('~/something')
faz isso.)
Como removê-lo sem danificar minha casa?
Além disso, se ajudar, tenho o meu real /home
em uma partição separada. E a duplicata ~
está localizada em (o real ) ~
.
filesystem
directory
UniversallyUniqueID
fonte
fonte
os.mkdir(os.path.expanduser('~/something'))
.os.rmdir('~/something')
em excluí-lo?Respostas:
Escape do
~
com\~
ou use aspas simples'~'
. então você podeou
fonte
rmdir
é não destrutivo.rmdir
excluirá apenas diretórios vazios; portanto, se você tentarrmdir
qualquer diretório que contenha alguma coisa,rmdir
recusará excluí-lo.~
é expandido especialmente apenas no início de uma "palavra" do shell.rmdir *
. Como ele remove apenas diretórios vazios, você não precisa se preocupar em fazer algo destrutivo.ls -d
para ver se ele lista o diretório ou arquivo que você deseja. Não há necessidade de nada com um efeito parecidomv
.O que o python fornece, o python tira:
Se você fez
os.mkdir
, você pode desfazê-lo comos.rmdir
(e da mesma forma paraos.makedirs
eos.removedirs
).fonte
Você pode escapar do nome do diretório usando uma barra invertida como esta (supondo que você esteja operando no diretório pai daquele que deseja excluir):
Ou você pode usar caminhos relativos com um ponto como o diretório atual (também quando localizado no diretório pai):
Ou você pode usar o caminho absoluto completo:
E não se preocupe, você
rmdir
pode remover apenas diretórios vazios. Se você digitar acidentalmente o comando e o caminho for avaliado para o diretório inicial real, ele não estará em perigo porque contém arquivos:fonte
./~
para~/
, independentemente de qual diretório você está atualmente em. Situação semelhante com o caminho absoluto completo.find
comando pode fazer esses milagres. O comandolhe dará um número inode de arquivos ou diretório. Em seguida, você pode usar
find
para excluir esses arquivos ou diretório usando:e
fonte
O que deveria ter sido feito
Você deveria ter realizado
home=os.path.expanduser("~")
primeiro e depoisos.path.join(home,"something")
. O~
texto é tratado como texto em python e não se expande como embash
outros shells.Como se livrar dele
Além dos métodos já mencionados, podemos usar o valor hexadecimal
~
da tabela de caracteres ascii, que, diferentemente do real,~
não se expande para o diretório inicial do usuário na linha de comando (caso você esteja se perguntando, quando til aparece no início de uma palavra, ela se expande para o diretório inicial do usuário. Comparels ~
els $'\x7e'
).Veja como isso funcionaria:
fonte