scp mit Sonderzeichen
In einer Linux-Shell gelingt es mir nicht, Dateien über eine verschlüsselte SSH-Verbindung per scp (Secure Copy) herunterzuladen. Die Dateinamen enthalten Leer- und Sonderzeichen (etwa „Vortrag (Draft).pdf”). Selbst wenn ich den Namen in Anführungszeichen oder Hochkommas einschließe, meldet die Bash einen Fehler oder scp findet die Datei nicht. Muss ich in Zukunft auf Umlaute und Leerzeichen verzichten?
In einer Linux-Shell gelingt es mir nicht, Dateien über eine verschlüsselte SSH-Verbindung per scp (Secure Copy) herunterzuladen. Die Dateinamen enthalten Leer- und Sonderzeichen (etwa „Vortrag (Draft).pdf”). Selbst wenn ich den Namen in Anführungszeichen oder Hochkommas einschließe, meldet die Bash einen Fehler oder scp findet die Datei nicht. Muss ich in Zukunft auf Umlaute und Leerzeichen verzichten?
Damit die scp-Übertragung klappt, müssen Sie den zu kopierenden Pfad in doppelte und das Ganze zusätzlich noch einmal in einzelne Anführungszeichen einschließen - etwa so:
scp '"benutzer@host:Vortrag (Draft).pdf"'
Grund dafür ist die Arbeitsweise von scp : Der Server-Rechner ruft für den Versand in der Standard-Shell des Benutzers den Befehl scp -f auf, gefolgt vom Dateinamen. Leerzeichen und Klammern interpretiert die Bash aber als Steuerzeichen, als ob sie der Benutzer auf der Kommandozeile eingegeben hätte.
Doppelte Anführungszeichen allein lösen das Problem nicht, weil ja auch auf Ihrem PC zuerst die lokale Bash die Eingabe interpretiert. Bash-Variablen sollten Sie allerdings mit Bedacht verwenden: Innerhalb der doppelt eingeschlossenen Pfade werden diese auf dem Server-PC aufgelöst. (mid) (mid)