[Shell] Convertion de chemins Applescript -> POSIX

Le
Olivier Croquette
Salut!

Ne trouvant rien d'autre, je me suis fait le script bash suivant pour
convertir des chemins à la "X:Y:Z" en "/Volumes/X/Y/Z"

#!/bin/bash

for f in "$@" ; do
osascript -e "POSIX path of "$f""
done


Le problème est que c'est terriblement lent. Y a-t'il des alternatives?

PS: quelque connait l'histoire et ne nom exact de ce format de chemin
X:Y:Z? Ca vient de MacOS Classic?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
laurent.pertois
Le #6659761
Olivier Croquette
PS: quelque connait l'histoire et ne nom exact de ce format de chemin
X:Y:Z? Ca vient de MacOS Classic?


Yep, le ":" était alors le séparateur de chemin de fichiers. D'ailleurs,
c'était le caractère interdit dans les noms de fichiers,
automatiquement, en tous cas dans le Finder, remplacé par un "-". Si tu
essaies de nommer un fichier dans le Finder de Mac OS X avec un ":" il
te l'interdit mais ne renomme plus automatiquement.

Par contre, tu peux mettre des "/" qui seront alors vu, dans ton shell,
comme des ":". De même, en ligne de commande, tu peux écrire des ":" qui
seront vus, dans le Finder, comme des "/".

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.

Olivier Croquette
Le #6660171
Laurent Pertois wrote, On 19/05/08 15:16:
Par contre, tu peux mettre des "/" qui seront alors vu, dans ton shell,
comme des ":". De même, en ligne de commande, tu peux écrire des ":" qui
seront vus, dans le Finder, comme des "/".


Très marrant, même si pas très utile et même peut-être dangeureux, merci
pour l'info!

Nicolas-MICHEL'_remove_'
Le #6660151
Olivier Croquette
Le problème est que c'est terriblement lent. Y a-t'il des alternatives?


On parle bien de shell script ?

sed non ?

là j'ai la flemme de te l'écrire mais ça doit pouvoir se faire :)

--
Nicolas - MICHEL at bluewin point ch
AIM : michelnicolas

Olivier Croquette
Le #6660691
Nicolas MICHEL wrote, On 19/05/08 16:12:
On parle bien de shell script ?


Oui.

sed non ?


Non :)
C'est pas aussi facile que de remplacer les : par des /, il faut aussi
mettre /Volumes devant le cas échéant, et comme je viens de l'apprendre,
remplacer les / par des : aussi (cf message de Laurent).
Je sais pas combien d'exceptions il y a encore... Je préfèrerai une
solution "système".

laurent.pertois
Le #6660681
Olivier Croquette
Laurent Pertois wrote, On 19/05/08 15:16:
Par contre, tu peux mettre des "/" qui seront alors vu, dans ton shell,
comme des ":". De même, en ligne de commande, tu peux écrire des ":" qui
seront vus, dans le Finder, comme des "/".


Très marrant, même si pas très utile et même peut-être dangeureux, merci
pour l'info!


Bah, Apple a cherché à faire simple pour l'utilisateur de base, celui
qui ne voit que le Finder et qui avait déjà des fichiers créés sur Mac
OS pré-X et potentiellement des "/" dans le nom (et j'en connais plein).

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.


Patrick Stadelmann
Le #6665171
In article Olivier Croquette
Salut!

Ne trouvant rien d'autre, je me suis fait le script bash suivant pour
convertir des chemins à la "X:Y:Z" en "/Volumes/X/Y/Z"


osascript -e 'POSIX path of "Backup:"'

--> /Volumes/Backup/

Patrick
--
Patrick Stadelmann
Olivier Croquette
Le #6667151
Patrick Stadelmann wrote, On 20/05/08 9:25:
osascript -e 'POSIX path of "Backup:"'

--> /Volumes/Backup/


Euh, merci, mais relis mon message original sans en sauter les 3/4 :)

Patrick Stadelmann
Le #6668351
In article Olivier Croquette
Patrick Stadelmann wrote, On 20/05/08 9:25:
osascript -e 'POSIX path of "Backup:"'

--> /Volumes/Backup/


Euh, merci, mais relis mon message original sans en sauter les 3/4 :)


C'est destiné à être lu par des humains ce qui suit #!/bin/bash ?

;-)

Patrick
--
Patrick Stadelmann

blanc
Le #6669891
Olivier Croquette
Non :)
C'est pas aussi facile que de remplacer les : par des /, il faut aussi
mettre /Volumes devant le cas échéant, et comme je viens de l'apprendre,
remplacer les / par des : aussi (cf message de Laurent).


Mais si, mais si (en une seule ligne) :

echo "$@"| sed -e 'y#:/#/:#' -e 's/^//Volumes//' -e 's/ /
/Volumes//g'

Attention ne confond pas / avec un V...

Je te laisse rajouter les autres exceptions... :-) (sauf si tu as besoin
d'aide... ;-)

--
JiPaul.
/ /--/--//\ Jean-Paul Blanc
|/| L |\ quelquepart en (somewhere in)
/|| = |||\ FRANCE

Olivier Croquette
Le #6670841
JiPaul wrote, On 20/05/08 19:54:
C'est pas aussi facile que de remplacer les : par des /, il faut aussi
mettre /Volumes devant le cas échéant, et comme je viens de l'apprendre,
remplacer les / par des : aussi (cf message de Laurent).


Mais si, mais si (en une seule ligne) :

echo "$@"| sed -e 'y#:/#/:#' -e 's/^//Volumes//' -e 's/ /
/Volumes//g'

Attention ne confond pas / avec un V...

Je te laisse rajouter les autres exceptions... :-) (sauf si tu as besoin
d'aide... ;-)


Je le répète: la difficulté réside justement dans les exceptions. Un
script sed aussi complexe soit-il sera peut-être rapide, mais
certainement bourré d'erreurs dûes aux cas particuliers, qu'à l'opposé
Apple prend en compte dans "POSIX path of ...".
Certes je trouve la solution osascript trop lente, mais je ne suis pas
prêt à sacrifier la justesse des résultats pour la rapidité...


Publicité
Poster une réponse
Anonyme