Como converter um caminho do Windows (com barras invertidas) para o formato Unix no Babun / Cygwin

8

Estou usando o Windows e escrevendo scripts shell para rodar em Babun (uma API POSIX).

Eu preciso ler um caminho de uma variável de ambiente, $ USERPROFILE, e convertê-lo em estilo unix (substitua \ by /, c: \ por / c /) para poder usá-lo posteriormente no script.

O problema é que sempre que faço eco do conteúdo de $ USERPROFILE, as barras invertidas são interpretadas como caracteres de escape e recebo um resultado inesperado (as letras "aleatoriamente" se transformam em caracteres especiais como \ n, \ f, etc). Então eu não consigo fazer o eco em sed por exemplo.

    
por Vituel 13.01.2016 / 10:09

1 resposta

9

O Cygwin fornece o muito útil utilitário cygpath para converter caminhos de formato Unix e Windows. No Guia do usuário do Cygwin

The cygpath program is a utility that converts Windows native filenames to Cygwin POSIX-style pathnames and vice versa. It can be used when a Cygwin program needs to pass a file name to a native Windows program, or expects to get a file name from a native Windows program. Alternatively, cygpath can output information about the location of important system directories in either format.

Ele pode converter para / de caminhos de formato no estilo Windows ou DOS, por exemplo, para imprimir o formato Unix de um caminho do Windows:

$ cygpath -u "$USERPROFILE"
/cygdrive/c/Users/anthony

Consulte o Guia do usuário do Cygwin para obter detalhes completos e cygpath --help para informações básicas de uso.

    
por 13.01.2016 / 10:23