Dans les faits, la modification semble mineure. L'ubiquiste commande ls, qui permet d'obtenir le contenu d'un répertoire, n'affiche plus ses résultats tout à fait comme ce fut le cas pendant 35 ans. Plus précisément, un fichier contenant divers caractères particuliers, et tout particulièrement l'espace, est maintenant affiché entre guillemets :

$ ls
'nom avec espaces'
'blah-VmlsYWluIGN1cmlldXggISEhCg=='

Alors que, depuis une éternité, le nom était affiché sans fioritures inutiles, selon l'idée le nom, tout le nom, rien que le nom.

S'il y a des fantaisies dans le dit nom, ça devient compliqué. Un fichier appelé A l'abordage ! est présenté comme ceci :

$ ls
'A l'\''abordage !'

Bref, c'est de mon point de vue[1] une catastrophe, même si ce nouveau mode de présentation n'apparait, il faut le confesser, que pour l'affichage à l'écran (les scripts qui utilisent ls n'ont pas à être adaptés).

Bien sûr, il est possible de modifier l'appel à la commande ls, avec les options -N ou --quoting-style, pour revenir au comportement habituel, Il n'empêche. Je ne me vois pas ajouter un synonyme adéquat sur tous mes ordinateurs, pour tous les comptes utilisateurs existants.

C'est là que le fonctionnement de Linux Gentoo vient à ma rescousse. Le système étant basé sur une recompilation systématique de tout ce qui est installé, il suffit de créer un correctif ponctuel du code, qui sera appliqué y compris sur les futures versions du paquet coreutils. Ce correctif commente la ligne qui amène au nouveau comportement :

*** src/ls.c	2016-11-22 21:04:32.000000000 +0100
--- src/ls.c.new	2016-12-10 11:50:39.000000000 +0100
***************
*** 1678,1684 ****
        if (isatty (STDOUT_FILENO))
          {
            format = many_per_line;
!           set_quoting_style (NULL, shell_escape_quoting_style);
            /* See description of qmark_funny_chars, above.  */
            qmark_funny_chars = true;
          }
--- 1678,1686 ----
        if (isatty (STDOUT_FILENO))
          {
            format = many_per_line;
!           /* 30 years of history should *not* be ditched lightly
!            * set_quoting_style (NULL, shell_escape_quoting_style);
!            */
            /* See description of qmark_funny_chars, above.  */
            qmark_funny_chars = true;
          }

Avec Gentoo, le correctif est à placer dans le répertoire /etc/portage/patches/sys-apps/coreutils. Il doit porter le suffixe .patch.

Note

[1] Je ne suis pas le seul à penser ça.