OVH Cloud OVH Cloud

Jeu de caractères

10 réponses
Avatar
Maclin
En faisant un "man useradd" le terminal m'affiche des idéogrammes
chinois, comme ci-dessous :

useradd - Cr? un nouvel utilisateur ou mettre ?our l’information par
d?ut sur un nouvel utilisateur
SYNOPSIS
useradd [-c commentaire] [-d r?perso]
[-e date_expiration] [-f inactive_time]
[-g groupe_initial] [-G groupe[,...]]
[-m [-k r?squelette] | -M] [-p mot_de_passe]
[-s shell] [-u uid [ -o]] [-n] [-r] login

ça le fait que sur certains man, pourquoi ?

10 réponses

Avatar
Maclin

En faisant un "man useradd" le terminal m'affiche des idéogrammes
chinois, comme ci-dessous :

useradd - Cr? un nouvel utilisateur ou mettre ?our l’information par
d?ut sur un nouvel utilisateur
SYNOPSIS
useradd [-c commentaire] [-d r?perso]
[-e date_expiration] [-f inactive_time]
[-g groupe_initial] [-G groupe[,...]]
[-m [-k r?squelette] | -M] [-p mot_de_passe]
[-s shell] [-u uid [ -o]] [-n] [-r] login

ça le fait que sur certains man, pourquoi ?


Bon, là on ne peut pas les voir, mais dans mon term, si

Avatar
caprinew

En faisant un "man useradd" le terminal m'affiche des idéogrammes
chinois, comme ci-dessous :

useradd - Cr? un nouvel utilisateur ou mettre ?our l’information par
d?ut sur un nouvel utilisateur
SYNOPSIS
useradd [-c commentaire] [-d r?perso]
[-e date_expiration] [-f inactive_time]
[-g groupe_initial] [-G groupe[,...]]
[-m [-k r?squelette] | -M] [-p mot_de_passe]
[-s shell] [-u uid [ -o]] [-n] [-r] login

ça le fait que sur certains man, pourquoi ?



Bon, là on ne peut pas les voir, mais dans mon term, si


Vous n'auriez pas fait cat sur un binaire?



Si c'est le cas, cherchez dans cette page:
«reset" soit "setterm -reset»

http://www.freenix.fr/unix/linux/HOWTO/Text-Terminal-HOWTO-16.html

--
caprinew


Avatar
Philippe Naudin
Le lundi 20 septembre 2004 à 17:12:26
Maclin a écrit:


En faisant un "man useradd" le terminal m'affiche des idéogrammes
chinois, comme ci-dessous :
...
ça le fait que sur certains man, pourquoi ?



Essaye ce script, que j'ai trouvé sur Internet il y a quelques temps
mais pour lequel je n'ai noté ni l'URL ni l'auteur, qui m'en voudra
sûrement s'il se reconnaît ici ...

#! /bin/sh

fichier=$(man -w "$1")

if [ -z "$fichier" ] ; then
echo "Pas trouvé $1 !"
exit

else
if [ "${fichier%.gz}" = "$fichier" ] ; then
cp -f "$fichier" /tmp/man_tmp
extension=".gz"
else
gunzip -c "$fichier" > /tmp/man_tmp
unset extension
fi

iconv -f LATIN1 -t UTF8 < /tmp/man_tmp | gzip - >
"${fichier}$extension"

fi


--
Philippe Naudin


Avatar
Philippe Naudin
Le mercredi 22 septembre 2004 à 07:51:24
Dominique a écrit:

Va dans ce répertoire et tape en ligne de commande :
./toto adduser


Ceci après avoir rendu le fichier exécutable, avec la commande :
$ chmod +x toto

Ou bien (pas besoin de chmod dans le deuxième cas) :
$ sh toto adduser

Pour être complet :
L'argument à passer au script n'est pas le nom d'une commande mais celui
d'un fichier.
Donc pour traduire (de latin vers utf8) la page d'aide de adduser, il
faut faire :
# ./toto $(man -w adduser)

Chez moi $(man -w adduser) renvoie : /usr/share/man/fr/man8/useradd.8.gz


