Lost in the shell

Salut la zone,
voilà j’utilise foobar2000 sous Linux avec Wine (qui marche très bien d’ailleurs), et je voudrais faire un petit script pour que je puisse ajouter des mp3 facilement par ligne de commande. La seule difficulté, c’est qu’avec Wine, faut que je fasse des appels du genre « foobar2000 Z:\home\trif\Download\a.mp3 » (et foobar2000 est un autre script shell qui doit faire « wine foobar2000.exe … »

Ainsi, mon script doit rajouter un Z: devant la chaine, et changer tous les / par des \

#!/bin/sh text="/home/trif/Download/a.mp3" text="Z:"$text echo $text text2=`echo $text | sed -e 's=/=\\\\=g'` echo $text2

Donc voici mon code de test, mais je bloque, j’ai un souci : le /t a l’air d’être interprété et il est remplacé par un espace :
ce qui me produit comme affichage :

Z:/home/trif/Download/a.mp3 <--- ligne de controle, juste avant l'étape clé Z:\home rif\Download.mp3 <--- plouf, le /t a disparu, et même le /a

Voilà je suis perdu, je n’arrive pas a trouver la bonne syntaxe avec les ", ’ ,` … ou peut-être c’est une option du sed, ou p’têtre y’a une façon de faire que je ne connais pas ^^

Cordialement, :slight_smile:

j’allais regarder ce que ça donne pour “tester” et débugger, mais chez moi ça marche …

[quote]./trifon.sh
Z:/home/trif/Download/a.mp3
Z:\home\trif\Download\a.mp3[/quote]

Je viens de retester, même en changeant l’encodage du fichier (qui normalement change rien, puisque tout est ASCII), ça me fait toujours le même affichage.

J’ai peur que ce soit plus profond …
je suis sous Ubuntu 7.10
$ bash --version
GNU bash, version 3.2.25(1)-release (i486-pc-linux-gnu)

$ sed --version
GNU sed version 4.1.5

pas cool :confused:

[quote=“Trif0n, post:1, topic: 47307”]#!/bin/sh text="/home/trif/Download/a.mp3" text="Z:"$text echo $text text2=`echo $text | sed -e 's=/=\\\\=g'` echo $text2

Donc voici mon code de test, mais je bloque, j’ai un souci : le /t a l’air d’être interprété et il est remplacé par un espace :
ce qui me produit comme affichage :[/quote]

Si je me trompe pas, c’est le \t (tabulation) et le \a (je sais plus quoi) qui sont interprétés.

En effet, \ est utilisé pour l’échappement, Il faut mettre un \ devant le \ pour que la suite ne soit pas interprétée.

Donc je remplacerais les / par des \.

Mes versions :

[quote]$ bash --version
GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu)
Copyright © 2005 Free Software Foundation, Inc.
$ sed --version
GNU sed version 4.1.5
Copyright © 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.[/quote]

remplace sed par tr de la manière suivante :

#!/bin/sh text="/home/trif/Download/a.mp3" text="Z:"$text echo $text #text2=`echo $text | sed -e 's=/=\\\\=g'` text2=`echo $text | tr '/' '\'` echo $text2

Ca devrait résoudre ton problème.

Je viens d’essayer ton code najmahal, ça me fait le même affichage.

Je suis en train de soupçonner les divers script genre .bashrc . Je viens de le dégager, ça change toujours rien (tout en fermant-réouvrant un nouveau terminal). Je crois qu’il y en a d’autre qui s’occupe de formater mon shell sous Ubuntu … je vais voir, merci à vous.

Tu as suivi un guide particulier pour faire fonctionner foobar2000 sur Ubuntu ? Quand j’avais essayé j’avais des problèmes avec les DLL.

Tu veux transformer /home/trif/Download/a.mp3 en Z:\home\trif\Download\a.mp3 ?

En Python :[code]#!/usr/bin/python

import string
import sys

print “Z:”+sys.argv[1].replace(’/’,"\")[/code]Ça donne ça :$ scripts/trifon.py /home/trif/Download/a.mp3 Z:\home\trif\Download\a.mp3

Et en mettant des / directement ça ne va pas ?

[quote=« Moe, post:8, topic: 47307 »]Tu as suivi un guide particulier pour faire fonctionner foobar2000 sur Ubuntu ? Quand j’avais essayé j’avais des problèmes avec les DLL.

Tu veux transformer /home/trif/Download/a.mp3 en Z:\home\trif\Download\a.mp3 ?

En Python …[/quote]

Merci Moe, ça marche en python … :slight_smile:

Sinon pour foobar sur Ubuntu :

Bon au final, dans /usr/bin, j’ai 2 scripts
un en shell : « foobar2000 »

#!/bin/sh cd /home/trif/.wine/drive_c/Program\ Files/foobar2000/ if [ "$1" != "" ]; then wine foobar2000.exe "$1" else wine foobar2000.exe fi

un en python : « foobar »

[code]#!/usr/bin/python

import string
import sys
import subprocess

args = « Z: »+sys.argv[1].replace(’/’,"\")
subprocess.call([« foobar2000 »,args],shell=False)[/code]

et ainsi, je configure Nautilus pour que les mp3 se lancent avec le programme « foobar ».
Bon le seul truc qui manque, c’est que je peux pas ajouter un mp3 depuis un terminal, car seul Nautilus me file tout le chemin lors du double-click (i.e /home/trif/…) alors que dans un terminal, je ne sais pas faire …

Merci !

[quote=“Trif0n, post:10, topic: 47307”]Merci Moe, ça marche en python … :)[/quote]Le Python c’est le bien. :crying:

Merci pour le guide.

Je sais pas si il y a un truc qui m’échappe mais en tout cas ça marche sur XP :