Auteur Sujet: Éditer un fichier de config linux sans ligne de commande  (Lu 31283 fois)

0 Membres et 1 Invité sur ce sujet

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 481
  • Malissard (26)
Éditer un fichier de config linux sans ligne de commande
« Réponse #60 le: 15 mai 2013 à 20:13:58 »
$ echo été | xxd
0000000: c3a9 74c3 a90a                           ..t...

corrector

  • Invité
Éditer un fichier de config linux sans ligne de commande
« Réponse #61 le: 15 mai 2013 à 20:20:35 »
Pas comme hier!
Le fichier a grossi!

Le vrai test :
if [[ é == ? ]]; then echo "é est un caractère"; fi
if [[ é == ?? ]]; then echo "é est 2 caractères"; fi
if [[ é == [é] ]]; then echo "é est un caractère"; fi
if [[ é == [[:alpha:]] ]]; then echo "é est alpha"; fi


seb

  • Pau Broadband Country (64)
  • Abonné SFR fibre FttH
  • *
  • Messages: 515
  • FTTH 1 Gbps sur Pau (64)
Démonstration que bash gère les octets dont le premier bit est à 1
« Réponse #62 le: 15 mai 2013 à 21:20:36 »
Toujours pas d'UTF8. ;)
Ah bon ?
seb@raoul:~$ ./toto "aßbÑcýdÅeãfŮg" "*Å" | file -
/dev/stdin: UTF-8 Unicode text

corrector

  • Invité
Éditer un fichier de config linux sans ligne de commande
« Réponse #63 le: 15 mai 2013 à 21:22:07 »
Tu as testé en locale ISO-Latin-1?

seb

  • Pau Broadband Country (64)
  • Abonné SFR fibre FttH
  • *
  • Messages: 515
  • FTTH 1 Gbps sur Pau (64)
Éditer un fichier de config linux sans ligne de commande
« Réponse #64 le: 15 mai 2013 à 22:02:34 »
Je ne vois pas ce que tu comptes montrer ainsi, mais ça me fait plaisir de te faire plaisir ...  ;)
seb@titi:~$ locale -a
C
C.UTF-8
français
french
fr_FR
fr_FR@euro
fr_FR.iso88591
fr_FR.iso885915@euro
fr_FR.utf8
POSIX
seb@titi:~$ export LANG=fr_FR@euro
seb@titi:~$ locale
LANG=fr_FR@euro
LANGUAGE=
LC_CTYPE="fr_FR@euro"
LC_NUMERIC="fr_FR@euro"
LC_TIME="fr_FR@euro"
LC_COLLATE="fr_FR@euro"
LC_MONETARY="fr_FR@euro"
LC_MESSAGES="fr_FR@euro"
LC_PAPER="fr_FR@euro"
LC_NAME="fr_FR@euro"
LC_ADDRESS="fr_FR@euro"
LC_TELEPHONE="fr_FR@euro"
LC_MEASUREMENT="fr_FR@euro"
LC_IDENTIFICATION="fr_FR@euro"
LC_ALL=
seb@titi:~$ ./toto "aßbÑcýdÅeãf€g" "*Å"
Correspondance trouvée : "eãf€g"
seb@titi:~$ ./toto "aßbÑcýdÅeãf€g" "*Å" |file -
/dev/stdin: ISO-8859 text

Je t'ai fait du Latin-15 pour le même prix.
Et j'ai évidemment remplacé le caractère "Ů" initial par le caractère "€", puisque le premier ne fait pas partie du jeu de caractères ISO-8859-15.


Je ne dis pas ça, je dis que tes exemples ne démontrent rien du tout.
Il me semble tout de même que mes exemples montrent que bash n'est pas perturbé par les jeux de caractères utilisés (pour peu que le système soit correctement configuré, s'entend).

corrector

  • Invité
Éditer un fichier de config linux sans ligne de commande
« Réponse #65 le: 15 mai 2013 à 22:11:53 »
Je ne vois pas ce que tu comptes montrer ainsi, mais ça me fait plaisir de te faire plaisir ...  ;)
Et je t'en remercie. :)

seb@titi:~$ locale -a
C
C.UTF-8
français
french
fr_FR
fr_FR@euro
fr_FR.iso88591
fr_FR.iso885915@euro
fr_FR.utf8
POSIX
seb@titi:~$ export LANG=fr_FR@euro
seb@titi:~$ locale
LANG=fr_FR@euro
LANGUAGE=
LC_CTYPE="fr_FR@euro"
LC_NUMERIC="fr_FR@euro"
LC_TIME="fr_FR@euro"
LC_COLLATE="fr_FR@euro"
LC_MONETARY="fr_FR@euro"
LC_MESSAGES="fr_FR@euro"
LC_PAPER="fr_FR@euro"
LC_NAME="fr_FR@euro"
LC_ADDRESS="fr_FR@euro"
LC_TELEPHONE="fr_FR@euro"
LC_MEASUREMENT="fr_FR@euro"
LC_IDENTIFICATION="fr_FR@euro"
LC_ALL=
seb@titi:~$ ./toto "aßbÑcýdÅeãf€g" "*Å"
Correspondance trouvée : "eãf€g"
seb@titi:~$ ./toto "aßbÑcýdÅeãf€g" "*Å" |file -
/dev/stdin: ISO-8859 text

Je t'ai fait du Latin-15 pour le même prix.
Et j'ai évidemment remplacé le caractère "Ů" initial par le caractère "€", puisque le premier ne fait pas partie du jeu de caractères ISO-8859-15.
Pardon, ce n'est pas du tout ce que je voulais dire.

Ce que je propose, ce de ne rien changer (sauf l’environnement), de rester en terminal UTF8, de garder la même séquence UTF8, de mentir au shell via LC_CTYPE (oui, cémal).

seb

  • Pau Broadband Country (64)
  • Abonné SFR fibre FttH
  • *
  • Messages: 515
  • FTTH 1 Gbps sur Pau (64)
Éditer un fichier de config linux sans ligne de commande
« Réponse #66 le: 15 mai 2013 à 22:38:17 »
Bah si tu racontes volontairement des conneries au shell, il ne faut pas t'attendre à ce qu'il réagisse correctement.
L'émulateur Konsole depuis lequel je travaille est resté configuré en UTF-8 :
seb@titi:~$ zsh
seb@titi ~ % export LC_CTYPE=fr_FR@euro
seb@titi ~ % if [[ é == ? ]]; then echo "é est un caractère"; fi
seb@titi ~ % if [[ é == ?? ]]; then echo "é est 2 caractères"; fi
é est 2 caractères
seb@titi ~ % if [[ é == [é] ]]; then echo "é est un caractère"; fi
seb@titi ~ % if [[ é == [[:alpha:]] ]]; then echo "é est alpha"; fi
seb@titi ~ % echo été | xxd
0000000: c3a9 74c3 a90a                           ..t...
seb@titi ~ % cat test.utf8
aßbÑcýdÅeãfŮg
seb@titi ~ % cat test.latin15
a�b�c�d�e�f�g


Qu'est-ce qu'on en conclue ?
Que zsh ne gère correctement ni UTF-8, ni Latin15 ?  ;)

Pour ma part, je considère qu'il y a juste une erreur dans l'interface chaise-clavier ...

corrector

  • Invité
Mon test d'UTF8 est effectif
« Réponse #67 le: 15 mai 2013 à 22:45:28 »
Non!

On en conclut que
- zsh tient compte bien de l'environnement : $LC_CTYPE détermine bien le comportement de zsh
- qu'on pourrait conclure de ce test que zsh supporte réellement UTF8!

Tu viens de démontrer que le test que je propose est bon.

Est-ce que tes tests sont bons? Est-ce qu'ils montrent bien que $LC_CTYPE détermine le comportement de bash?
« Modifié: 16 mai 2013 à 00:08:17 par corrector »

seb

  • Pau Broadband Country (64)
  • Abonné SFR fibre FttH
  • *
  • Messages: 515
  • FTTH 1 Gbps sur Pau (64)
Tout ça pour ça ?
« Réponse #68 le: 15 mai 2013 à 22:56:22 »
Est-ce que tes tests sont bons?
Exactement les mêmes résultats foireux pour bash dans les mêmes conditions :
seb@titi:~$ export LC_CTYPE=fr_FR@euro
seb@titi:~$ if [[ é == ? ]]; then echo "é est un caractère"; fi
seb@titi:~$ if [[ é == ?? ]]; then echo "é est 2 caractères"; fi
é est 2 caractères
seb@titi:~$ if [[ é == [é] ]]; then echo "é est un caractère"; fi
seb@titi:~$ if [[ é == [[:alpha:]] ]]; then echo "é est alpha"; fi
seb@titi:~$ echo été | xxd
0000000: c3a9 74c3 a90a                           ..t...
seb@titi:~$ cat test.utf8
aßbÑcýdÅeãfŮg
seb@titi:~$ cat test.latin15
a�b�c�d�e�f�g


