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

0 Membres et 2 Invités sur ce sujet

corrector

  • Invité
Démonstration que bash gère UTF8
« Réponse #24 le: 14 mai 2013 à 06:42:24 »
Lesquels fichiers sont très régulièrement traités par des moulinettes shell (oui, avec bash) que j'utilise déjà depuis quelques années, et qui me servent à mettre à jour leurs tags et autres joyeusetés dans le genre.

Donc je pense que si bash était incapable de traiter correctement Unicode, comme tu l'as affirmé, je serais au courant depuis le temps. ;)
Avec tout le respect, j'ai rencontré un mec qui utilisait depuis des années bash sous GNU/linux sur système tout UTF8 (avec des incohérences de config que j'ai tout de suite vu), et il ne s'était jamais rendu compte que son bash gérait pas UTF8.

Tu m'as d'ailleurs donné plusieurs exemples qui ne démontraient en rien ce que tu avais l'air de penser qu'ils démontraient : n'importe quel shell qui ne comprend pas du tout UTF8 peut arriver à faire de la complétion de noms de fichier et de passer à find un nom en UTF8.

Je ne sais pas pourquoi chez toi bash passe en UTF8 et pas chez le bouffon précité : je crois me souvenir que ses locales étaient bien UTF8.

Je vais essayer de tirer ça au clair.

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 #25 le: 14 mai 2013 à 08:50:19 »
Tu m'as d'ailleurs donné plusieurs exemples qui ne démontraient en rien ce que tu avais l'air de penser qu'ils démontraient : n'importe quel shell qui ne comprend pas du tout UTF8 peut arriver à faire de la complétion de noms de fichier et de passer à find un nom en UTF8.
Alors je fais une nouvelle tentative :
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

(Ça fonctionne aussi sans le printf, mais je voulais forcer bash à traiter l'affichage)
Ça te convainc un peu plus ?

Moi, je considère qu'un shell qui prend de l'UTF-8 en entrée et produit encore de l'UTF-8 en sortie sait gérer l'UTF-8 correctement (c'est à dire que ses traitements sont transparents vis-à-vis de ce jeu de caractères).
Mais ce n'est peut être pas ta définition de la bonne gestion UTF-8.
Auquel cas, j'attends la tienne pour comprendre quel doute t'habite encore ...
« Modifié: 14 mai 2013 à 09:20:38 par seb »

corrector

  • Invité
Est-ce que bash gère UTF8?
« Réponse #26 le: 14 mai 2013 à 09:18:16 »
Ça te convainc un peu plus ?
Absolument pas.

Tu aurais pu te contenter de
file - <<<été
cela m'aurait fait le même effet!

Je crois que on ne s'entend pas du tout sur le sens de "bash supporte UTF8" :
- tu comprends : bash est "8 bits safe"
- je veux dire : bash comprend l'encodage UTF8, il sait encoder/décoder UTF8
« Modifié: 15 mai 2013 à 05:27:49 par corrector »

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 #27 le: 14 mai 2013 à 09:21:46 »
Développe.

corrector

  • Invité
Est-ce que bash gère UTF8?
« Réponse #28 le: 14 mai 2013 à 10:40:00 »
Mettons :

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

« Modifié: 15 mai 2013 à 05:27:55 par corrector »

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 481
  • Malissard (26)
Éditer un fichier de config linux sans ligne de commande
« Réponse #29 le: 14 mai 2013 à 11:13:53 »
J'y comprends rien (pour moi ça a toujours marché) mais voici ce que ça donne :
# echo $LANG
en_US
# if [[ é == ? ]]; then echo "é est un caractère"; fi
é est un caractère
# if [[ é == [é] ]]; then echo "é est un caractère"; fi
é est un caractère
# if [[ é == [[:alpha:]] ]]; then echo "é est alpha"; fi
é est alpha

corrector

  • Invité
Est-ce que bash gère UTF8?
« Réponse #30 le: 14 mai 2013 à 11:16:09 »
J'y comprends rien (pour moi ça a toujours marché) mais voici ce que ça donne :
# echo $LANG
en_US
C'est surtout LC_CTYPE qui serait intéressant. Sinon, locale est censé tout afficher.
« Modifié: 15 mai 2013 à 05:28:00 par corrector »

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 481
  • Malissard (26)
Éditer un fichier de config linux sans ligne de commande
« Réponse #31 le: 14 mai 2013 à 11:21:29 »
J'ai ça de défini :
LC_COLLATE=C

Mais aucune des variables que tu m'as cité.

corrector

  • Invité
Est-ce que bash gère UTF8?
« Réponse #32 le: 14 mai 2013 à 11:31:19 »
J'ai cité des variables, moi?

Que raconte la commande locale?
« Modifié: 15 mai 2013 à 05:28:07 par corrector »

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 481
  • Malissard (26)
Éditer un fichier de config linux sans ligne de commande
« Réponse #33 le: 14 mai 2013 à 12:00:23 »
Ah pardon je parlais de LC_CTYPE.
Ben j'ai tout à en_US.

corrector

  • Invité
Est-ce que bash gère UTF8?
« Réponse #34 le: 14 mai 2013 à 12:04:36 »
echo été | wc -
« Modifié: 15 mai 2013 à 05:28:13 par corrector »

BadMax

  • Client Free adsl
  • Expert
  • *
  • Messages: 3 481
  • Malissard (26)
Éditer un fichier de config linux sans ligne de commande
« Réponse #35 le: 14 mai 2013 à 13:41:36 »
# echo été | wc -
      1       1       4 -

Même joueur joue encore.