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 scp
el servidor.
Respuesta1
¿Por qué no crear un guión súper simple? Simplemente edite un archivo llamado digamos que myscp
contiene
#!/bin/bash
scp $1 [email protected]
y luego chmod +x myscp
, para que luego puedas simplemente
./myscp some_file
Todo esto supone que su myscp
script 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 .bashrc
o 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_name
segú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á scp
con ella o se cerrará si no puede leerla.
Tenga en cuenta que lo usé return
en lugar de exit
porque su shell interactivo lo cargará y, si lo usa, exit
el 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
...