Am'm noi de la linux, vreau să copiați un fișier de la distanță la sistemul local... acum am'm folosind scp comandă în sistem linux.. am niste foldere sau fișiere de nume sunt cu spații, cand incerc sa copiez acel fisier, se arată mesaj de eroare: "Nu există un astfel de fișier sau director"
Am incercat:
scp [email protected]:'/home/5105/test/gg/Untitled Folder/a/qy.jpg' /var/www/try/
Am vazut unele de referință on-line, dar nu't inteleg perfect, poate nici un ajutor?
cum pot scapa de spații în numele de fișier sau director nume în timpul copierii...
Practic ai nevoie pentru a scăpa de două ori, pentru că-l's a evadat de la nivel local și apoi pe capătul îndepărtat.
Există o serie de opțiuni pe care le puteți face (în bash):
scp [email protected]:"'web/tmp/Master File 18 10 13.xls'" .
scp [email protected]:"web/tmp/Master\ File\ 18\ 10\ 13.xls" .
scp [email protected]:web/tmp/Master\\\ File\\\ 18\\\ 10\\\ 13.xls .
lucrări
scp localhost:"f/a\ b\ c" .
scp localhost:'f/a\ b\ c' .
nu merge
scp localhost:'f/a b c' .
Motivul este faptul că șirul este interpretat de shell înainte de calea este trecut la comanda scp. Deci, atunci când se ajunge la telecomanda de la distanță este în căutarea pentru un șir cu fără șir escape citate și aceasta nu reușește
Pentru a vedea acest lucru în acțiune, începe un shell cu -vx opțiuni ie bash -vx
și se va afișa versiunea interpolată de comanda se execută.
Utilizați 3 backslash-uri pentru a scăpa spații în nume de directoare:
scp user@host:/path/to/directory\\\ cu\\\ spații/fișierul ~/Downloads
ar trebui să copiați pe "Download" directorul de la "dosar" de la distanță director numit `director cu spații.
Am avut foarte mare dificultate obtinerea de acest lucru pentru un shell variabilă conține un nume de fișier cu un spațiu. Pentru unii motiv, folosind
file="foo bar/baz"
scp [email protected]:"'$file'"
la fel ca în @Adrian's răspunsul pare să eșueze.
Se pare că ceea ce funcționează cel mai bine este folosind un parametru de expansiune pentru a adauga bare oblice inverse la spațiu, după cum urmează.
file="foo bar/baz"
file="${file//\ /\\\ }"
scp [email protected]:"$file"
Îmi pare rău pentru utilizarea acestei Linux întrebare pentru a pune acest sfat pentru Powershell pe Windows calculator 10: spațiul char scape cu backslash-uri sau din jur, cu citate n't de lucru pentru mine în acest caz. Nu este eficient, dar am rezolvat-o folosind "?" char loc:
pentru dosarul "tasks.txt Iunie-22.bkp" am descărcat folosind "sarcini.txt?Iunie-22.bkp"