Satisfait ?

corrector

  • Invité
Éditer un fichier de config linux sans ligne de commande
« Réponse #69 le: 15 mai 2013 à 23:02:08 »
Je suis satisfait que tu ai démontré la pertinence de mon test.

Je te rappelle que tes tests sont :
seb@raoul:~$ cat toto
#!/bin/bash

if [ $# -ne 2 ]
then
        echo "Usage: $(basename $0) <chaine> <motif>"
        echo ""
        echo "Affiche la partie de chaîne située après le motif spécifié."
        exit 1
fi

chaine="$1"
motif="$2"

apres=${chaine##${motif}}
if [ -z "$apres" ]
then
        echo "Pas de correspondance."
else
        echo "Correspondance trouvée : \"$apres\""
fi

Qui, à l'exécution, donne ceci :
seb@raoul:~$ ./toto "aßbÑcýdÅeãfŮg" "*Å"
Correspondance trouvée : "eãfŮg"

seb@nestor:~$ for f in /data/media/musique/flac/Sigur\ Rós/Með\ suð\ í\ eyrum\ við\ spilum\ endalaust/*.flac; do t=$(printf "%s\n" $f | file -); echo "$t - $(basename "$f")"; done
/dev/stdin: UTF-8 Unicode text - 01. Gobbledigook.flac
/dev/stdin: UTF-8 Unicode text - 02. Inní mér syngur vitleysingur.flac
/dev/stdin: UTF-8 Unicode text - 03. Góðan daginn.flac
/dev/stdin: UTF-8 Unicode text - 04. Við spilum endalaust.flac
/dev/stdin: UTF-8 Unicode text - 05. Festival.flac
/dev/stdin: UTF-8 Unicode text - 06. Með suð í eyrum.flac
/dev/stdin: UTF-8 Unicode text - 07. Ára bátur.flac
/dev/stdin: UTF-8 Unicode text - 08. Illgresi.flac
/dev/stdin: UTF-8 Unicode text - 09. Fljótavík.flac
/dev/stdin: UTF-8 Unicode text - 10. Straumnes.flac
/dev/stdin: UTF-8 Unicode text - 11. All Alright.flac


seb

  • Pau Broadband Country (64)
  • Abonné SFR fibre FttH
  • *
  • Messages: 515
  • FTTH 1 Gbps sur Pau (64)
Éditer un fichier de config linux sans ligne de commande
« Réponse #70 le: 15 mai 2013 à 23:31:51 »
Je suis satisfait que tu ai démontré la pertinence de mon test.
C'est toi qui le trouve pertinent, pas moi.

Qu'est-ce que tu veux prouver?

On voit que bash ne se viande pas sur les octets dont le premier bit est à 1. Super. On ne s'en doutait pas.

On va donc pouvoir travailler sur des données en ISO-Latin-1 avec bash! 8)
Et toi, qu'est-ce que tu veux prouver ?

Tu dis au shell : "Hé, mec, on bosse avec des caractères codés sur un octet" et tu lui balances des caractères qui le sont sur deux octets ou plus.
Du coup, il croit voir passer deux caractères ou plus. Super. On ne s'en doutait pas.

corrector

  • Invité
Éditer un fichier de config linux sans ligne de commande
« Réponse #71 le: 15 mai 2013 à 23:35:36 »
C'est toi qui le trouve pertinent, pas moi.
Mon test ne passe pas. Le résultat du test dépend des paramètres. Mon test teste quelque chose.

Le test de mon test est donc concluant.

Mon test est pertinent par rapport à ce qu'il teste.

Et toi, qu'est-ce que tu veux prouver ?
Que tes tests ne marchent pas. Ils ne testent rien. Ils ne sont pas pertinents.

Essaie, pour voir.

Super. On ne s'en doutait pas.
C'est bien mon commentaire en voyant les résultats positifs de tes 2 tests.