L’un des serveurs sur lequel j’ai assez souvent ssh
utilise le codage western au lieu de utf-8 (et il n’ya aucun moyen de changer cela).
J'ai commencé à écrire un script bash pour me connecter à ce serveur. Je n'aurai donc pas à taper l'adresse complète à chaque fois, mais j'aimerais améliorer ce script pour qu'il modifie également correctement le codage de la fenêtre du terminal.
La modification que je dois effectuer peut être effectuée à l'aide de la souris en sélectionnant "Terminal" -> "Définir le codage des caractères ..." -> "Western (ISO-8859-1)". Existe-t-il une commande de terminal qui fasse la même chose pour la fenêtre/l’écran de terminal en cours?
à préciser:
Je ( ne suis pas intéressé par les moyens de changer les paramètres régionaux du système sur le site distant - ce système est administré par quelqu'un d'autre, et je n'ai aucune idée de ce qui pourrait dépendre du codage latin-1. Ce que je veux faire est de laisser cette fenêtre de terminal de mon côté changer l'encodage des caractères à celui mentionné ci-dessus, de la même manière que je peux le faire avec ma souris et les menus.
Vous recherchez luit
qui est conçu à cet effet:
$ luit -encoding ISO-8859-1 ssh remote.Host
Il va convertir la sortie de la commande ssh en UTF-8, vous n’aurez donc pas besoin de changer le codage du terminal.
Commencez par modifier les paramètres régionaux actuels dans votre éditeur favori.
Sudo gedit /var/lib/locales/supported.d/local
à quelque chose comme
en_GB.UTF-8 UTF-8
en_US.UTF-8 UTF-8
en_GB.ISO-8859-1 ISO-8859-1
en_US.ISO-8859-1 ISO-8859-1
Puis lancez Sudo dpkg-reconfigure locales
Puis définissez le terminal avec LANG=en_GB.ISO-8859-1
J'espère que ça marche
Gnome Terminal utilise gconf pour stocker les paramètres. Ceux-ci peuvent être manipulés avec gconftool
Ainsi, vous pouvez utiliser:
gconftool --set --type=string /apps/gnome-terminal/profiles/Default/encoding ISO-8859-1
J'ai testé cela le 12.04. Pour une raison quelconque, le menu ("Terminal"->"Set Character Encoding..."
) ne semble pas être mis à jour en temps réel, mais le codage de caractères réel est mis à jour correctement.
Voici une autre solution que j'avais l'habitude de changer le profil (pour la couleur de fond) lors de la connexion à un serveur de production. Cela implique xdotool
.
xdotool
simulera les séquences de touches nécessaires pour sélectionner l'élément de menu souhaité. Essayez-le d'abord avec votre clavier, puis notez la séquence:
$ xdotool key alt+t Down c Down Return
Cela activera le premier encodage de caractères. Ajoutez plus de touches Down
avant le Return
pour en sélectionner une autre.
Remarque: pour ssh
, vous pouvez également utiliser un fichier ~/.ssh/config
pour configurer des alias sur vos serveurs.
Je ne sais pas comment le tester, mais avec Konsole sur Kubuntu, je peux effectuer les tâches suivantes:
1) Trouver une application enregistrée sur dbus
$ qdbus
J'utilise konsole
donc un simple qdbus | grep kons
me donne org.kde.konsole
2) Trouver les sessions en cours à Konsole
$ qdbus org.kde.konsole | grep Sessions
/Sessions
/Sessions/1
$ set | grep -i sessions
KONSOLE_DBUS_SESSION=/Sessions/1
3) Trouver des méthodes utiles
$ qdbus org.kde.konsole /Sessions/1 | grep -i codec
method QByteArray org.kde.konsole.Session.codec()
method bool org.kde.konsole.Session.setCodec(QByteArray codec)
4) Vérifier le codage actuel
$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.codec
UTF-8
5) Définir le codage
$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.setCodec ISO-8859-1
true
6) Vérifier le codage actuel
$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.codec
ISO-8859-1
Ubuntu aura un programme terminal similaire, mais vous devrez vous débrouiller avec le nom du service, le chemin, la méthode et les arguments corrects.
Sur xterm
, modifiez le codage en utilisant séquences de contrôle . Par exemple, dans bash
, vous obtenez le jeu de caractères UTF-8 en exécutant:
echo -n $'\e%G'
Le codage ISO 8859-1 est accessible en exécutant:
echo -n $'\e%@'