Comment convertir un chemin Windows (avec des barres obliques inverses) au format Unix sur Babun / Cygwin

8

J'utilise Windows et j'écris des scripts shell pour fonctionner sur Babun (une API POSIX).

J'ai besoin de lire un chemin à partir d'une variable d'environnement, $ USERPROFILE, et de le convertir en style unix (remplacer \ by /, c: \ by / c /) afin de pouvoir l'utiliser plus tard dans le script.

Le problème est que chaque fois que je fais écho au contenu de $ USERPROFILE, les barres obliques inverses sont interprétées comme des caractères d'échappement et j'obtiens un résultat inattendu (les lettres se transforment "au hasard" en caractères spéciaux comme \ n, \ f, etc.). Je ne peux donc pas en faire écho dans sed par exemple.

Vituel
la source

Réponses:

11

Cygwin fournit l' cygpathutilitaire très utile pour convertir les chemins de format Unix et Windows. Extrait du Guide de l'utilisateur Cygwin

Le cygpathprogramme est un utilitaire qui convertit les noms de fichiers natifs de Windows en chemins d'accès de style Cygwin POSIX et vice versa. Il peut être utilisé lorsqu'un programme Cygwin doit transmettre un nom de fichier à un programme Windows natif ou s'attend à obtenir un nom de fichier à partir d'un programme Windows natif. Vous cygpathpouvez également générer des informations sur l'emplacement des répertoires système importants dans l'un ou l'autre format.

Il peut convertir vers / depuis des chemins de format Windows ou DOS, par exemple pour imprimer le format Unix d'un chemin Windows:

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

Consultez le Guide de l'utilisateur Cygwin pour plus de détails et cygpath --helppour des informations de base sur l'utilisation.

Anthony Geoghegan
la source