Então, eu estou trabalhando em um ambiente UNIX e notei que dentro do meu diretório de trabalho, que fica a quilômetros de distância da minha casa UNIX, existe um ~
.
Agora, uma vez no passado, eu fiz rm -rf ~
do meu diretório de trabalho e acabei apagando completamente o meu diretório pessoal e tive que envolver a TI.
Eu não quero fazer isso de novo. Ao mesmo tempo, quero saber
Por que é
~
criado no meu diretório de trabalho? É um deslizamento incorreto do dedo ao salvar (:w!
mas o que acontece é:w~
? !!)Antes de fazer o check-in, há um script que procura por arquivos ou pastas extras que a p4 não está ciente, portanto, isso
~
pode causar um problema. Então, como posso remover o~
diretório do meu trabalho e, ao mesmo tempo, não apagar minha casa?
Eu tenho um comando de backup chamado del
que eu uso em vez de rm -rf
. Apenas coloca as coisas em um local temporário. Eu poderia usar isso e me livrar do ~
. Mas estou mais interessado em saber por que isso acontece e como posso removê-lo?
/home/yourUserName/~
para acessar o diretório chamado~
.Respostas:
Cite-o:
Ou referencie-o por um caminho, em vez de apenas um nome de base:
Observe que, apesar de ser um nome de caractere único com aparência engraçada, conceitualmente não é diferente de se você tivesse criado um arquivo nomeado
SOME$PATH
executandoE tentou removê-lo fazendo:
( Aviso: a variável
SOME$PATH
não é citada para o exemplo aqui. Normalmente, ela estaria entre aspas'SOME$PATH'
)Nos dois casos, o shell está expandindo o nome que você fornece e você precisa impedir isso.
Além disso: não use
rm -rf
para remover um arquivo! O objetivorm -r
é dizer querm
não há problema em remover diretórios. Se você não deseja remover acidentalmente diretórios inteiros ao tentar remover arquivos, não passe habitualmente-r
!fonte
:w~
no vim criou um arquivo chamado~
.rm ~
retornadocannot remove /home/seth it is a directory
.rm "~"
removeu o arquivo . Apenas para sublinhar não passa-rf
automaticamente .kill -9
por padrão, o que eu já vi.rm -i $FOO
intencionalmente não cita a variável pelo bem do exemplo, mas ainda assim: mostrar um exemplo de shell envolvendorm
e uma variável não citada como argumento é MUITO RUIM , desculpe, independentemente do contexto. Tenho certeza de que isso pode ser comprovado :) vou acrescentar uma nota - mas talvez você possa mudar um pouco o exemplo?SOME/bin:/usr/bin
em nenhum lugar do sistema de arquivos. :)O til quando usado sozinho no contexto de
ls ~
listará o diretório inicial como ~ é um atalho para o diretório inicial. Se você o fezls ~brown
, listará o conteúdo do diretório inicial de brown.O VIM, salvo indicação em contrário, criará uma cópia de backup de um arquivo alterado: myFile myFile ~.
Esse comportamento é bom, pois cria um backup, mas se você não quiser, adicione ao arquivo .vimrc: set no backup (com o qual acabei de acessar
vi ~/.vimrc
).E, é claro, como outros disseram, se você tiver um arquivo chamado ~, simplesmente escape do caractere como \ ~
fonte
Isso pode ser efetuado por erros de digitação. Se a sua
TERM=xterm
configuração for parecida com a minha, praticamente todas as teclas de função do seu teclado enviarão seqüências de escape como ...Mais da metade da saída de
infocmp -1
contém~
contornos de til na minha máquina - e não consigo entender o que a maioria deles faz. Eu sei quezsh
pelo menos na verdade come a parte escapada da corda na maioria dos casos - e deixa apenas o~
til .Por exemplo, digitando
echo
then<space>
thenF6
e<return>
imprime ...A sequência de escape real enviada é ...
Curiosamente, existem outras dessas seqüências de escape que contêm
>
caracteres.Esses são escapes comumente usados - sequências de redefinição e inicialização. Não é difícil imaginar que um teclado solto ou um esmagamento de botão de algum tipo quando um shell interativo aguarda entrada possa resultar em
~
arquivos truncados aleatoriamente ocorrendo em todo o sistema de arquivos. Pelo menos, ocasionalmente surge na minha.fonte