Ich mache das oft:
scp some_file [email protected]
Mich ärgert das, weil ich diese Zeile immer kopiere und einfüge und dann die Mitte bearbeiten muss, um die Datei zu ändern, die ich hochladen möchte.
Ist es möglich, diese Zeile so zu manipulieren, dass der Dateiname am Ende steht und es trotzdem noch funktioniert?
scp
Grundsätzlich möchte ich eine beliebige Zeichenfolge, die ich in eine Shell einfügen kann, in die ich dann einen Dateinamen eingebe und die Datei auf den Server hochlade .
Antwort1
Warum nicht ein super-einfaches Skript erstellen? Bearbeiten Sie einfach eine Datei mit dem Namen, myscp
die
#!/bin/bash
scp $1 [email protected]
und dann chmod +x myscp
, damit Sie später einfach
./myscp some_file
Dies alles setzt voraus, dass sich Ihr myscp
Skript im aktuellen Verzeichnis befindet. Andernfalls fügen Sie den Pfad hinzu
/path/to/myscp some_file
oder noch besser, fügen Sie den Pfad des Speicherorts und dieses und – hoffentlich – zukünftige Skripte zu Ihrem hinzu $path
.
Antwort2
Eine der möglichen Lösungen:
(read FILE_NAME; scp "$FILE_NAME" [email protected]) <<< some_file
Antwort3
Fügen Sie am Ende Ihrer .bashrc
oder einer gleichwertigen Funktion für Ihre Shell Folgendes hinzu:
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
}
Passen Sie sich my_function_name
Ihren Bedürfnissen an.
Jetzt können Sie die Funktion einfach mit Namen aufrufen und eine Datei als Argument übergeben. Sie wird dann auf Lesezugriff geprüft und scp
damit ausgeführt oder beendet, wenn sie nicht gelesen werden kann.
Beachten Sie, dass ich return
anstelle von verwendet habe exit
, da es von Ihrer interaktiven Shell geladen wird und exit
die Shell bei Verwendung beendet wird.
Antwort4
Nein, Sie können die Reihenfolge der Parameter nicht ändern, ohne sie in ein Shell-Skript einzubinden, aber Sie könnten ...
R='[email protected]'
scp some_file $R
scp other_file $R
...