Ligne de commande et la feinte de l’espace insécable

Je faisais joujou avec GNU parallel (comme xargs, fait traiter les arguments par des processus fils, mais en parallèle) et mes arguments étaient bizarrement répartis.

Si j’exécutais la commande «parallel echo — 1 2 3 4» le premier processus en prenait trois et le deuxième un seul (j’aurais dû avoir 4 processus).

Tout se passait bien avec la commande «parallel echo — {1..4}» (bash développe cette expression en une suite de nombre).

Je regarde avec «ps ux» (en n’utilisant plus «echo» pour me donner du temps) et je vois dans les deux cas la même ligne de commande. Et regardant plus attentivement celle-ci avec «hexdump /proc/$(pgrep parallel)/cmdline -C», j’ai vu que dans le premier cas (arguments explicites) je n’avais effectivement que 2 arguments, le premier contenant les chiffres séparés par un mystérieux caractère «c2 a0». Ce qui correspond à l’espace insécable.

En fait, comme j’ai un clavier bépo Typematrix sans pavé numérique, j’utilise les touches supérieures pour taper les chiffres, avec la touche shift. Sans m’en apercevoir, je maintenait celle-ci pour taper l’espace, ce qui donnait une espace insécable (qui n’est pas un séparateur de paramètres, et qu’on ne peut différencier à l’œil nu d’une espace classique).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *