Non proprio un bash
fuga problema, è scp
trattare x:
come [@ utente] prefisso ospite, provare:
scp ./file:\ name.mp4 [email protected]:"/path/to/dest"
Utilizzando relativi (ad esempio ./
) o percorsi completi (/path/to/source
) impedisce questo comportamento - la presenza di /
prima di un :
causa l'arresto di OpenSSH per un possibile prefisso host:
o [email protected]:
. OpenSSH's scp
solo nomi di casi speciali che iniziano con con due punti che consentono a quelli di funzionare senza problemi, non ha supporto per l'escape di un :
nel senso normale, e non ha altra nozione di nomi host validi quindi quasi qualsiasi nome file con una :
può causa questo.
(A causa di analisi semplicistica di OpenSSH di []
indirizzi IPv6 chiusi, si può con successo scp
file contenenti :
che iniziano con [
, o contenere @[
prima della :
e non contengono ]:
, ma questo non è generalmente utile ;-)
(il testo che segue è stato scritto quando il original question era Come faccio a scappare i due punti in bash? Essa si applica a questa situazione, ma non a scp
come nessuna quantità di guscio di fuga aiuterà lì.)
Per rispondere alla domanda su come per fuggire :
, non è necessario, ma "\:
" funziona.Luoghi che un :
è usato:
- il comando nullo
:
, non c'è bisogno di fuggire, anche se è possibile, proprio come \e\c\h\o foo
che ha alcun effetto sul comando ("nessun effetto" non è del tutto vero, se a fuggire uno o più caratteri che impedirà un alias ci si allinea)
PATH
(e altri, CDPATH
, MAILPATH
) in fuga i valori non ha alcun effetto utile (sono stato in grado di eseguire un programma nel mio percorso da una directory contenente un :
, che è un po 'inaspettato)
- espansione parametro
${name:-x}
e più, name
deve essere [a-zA-Z_][a-zA-Z0-9_]
, quindi nessun bisogno di sfuggire nomi variabili, e poiché non c'è ambiguità, senza bisogno di sfuggire successiva :
nelle altre varianti di espansione parametro
? :
ternario opera solo su variabili e numeri, nessun bisogno per sfuggire
==
e =~
con le classi nel modello come [[:digit:]]
, si può sfuggire con \:
ma sono in perdita quanto a come questo potrebbe mai essere utile ...
- all'interno di nomi di comando o funzione, non c'è bisogno per sfuggire,
\:
non ha effetto utile .210
(Si noti che il comando nullo è solo :
, si può avere un comando o funzione denominata come ":foo
" e può essere invocati senza sfuggire, sotto questo aspetto è diverso per #
dove un comando chiamato #foo
avrebbe bisogno di essere sfuggito.)
fonte
2013-02-05 23:16:26
Lo stesso problema interessa 'rsync'. Fortunatamente, la stessa soluzione, con il prefisso dei nomi dei file con '. /', Aiuta anche lì. –