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

8

Estou usando o Windows e escrevendo scripts de shell para executar no Babun (uma API POSIX).

Preciso ler um caminho de uma variável de ambiente, $ USERPROFILE, e convertê-lo para o estilo unix (substituir \ por /, c: \ por / c /) para que eu possa usá-lo posteriormente no script.

O problema é que sempre que ecoo o 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). Portanto, não posso fazer eco no sed, por exemplo.

Vituel
fonte

Respostas:

11

Cygwin fornece o cygpathutilitário muito útil para converter caminhos de formato Unix e Windows. No Guia do Usuário Cygwin

O cygpathprograma é um utilitário que converte nomes de arquivos nativos do Windows em nomes de caminhos no estilo Cygwin POSIX e vice-versa. Pode ser usado quando um programa Cygwin precisa passar um nome de arquivo para um programa nativo do Windows ou espera obter um nome de arquivo de um programa nativo do Windows. Como alternativa, cygpathpode gerar informações sobre a localização de diretórios importantes do sistema em qualquer formato.

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

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

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

Anthony Geoghegan
fonte