#!⌨

Bash et les espaces insécables

Dans mon terminal, lorsque j'étais un peu trop long sur la touche ALT+GR pour taper un | et un peu trop rapide, sur la touche ESPACE, je me retrouvais souvent avec un bash: grep : commande introuvable. Cela était dû au fait que ALT GR + ESPACE a pour résultat l'insertion d'une espace insécable entre le | et la commande qui suit (en l'occurrence mon grep). Et en effet, la commande <espace insécable>grep n'existe pas.

La solution à ce problème a été de supprimer l'insertion d'espace insécable lors de cette combinaison de touches... Mais je me retrouve à ne plus pouvoir insérer d'espaces insécables, et notamment dans ces articles de blog que je rédige avec vim. Le problème est que je me retrouve donc parfois avec des ":" seuls sur une ligne, et ce n'est pas très joli...

J'ai donc trouvé ce petit script qui permet d'insérer des espaces insécables avant ou après les signes de ponctuation qui en ont besoin.

L'astuce réside sur l'utilisation de sed et du code UTF-8 de l'espace insécable (\xc2\xa0). Par exemple : pour remplacer l'espace normale par une espace insécable, il faudra lancer sed 's/ :/\xc2\xa0:/g' -i monfichier.

Pour chercher une espace insécable avec grep, il faudra appliquer une méthode similaire : grep $'\xc2\xa0' monfichier.

Ici, la syntaxe $'contenu' permet d'interpréter la valeur de contenu. Dans notre cas, cela va transformer \xc2\xa0 en véritable espace insécable. Il est bon de noter que si vous utilisez l'option --color de grep, il est probable que rien ne se passe : aucun pixel n'est affiché dans un espace, donc aucun pixel ne change de couleur. Il faudrait pour cela changer la couleur de fond du caractère recherché. Mais c'est un autre problème...