Costumo fazer isso:
scp some_file [email protected]
Fico chateado com isso porque sempre copio e colo essa linha e depois preciso editar o meio para alterar o arquivo que desejo enviar.
É possível mexer nesta linha para que o nome do arquivo fique no final e ainda funcione?
Basicamente, quero qualquer sequência de caracteres que possa colar em um shell, digitar um nome de arquivo e fazer o upload do arquivo para scp
o servidor.
Responder1
Por que não fazer um script super simples? Basta editar um arquivo chamado say myscp
contendo
#!/bin/bash
scp $1 [email protected]
e então chmod +x myscp
, para que mais tarde você possa simplesmente
./myscp some_file
Tudo isso assumindo que seu myscp
script esteja 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, esperançosamente, scripts futuros ao seu arquivo $path
.
Responder2
Uma das soluções possíveis:
(read FILE_NAME; scp "$FILE_NAME" [email protected]) <<< some_file
Responder3
Adicione ao final do seu .bashrc
shell ou equivalente:
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
}
Mude 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 executado scp
com ele ou encerrado se não conseguir 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.
Responder4
Não, você não pode alterar a ordem dos parâmetros sem envolvê-los em um script de shell, mas pode...
R='[email protected]'
scp some_file $R
scp other_file $R
...