Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

bash et UTF-8

12 réponses
Avatar
PII 233
Bonjour,

j'utilise putty pour me logger en ssh sur un serveur woody.
La version de bash est :
# bash --version
GNU bash, version 2.05a.0(1)-release (i386-pc-linux-gnu)
Copyright 2001 Free Software Foundation, Inc.

J'ai configur=C3=A9 ma locale en UTF-8.

Lorsque je tape la s=C3=A9quence de caract=C3=A8res "ls a=C3=A9" sur la l=
igne de=20
commande, j'ai des caract=C3=A8res "ls a=C3=A9" qui sont correctement aff=
ich=C3=A9s.
Maintenant, je tape backspace pour effacer le "=C3=A9" et je le remplace =
par=20
"2". J'ai les caract=C3=A8res "ls a2" qui sont donc affich=C3=A9s.
Je valide la commande, et bash me retourne une erreur :

# ls a2
ls: a=E2=96=922: Cha=C3=AEne multi-octets ou =C3=A9tendue de caract=C3=A8=
res invalide ou incompl=C3=A8te

Comme vous le voyez, il y a un caract=C3=A8re pourri qui a =C3=A9t=C3=A9 =
ins=C3=A9r=C3=A9, comme=20
si le caract=C3=A8re cod=C3=A9 sur 2 octets n'avait =C3=A9t=C3=A9 que par=
tiellement supprim=C3=A9.

Je n'ai pas du tout ce comportement sous vim, qui est configur=C3=A9 pour=
=20
fonctionner en UTF-8. De m=C3=AAme pour putty.

En faisant quelques recherches, j'ai constat=C3=A9 que l'auteur de putty =

mettait en garde les utilisateurs sur des incompatibilit=C3=A9s possibles=
de=20
certaines applications avec unicode.
En cherchant du c=C3=B4t=C3=A9 de bash, j'ai trouv=C3=A9 le patch suivant=
:
ftp://ftp.gnu.org/pub/gnu/bash/bash-2.05b-patches/bash205b-007

H=C3=A9 ! =C3=A7a ressemble =C3=A0 un patch pour mon probl=C3=A8me.

Le truc, c'est qu'une version 2.05b, il n'y en a pas en paquet, visibleme=
nt.
Par ailleurs, si je regarde le paquet debian 2.05a, c'est une version=20
patch=C3=A9e, =C3=A0 la debian, j'ai l'impression :
# apt-cache showpkg bash
Package: bash
Versions:
3.0-3(/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_unstable_main_bin=
ary-i386_Packages)
2.05a-11(/var/lib/apt/lists/ftp.fr.debian.org_debian_dists_stable_main_bi=
nary-i386_Packages)(/var/lib/dpkg/status)

il y a en effet un "-11" qui suit, comme si c'=C3=A9tait la 11=C3=A8me ve=
rsion du=20
2.05a pour woody.

Bref, je ne sais pas trop quoi penser : est-ce que le patch 7 pour la=20
2.05b aurait =C3=A9t=C3=A9 appliqu=C3=A9 =C3=A0 la 2.05a-11, et que donc =
le bug existe=20
toujours ? ou bien faut-il que je compile un bash moi-m=C3=AAme ?
=C3=87a m'ennuie de devoir compiler le shell sur lequel presque tout le r=
este=20
repose, en cas de bug corrig=C3=A9 dans les patches "-11", mais pas en 2.=
05b=20
prise sur le site de gnu.

Il y a peut-=C3=AAtre un moyen plus simple de corriger le probl=C3=A8me, =
tout en=20
restant en UTF-8 ? genre virer le mode vi, mais je n'ai pas compris=20
comment =C3=A7a marchait.

Je donc suis =C3=A0 l'=C3=A9coute de vos conseils avis=C3=A9s :)
--=20
pii 233

2 réponses

1 2
Avatar
Charles Plessy
On Thu, Aug 05, 2004 at 02:00:42PM +0200, Loic Minier wrote :
Vincent Lefevre - Thu, Aug 05, 2004:

> > Mais je pense que ça concerne le transfert de données, afin que ces
> > données ne soient pas interprétées (quand on fait un ssh -c par exemple).
> -c c'est une option de chiffrement complètement indépendante.



à ne pas confondre avec -C, qui compresse les données et économise de
la bande passante, quand celle-ci est faible. (Mais qui ralentit le
tout si bande passante il y a à profusion).

--
Charles


--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
PII 233
Vincent Lefevre wrote:

-c c'est une option de chiffrement complètement indépendante.


Ça m'apprendra à ne pas avoir fait "man ssh" avant d'écrire :)
J'étais persuadé que ce serait l'équivalent de "sh -c" pour ssh, af in
d'indiquer la commande.

> Je
suppose plutôt que c'est pour transférer des fichiers par exemple
(ce que fait scp) ou plus généralement pour installer un tunnel ssh .


Je pensais à la sortie binaire d'une commande (quel que soit cette
commande).

Au hasard 'cat image.png', et hop, ça permet de faire une copie de
fichier (comme tu l'indiques).

Avec un fichier binaire : awstats-5.91.tgz.gz.
$ (ssh localhost cat awstats-5.91.tgz.gz ) > /tmp/toto2
ls -al /tmp/toto2
=> 699800 aoû 5 15:13 /tmp/toto2
$ (ssh -t localhost cat awstats-5.91.tgz.gz ) > /tmp/toto2
ls -al /tmp/toto2
=> 702575 aoû 5 15:13 /tmp/toto2
$ (ssh -T localhost cat awstats-5.91.tgz.gz ) > /tmp/toto2
ls -al /tmp/toto2
=> 699800 aoû 5 15:13 /tmp/toto2

avec -t, le fichier est corrompu.
avec -T, le fichier est nickel.
sans, comme il y a une commande en argument, c'est -T par défaut.

Le même exemple sur /etc/passwd change les CR en CRLF si l'on utilise - t :

$ od -a /etc/passwd
0000000 r o o t : x : 0 : 0 : r o o t :
0000020 / r o o t : / b i n / b a s h nl
$ od -a /tmp/toto2
0000000 r o o t : x : 0 : 0 : r o o t :
0000020 / r o o t : / b i n / b a s h cr
0000040 nl

ssh cause au terminal, ça paraît normal.

Ben en tout cas, j'apprends et expérimente plein de trucs avec mon peti t
problème de bash, merci :)
--
pii233
1 2