--
Philippe Naudin

Avatar
Dominique
Philippe Naudin wrote:

Ceci après avoir rendu le fichier exécutable, avec la commande :
$ chmod +x toto


Oups !!!!


Pour être complet :
L'argument à passer au script n'est pas le nom d'une commande mais celui
d'un fichier.
Donc pour traduire (de latin vers utf8) la page d'aide de adduser, il
faut faire :
# ./toto $(man -w adduser)

Chez moi $(man -w adduser) renvoie : /usr/share/man/fr/man8/useradd.8.gz


Tiens, je ne connaissais pas ça. Chez moi, ça donne :
[ normal]$ $(man -w adduser)
bash: /usr/share/man/fr/man8/useradd.8.gz: Permission non accordée

Pourquoi "Permission non accordée" ?

Bonne soirée,
Dominique

Avatar
Nicolas George
Philippe Naudin wrote in message
:
Essaye ce script, que j'ai trouvé sur Internet il y a quelques temps
mais pour lequel je n'ai noté ni l'URL ni l'auteur, qui m'en voudra
sûrement s'il se reconnaît ici ...


Si la configuration de la machine est correcte, man sait recoder
lui-même les pages de latin-1 en UTF-8, ce script est donc inutile.

********** FAQ, que je donne, libre de droit, à la communauté **********

Q : Comment bien régler les variables de locales pour les accents ?

R : Tapez la commande « locale », et regardez le résultat. La ligne
importante, pour les accents, es la ligne LC_CTYPE. Voici la valeur
qu'elle doit avoir selon l'encodage du terminal :

fr_FR _ Latin-1
fr_FR.ISO-8859-1 /
fr_FR.UTF-8 UTF-8
_ Latin-9
/

Il est *indispensable* que le réglage de LC_CTYPE soit correct par
rapport à l'encodage utilisé par le terminal.

Notez qu'il peut y avoir des variations sur l'écriture (tirets,
majuscules). La langue exacte n'importe pas beaucoup, fr_CA, en_US,
de_DE par exemple, conviennent aussi bien.

Pour régler la valeur si elle n'est pas correcte, il faut changer
les variables d'environnement $LC_CTYPE elle-même, $LANG ou $LC_ALL.
La variable $LC_CTYPE, si elle est définie, a priorité sur la
variable $LANG. La variable $LC_ALL, si elle est définie, a priorité
sur la variable $LC_CTYPE, et a fortiori sur $LANG.

Les distributions ont souvent un paramètre pour régler globalement
ça pour tous les utilisateurs. Avec Debian, un
« dpkg-reconfigure locales » bien senti fera l'affaire.


Q : Comment savoir si mon terminal est en UTF-8 ou en Latin-1(5) ?

R : Ouvrez un terminal, lancez la commande « xxd », tapez un mot avec un
accent, puis entrée et Ctrl-D, et examinez l'affichage :

0000000: 66ea 7465 0a f.te.
^^
(le mot était « fête ») On remarque ici que le « ê » est codé par un
seul octet : 0xea. C'est signe qu'on est en Latin-1(5).

0000000: 66c3 aa74 650a f..te.
^^ ^^
Cette fois-ci, le « ê » était codé par deux octets : 0xc3 0xaa.
C'est signe que le terminal est en UTF-8.

Pour savoir si le terminal est en Latin-1 ou en l'infâme Latin-15,
il suffit d'essayer de taper un symbole euro : si c'est possible,
c'est du Latin-15, si ça ne l'est pas, c'est du Latin-1.

Avatar
Philippe Naudin
Le mercredi 22 septembre 2004 à 18:51:13
Dominique a écrit:

Philippe Naudin wrote:
...
Chez moi $(man -w adduser) renvoie :
/usr/share/man/fr/man8/useradd.8.gz


Tiens, je ne connaissais pas ça. Chez moi, ça donne :
[ normal]$ $(man -w adduser)
bash: /usr/share/man/fr/man8/useradd.8.gz: Permission non accordée

Pourquoi "Permission non accordée" ?


