SCP-Einzeiler zum Hochladen der Datei am Zeilenende

SCP-Einzeiler zum Hochladen der Datei am Zeilenende

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?

scpGrundsä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, myscpdie

#!/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 myscpSkript 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 .bashrcoder 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_nameIhren 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 scpdamit ausgeführt oder beendet, wenn sie nicht gelesen werden kann.

Beachten Sie, dass ich returnanstelle von verwendet habe exit, da es von Ihrer interaktiven Shell geladen wird und exitdie 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
...

verwandte Informationen