2010-04-14 15 views
15

Quando si utilizza Cygwin, copio frequentemente un percorso di Windows e modifica manualmente tutte le barre nel formato Unix. Per esempio, se sto usando Cygwin e bisogno di cambiare directory io entro:Come formattare un percorso dos su un percorso unix sulla riga di comando di cygwin

cd C:\windows\path 

poi modificarla per

cd C:/windows/path 

(In genere, il percorso è molto più lungo di quello). C'è un modo per usare sed, o qualcos'altro per farlo automaticamente? Per esempio, ho provato:

echo C:\windows\path|sed 's|\\|g' 

ma ottenuto il seguente errore

sed: -e expression #1, char 7: unterminated `s' command 

Il mio obiettivo è quello di ridurre la digitazione, quindi forse potrei scrivere un programma che ho potuto chiamare. Idealmente mi digito:

conversionScript cd C:/windows/path 

e questo sarebbe equivalente a digitazione:

cd C:\windows\path 
+0

Il comando 'sed' dovrebbe essere' sed | \\ |/| g' per evitare quell'errore. Gli apici di –

risposta

11

Leggi sul comando cygpath.

somecommand `cygpath -u WIN_PATH` 

ad es.

+0

erano consumati dalla sintassi del markdown. –

1

cmd.exe non ama le virgolette singole. È necessario utilizzare le virgolette

C:\test>echo C:\windows\path|sed "s|\\|/|g" 
C:/windows/path 
27

Grazie a tutti. A quanto pare tutto quello che serve sono i singoli apici di tutto il percorso:

cd 'C: \ windows \ percorso'

e Cygwin convertirà. Cygpath funzionerebbe anche, ma ha anche bisogno delle virgolette singole per impedire alla shell di mangiare i caratteri barra rovesciata.

+1

Funziona anche su mingw32. Grande! – tanascius

1

Si sostituisce back-slash dalla barra utilizzando unix sed

Sotto Io uso stella "*" per separare i campi di direttiva s

 

    sed "s*\\\*/*g" 

Il trucco è quello di utilizzare un back-slash più di voi potrebbe pensare necessario

Problemi correlati