Parce que le shell remplace $(man -w adduser) par
/usr/share/man/fr/man8/useradd.8.gz
Il tente ensuite de l'exécuter, et n'en a pas la permission.
Tape directement /usr/share/man/fr/man8/useradd.8.gz à l'invite du shell
pour vérifier que tu obtiens bien le même message.

extrait de man bash:
$(commande)
ou
`commande`

Bash effectue la substitution en exécutant la commande et en la
remplaçant par sa sortie standard, dont les derniers sauts de lignes
sont supprimés.

--
Philippe Naudin


Avatar
Philippe Naudin
Le mercredi 22 septembre 2004 à 17:20:24
Nicolas George <nicolas$ a écrit:

Si la configuration de la machine est correcte, man sait recoder
lui-même les pages de latin-1 en UTF-8, ce script est donc inutile.


J'ai dû casser quelque chose dans ma linuxette, alors :

$ zcat $(man -w route) > foo
$ man ./foo
iconv: Séquence d'échappement illégale à la position 110

$ zcat $(man -w route) | iconv -f LATIN1 -t UTF8 > bar
$ man ./bar
ROUTE(8) Linux Programmer's Manual ROUTE(8)

NAME
route - affiche / manipule la table de routage IP

SYNOPSIS
route [-CFvnee]

route [-v] [-A famille] add [-net|-host] cible [netmask Nm] [gw Gw]
[metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn]
[reinstate] [[dev] If]

route [-v] [-A famille] del [-net|-host] cible [gw Gw] [netmask Nm]
[metric N] [[dev] If]

route [-V] [--version] [-h] [--help]

DESCRIPTION
Route manipule la table de routage IP du noyau. Son utilisation
première consiste à configurer des routes statiques vers des hôtes ou
etc...

$ diff foo bar | head -n 10
1c1
< .TH ROUTE 8 "8 Août 1997" "net-tools" "Linux Programmer's Manual"
---
.TH ROUTE 8 "8 Août 1997" "net-tools" "Linux Programmer's Manual"
57,59c57,59

< manipule la table de routage IP du noyau. Son utilisation première
< consiste à configurer des routes statiques vers des hôtes ou des réseaux
< via une interface, après sa configuration par le programme
---
manipule la table de routage IP du noyau. Son utilisation première


