~ é 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
~+ ~-