~
é o seu diretório inicial.
~foo
é o diretório inicial do usuário foo
, se tal usuário existir, ou apenas um diretório chamado ~foo
, se esse usuário não existir.
Por isso, em:
scp ~Desktop/Volenteer.png [email protected]:~j0h/b
~Desktop
será expandido para o diretório home do usuário Desktop
, se esse usuário existir (e geralmente não existe), ou seja apenas ~Desktop
(um caminho que normalmente também não existe).
Em:
scp ~/Desktop/Volenteer.png [email protected]:~/j0h/b
~/j0h
expandirá para um diretório chamado j0h
in jay
, que, de novo, é improvável que exista.
Não é ~
e ~/
onde a diferença ocorre, mas em ~
e ~foo
.
Além disso, ~
também pode ser usado para navegação no histórico de diretórios:
-
~-
é o diretório de trabalho anterior (como$OLDPWD
) -
~+
é o diretório de trabalho atual (como$PWD
)
Isso não se aplica a scp
, pois você não pode alterar os diretórios no meio de uma operação scp
.
E se você usar pushd
e popd
para manter uma pilha de diretórios, ~N
e ~+N
seria o diretório N
th na pilha de diretórios, como visto na saída de dirs
. ~-N
seria o diretório N
th do final (contando a partir de zero, em ambos os casos). Por exemplo:
$ for i in etc usr var tmp; do pushd /$i; done
/etc ~/.vim
/usr /etc ~/.vim
/var /usr /etc ~/.vim
/tmp /var /usr /etc ~/.vim
$ dirs
/tmp /var /usr /etc ~/.vim
Em seguida, os diretórios na pilha podem ser acessados usando:
/tmp /var /usr /etc ~/.vim
~0 ~1 ~2 ~3 ~4
~+0 ~+1 ~+2 ~+3 ~+4
~-4 ~-3 ~-2 ~-1 ~-0
~+ ~-