(j'espère que ce message va rester en 8 bits, sinon ça fera une foutue
ratatouille à l'arrivée ...)

$ set | grep -i fr
LANG=
LC_CTYPE=
LC_MESSAGES=
SUPPORTED=:fr_FR:fr

$ set | grep TERM
COLORTERM=rxvt
TERM=rxvt

$ alias less
alias less='less -iQ --raw'

$ grep -v '^[#$]' /etc/man.config
FHS
MANPATH /usr/share/man
MANPATH /usr/man
MANPATH /usr/local/share/man
MANPATH /usr/local/man
MANPATH /usr/X11R6/man
MANPATH_MAP /bin /usr/share/man
MANPATH_MAP /sbin /usr/share/man
MANPATH_MAP /usr/bin /usr/share/man
MANPATH_MAP /usr/sbin /usr/share/man
MANPATH_MAP /usr/local/bin /usr/local/share/man
MANPATH_MAP /usr/local/sbin /usr/local/share/man
MANPATH_MAP /usr/X11R6/bin /usr/X11R6/man
MANPATH_MAP /usr/bin/X11 /usr/X11R6/man
MANPATH_MAP /usr/bin/mh /usr/share/man
NOCACHE
TROFF /usr/bin/groff -Tlatin1 -mandoc
NROFF /usr/bin/nroff -mandoc -Tlatin1
JNROFF LANG=ja_JP.UTF-8 /usr/bin/groff -Tnippon -mandocj
KNROFF /usr/bin/groff -Tkorean -mandoc
EQN /usr/bin/geqn -Tps
NEQN /usr/bin/geqn -Tlatin1
KNEQN /usr/bin/geqn -Tkorean
TBL /usr/bin/gtbl
REFER /usr/bin/grefer
PIC /usr/bin/gpic
VGRIND
GRAP
PAGER /usr/bin/less -isr
CAT /bin/cat
CMP /usr/bin/cmp -s
COMPRESS /bin/gzip
COMPRESS_EXT .gz
MANSECT 1:8:2:3:4:5:6:7:9:tcl:n:l:p:o
.gz /bin/gunzip -c
.bz2 /usr/bin/bzip2 -c -d
.z
.Z /bin/zcat
.F
.Y

C'est grave, docteur ? (Bon, en tous cas ça n'est pas fatal, mais ça
m'oblige à traduire les pages de man en utf8 ...)

Et une question subsidiaire :
Je n'ai pas trouvé le moyen de demander à man de lire son entrée
standard, c'est vraiment unixien ce truc là ?

Cordialement,

--
Philippe Naudin

Avatar
Maclin
Bon moi tout est en UTF-8 et ça n'empêche pas certains man d'utiliser
des caractères chinois ????

$ locale
LANG=fr_FR.UTF-8
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL
$ xxd
fête
0000000: 66c3 aa74 650a f..te.



Q : Comment bien régler les variables de locales pour les accents ?
R : Tapez la commande « locale », et regardez le résultat. La ligne
importante, pour les accents, es la ligne LC_CTYPE. Voici la valeur
qu'elle doit avoir selon l'encodage du terminal :
fr_FR _ Latin-1
fr_FR.ISO-8859-1 /
fr_FR.UTF-8 UTF-8
_ Latin-9
/
Il est *indispensable* que le réglage de LC_CTYPE soit correct par
rapport à l'encodage utilisé par le terminal.
Notez qu'il peut y avoir des variations sur l'écriture (tirets,
majuscules). La langue exacte n'importe pas beaucoup, fr_CA, en_US,
de_DE par exemple, conviennent aussi bien.
Pour régler la valeur si elle n'est pas correcte, il faut changer
les variables d'environnement $LC_CTYPE elle-même, $LANG ou $LC_ALL.
La variable $LC_CTYPE, si elle est définie, a priorité sur la
variable $LANG. La variable $LC_ALL, si elle est définie, a priorité
sur la variable $LC_CTYPE, et a fortiori sur $LANG.

Les distributions ont souvent un paramètre pour régler globalement
ça pour tous les utilisateurs. Avec Debian, un
« dpkg-reconfigure locales » bien senti fera l'affaire.
Q : Comment savoir si mon terminal est en UTF-8 ou en Latin-1(5) ?

R : Ouvrez un terminal, lancez la commande « xxd », tapez un mot avec un
accent, puis entrée et Ctrl-D, et examinez l'affichage :
0000000: 66ea 7465 0a f.te. ^^
(le mot était « fête ») On remarque ici que le « ê » est codé par un
seul octet : 0xea. C'est signe qu'on est en Latin-1(5).
0000000: 66c3 aa74 650a f..te. ^^ ^^
Cette fois-ci, le « ê » était codé par deux octets : 0xc3 0xaa.
C'est signe que le terminal est en UTF-8.
Pour savoir si le terminal est en Latin-1 ou en l'infâme Latin-15,
il suffit d'essayer de taper un symbole euro : si c'est possible,
c'est du Latin-15, si ça ne l'est pas, c'est du Latin-1.


Avatar
Philippe Naudin
Le jeudi 23 septembre 2004 à 13:29:53
Dominique a écrit:


J'ai transformé (je ne sais plus comment !) man bash en pdf et je l'ai
édité. Il ne me reste plus qu'à le lire !!!


Tu n'as peur de rien :)

Sérieusement :
man est beaucoup plus un "manuel de référence" qu'un "tutoriel". Tu peux
probablement apprendre à utiliser bash en étudiant les scripts présents
sur ton disque dur, mais les progrès seraient AMA beaucoup plus
faciles|rapides avec un bon tutoriel.

Cherche bash du côté du LDP ( http://www.tldp.org/ ), il doit bien s'y
trouver quelque chose de sympa.

Je m'essaye à perl qui me paraît plus accessible.


Que bash ?¡¿! Euh, joker ...

--
Philippe