Muitos shells expandem um caractere til inicial ( ~
) antes de uma barra em
o início de um nome de caminho no caminho absoluto do seu diretório HOME.
Você pode evitar essa expansão do shell citando o caractere til ou
certificando-se de que o til não inicie o nome do caminho:
$ echo "$HOME"
/home/idallen
$ echo ~
/home/idallen
$ echo "~"
~
$ echo \~
~
$ echo ./~
./~
Não há nada especial sobre um caracter til no próprio Unix, então você pode criar um diretório chamado til, desde que você esconda o til de expansão pelo shell usando qualquer um dos métodos acima:
$ mkdir "~"
$ ls -ld '~'
drwxr-xr-x 2 idallen idallen 40 Oct 22 08:45 ~
$ ls -ld \~
drwxr-xr-x 2 idallen idallen 40 Oct 22 08:45 ~
$ ls -ld ./~
drwxr-xr-x 2 idallen idallen 40 Oct 22 08:45 ~
$ ls -ld /tmp/idallen/~
drwxr-xr-x 2 idallen idallen 40 Oct 22 08:45 /tmp/idallen/~
Se você não ocultar o caractere til inicial da casca, a casca
expande para ser o seu diretório HOME. Adicionando um comando echo
na frente
de uma linha de comando pode mostrar o que o shell faz para sua linha de comando
antes de ser executado:
$ echo cd ~
cd /home/idallen # would go to $HOME directory
$ echo cd ./~
cd ./~ # would go into directory named ~
Você descobriu essa necessidade de citar o til, porque os comandos abaixo teria efeitos muito diferentes, dependendo da expansão da sua concha um til principal sem aspas:
$ echo rm -r ~
rm -r /home/idallen # would remove the $HOME directory
$ echo rm -r "~"
rm -r ~ # would remove the directory named ~
$ echo rm -r ./~
rm -r ./~ # would remove the directory named ~
$ echo rm -r /tmp/idallen/~
rm -r /tmp/idallen/~ # would remove the directory named ~
Apenas os tis sem nomes no início dos nomes de caminho se expandem para ser o seu diretório HOME.