Eu acidentalmente sai do vim com: x! ~ e agora meu ~ aparece em um caminho diferente

0

Ao sair de um arquivo como root, digitei :x!~ e pressione Enter. Agora eu tenho o seguinte:

root@host:/etc/shinken/services$ ll
total 64K
-rw-r--r--  1     0     0  515 Sep  1 18:24 ~
drwxr-xr-x  2 10003 10003 4.0K Sep  1 18:24 .
drwxr-xr-x 29 10003 10003 4.0K Aug  8 17:11 ..
<other files omitted> 

Se eu cd ~ , isso me leva a /root como esperado. Como posso eliminar o novo ~ sem eliminar acidentalmente o meu actual casa?

    
por MrDuk 01.09.2017 / 20:34

2 respostas

3

cd /etc/shinken/services
rm ./~

Não há muito a dizer sobre isso realmente. Especificando ./ na frente de ~ você para o shell de executar a expansão do til, e ele será tratado como o nome de um arquivo no diretório atual.

Outra opção teria sido

cd /etc/shinken/services
rm '~'

ou apenas

rm /etc/shinken/services/~

No Vi e no Vim, :x funcionará como :wq e gravará o arquivo antes de sair. Anexando um nome de arquivo ( ~ neste caso), o arquivo com o nome dado será gravado. A diferença entre os dois comandos é que :x apenas grava o arquivo se o buffer atual tiver sido modificado desde o último salvamento. O ! substitui a gravação em um arquivo somente leitura.

    
por 01.09.2017 / 20:39
1
rm -- '~'

As aspas simples ao redor do ~ stop bash expandem o caminho e simplesmente o passam para rm .

-- impede que rm interprete mais argumentos como sinalizadores e assume que eles são todos arquivos (não é tão importante neste caso, mas útil se você tiver um arquivo com um - ).

Você pode testar isso com ls primeiro.

ls -- '~'

Por exemplo, em um diretório que não contenha um literal '~', você obteria

ls: cannot access '~': No such file or directory

Mostrando que ls recebeu o caminho não modificado.

    
por 01.09.2017 / 20:40