Uma das possíveis soluções:
(read FILE_NAME; scp "$FILE_NAME" [email protected]) <<< some_file
Costumo fazer isso:
scp some_file [email protected]
Estou incomodado com isso porque sempre copio e colo essa linha e preciso editar o meio para alterar o arquivo que quero carregar.
É possível mexer com esta linha para que o nome do arquivo esteja no final e ainda funcione?
Basicamente eu quero qualquer cadeia de caracteres que eu possa colar em um shell, então digite um nome de arquivo e faça o upload do arquivo com scp
para o servidor.
Uma das possíveis soluções:
(read FILE_NAME; scp "$FILE_NAME" [email protected]) <<< some_file
Por que não criar um script super simples?
Basta editar um arquivo chamado say myscp
contendo
#!/bin/bash
scp $1 [email protected]
e, em seguida, chmod +x myscp
, para que mais tarde você possa simplesmente
./myscp some_file
Isso tudo está assumindo que o script myscp
está localizado no diretório atual, caso contrário, adicione o caminho
/path/to/myscp some_file
ou melhor ainda, adicione o caminho do local e este e -seja futuros scripts para o seu $path
.
Adicione ao final do seu .bashrc
ou equivalente para o seu shell:
my_function_name() {
if [ -r "$1" ]; then
scp "$1" [email protected]
else
echo "File does not exists or can not be read, $1" >&2
return 1
fi
}
Altere my_function_name
de acordo com suas necessidades.
Agora você pode simplesmente invocar a função pelo nome e passar um arquivo como argumento e ele será testado para acesso de leitura e executar scp
com ele ou sair se não puder lê-lo.
Observe que usei return
em vez de exit
porque ele será carregado pelo seu shell interativo e, se você usar exit
, o shell será encerrado.
Use ssh_config
para encurtar seu [email protected]
. Crie um arquivo ~/.ssh/config
com
Host alias
HostName long.server.name.com
User really
e, em seguida, conecte-se simplesmente usando scp some_file alias
.
Não, você não pode alterar a ordem dos parâmetros sem envolvê-los em um shell script, mas você pode ...
R='[email protected]'
scp some_file $R
scp other_file $R
...