Por padrão, scp
caminhos remotos são interpretados em relação ao diretório base, assim você não precisa do ~
:
scp [email protected]:some/file/name filename
baixará some/file/name
do diretório pessoal de user
e o salvará como filename
localmente. Quando você quiser usar um caminho de arquivo absoluto no servidor remoto, inicie-o com /
: scp host:/etc/passwd passwd
.
Estritamente, é possível que o seu servidor esteja interpretando as coisas de maneira diferente. Nesse caso, você poderia colocar ~
em seu script, em vez de repeti-lo na linha de comando toda vez (seja o mais preguiçoso que você quiser!):
scp [email protected]:~/"$location" "$name"
Dessa forma, seu shell nunca terá a chance de interpretá-lo. (Também é possível citar o ~
na linha de comando: \~
ou '~'
, mas isso é mais trabalho do que o necessário.) No entanto, imagino que a primeira abordagem acima funcionará.
Outra observação sobre a variável name
. Você diz que quer que seja apenas o nome do arquivo base. Existe um comando com esse objetivo exato, o comando basename
:
name="$(basename "$location")"
Isso é mais simples do que executar tudo em sed
.