De l'usage du caractère d'échappement (Was Re: Question ffmpeg)
Séb Buch
unfoundnickname at gmail.com
Jeu 12 Mai 08:07:07 UTC 2011
Bonjour,
On 05/11/2011 10:42 PM, Fred Z. Free wrote:
> ca marche mais sans ls !!!!!!!!
> Mais le problème est que les fichiers avec espace (presque tous) il ne
> les prends pas!
J'en déduis que ça ne marche que moyennement dans ce cas là...
Le problème des espaces est une question récurrente sur la liste (en
fait dès qu'on commence à utiliser le shell).
Comme, c'est le matin, que je suis à peu près réveillé et de bonne
humeur (et surtout que j'ai 10 minutes devant moi), je vais essayer de
faire un petit blabla pour expliquer les choses.
Prenons comme exemple la commande suivante:
toto mon dossier/mon fichier
Le problème est de savoir comment est interprété "mon dossier/mon
fichier"? Comme un seul argument (ce qu'on voudrait ici) ou comme 3
arguments différents?
En fait, le shell découpe la ligne de commande à partir des espaces, ce
qui donne ici:
"toto", "mon", "dossier/mon", "fichier"
Le premier élément correspond à une commande et tous les autres vont
être passés à la commande comme des arguments... Sauf que ce n'est pas
ça que l'on veut.
Si on veut que le shell ne tronçonne pas un espace, on peut (par
exemple) placer un caractère d'échappement
(http://fr.wikipedia.org/wiki/Caract%C3%A8re_d%27%C3%A9chappement)
devant lui.
En l'occurrence, le caractère d'échappement est "\"; ce qui donne:
toto mon\ dossier/mon\ fichier
qui sera tronçonné en:
"toto" et "mon dossier/mon fichier"
ce qui correspond bien à ce qu'on le veut.
Une fois qu'on sait ça, on peut corriger les commandes/scripts qu'on a
copié/collé puis exécuté sans les avoir regardé de près. :)
Séb
Plus d'informations sur la liste de diffusion ubuntu-fr