SCP de una sola línea para cargar el archivo al final de la línea

SCP de una sola línea para cargar el archivo al final de la línea

A menudo hago esto:

scp some_file [email protected]

Esto me molesta porque siempre copio y pego esta línea y luego necesito editar la mitad para cambiar el archivo que quiero cargar.

¿Es posible modificar esta línea para que el nombre del archivo esté al final y siga funcionando?

Básicamente, quiero cualquier cadena de caracteres que pueda pegar en un shell, luego escribir un nombre de archivo y hacer que cargue el archivo en scpel servidor.

Respuesta1

¿Por qué no crear un guión súper simple? Simplemente edite un archivo llamado digamos que myscpcontiene

#!/bin/bash
scp $1 [email protected]

y luego chmod +x myscp, para que luego puedas simplemente

./myscp some_file

Todo esto supone que su myscpscript está ubicado en el directorio actual; de lo contrario, agregue la ruta

/path/to/myscp some_file

o mejor aún, agregue la ruta de la ubicación y este y, con suerte, futuros scripts a su archivo $path.

Respuesta2

Una de las posibles soluciones:

(read FILE_NAME; scp "$FILE_NAME" [email protected]) <<< some_file

Respuesta3

Agregue al final de su .bashrco equivalente para su 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
}

Cambie my_function_namesegún sus necesidades.

Ahora puede simplemente invocar la función por su nombre y pasar un archivo como argumento y se probará el acceso de lectura y se ejecutará scpcon ella o se cerrará si no puede leerla.

Tenga en cuenta que lo usé returnen lugar de exitporque su shell interactivo lo cargará y, si lo usa, exitel shell terminará.

Respuesta4

No, no puedes cambiar el orden de los parámetros sin incluirlos en un script de shell, pero podrías...

R='[email protected]'
scp some_file $R
scp other_file $R
...

información relacionada