151 votes

Comment configurer PuTTY pour que Home/End/PgUp/PgDn fonctionnent correctement dans bash ?

Les touches Home, End, PageUp, PageDown saisissent toutes une valeur ~ dans ma session bash au lieu de déplacer le curseur / la vue. Pourquoi cela se produit-il et quels paramètres dois-je modifier ?

GNU bash, version 4.0.28(1)-release (x86_64--netbsd)
PuTTY v0.60

La question se lisait à l'origine :

Dans PuTTY, pourquoi l'appui sur la touche "Home" du Shell (bash) tape-t-il un "~" ? Ou plutôt, comment faire pour qu'elle déplace le curseur au début de la commande que j'ai tapée ?

(Je pensais que la raison était que ~ est la domicile mais les réponses indiquent que ce n'est pas le cas).

185voto

Dans l'onglet Connexion > Données, changez la chaîne de type de terminal de "xterm" (par défaut) à "linux". Cela a fonctionné pour moi.

enter image description here

54voto

user12786 Points 454

Cela se produit parce que le type de terminal de PuTTY n'est pas correctement défini, ou parce que les définitions terminfo correctes ne sont pas installées sur votre serveur.

Sur les systèmes basés sur Debian, l'option ncurses terme (version 5.7+20081213-1) comprend des fichiers de définition de terminfo pour les éléments suivants mastic , putty-256color y mastic-vt100 types de terminaux. Si ce paquetage est installé, vous pouvez définir le "Terminal-type string" à "putty" au lieu du "xterm" par défaut dans la configuration de la session de Putty (Connexion -> Données).

Stephen Irons mentionne également "linux" comme un autre type de terminal qui fonctionne ; je crois que c'est correct d'après mon expérience antérieure, mais je ne l'ai pas testé récemment.

Sur mes systèmes, cela permet à Home et End de fonctionner correctement, bien que PageUp/PageDown ne fassent pas défiler la fenêtre de la console. (Ils fonctionnent correctement dans les applications ncurses telles que aptitude et Shift-PgUp/Shift-PgDn font défiler la fenêtre de la console).

26voto

Damien Garrido Points 330

Si vous souhaitez vérifier quel code est envoyé par PuTTY à votre terminal lorsque vous appuyez sur une touche ou une combinaison de touches, il vous suffit d'émettre une commande Ctrl+V puis appuyez sur la touche souhaitée.

Par exemple, sur ma boîte, en appuyant sur la touche Accueil va générer la chaîne suivante sur mon terminal :

^[[1~

Cela signifie que PuTTY envoie le caractère d'échappement ^[ suivi de la chaîne de caractères [1~ .

Vous pouvez créer un ~/.inputrc dans votre $HOME ou encore un dossier /etc/inputrc en fonction de votre système. Remplissez ensuite ce fichier avec les codes PuTTY et les actions Bash correspondantes que vous souhaitez voir déclenchées par Bash.

Note : Rem remplacer tous les remplacer tous ^[ par le caractère équivalent \e chaîne de caractères

Dans mon exemple, je vais ajouter une ligne avec mon Accueil et le code de la clé début de ligne (qui par défaut est liée à l'action Ctrl+A dans Bash) :

"\e[1~": beginning-of-line

Pour info, mon fichier inputrc a le contenu suivant :

set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
"\e[1~": beginning-of-line     # Home key
"\e[4~": end-of-line           # End key
"\e[5~": beginning-of-history  # PageUp key
"\e[6~": end-of-history        # PageDown key
"\e[3~": delete-char           # Delete key
"\e[2~": quoted-insert         # Insert key
"\eOD": backward-word          # Ctrl + Left Arrow key
"\eOC": forward-word           # Ctrl + Right Arrow key

De @Cimbali : Plus de commandes liables (comme previous-history : Déplacer `sup' dans la liste de l'historique) disponibles sur cette page de référence .

14voto

Iain Points 4621

Crtl+A vous amène au début de la ligne.

Voici un liste des raccourcis clavier de Bash

10voto

Damian Powell Points 315

Ce qu'il envoie en fait, c'est ^[[1~ qui est une séquence d'échappement terminale composée de :

  • ^[ - escape
  • [ - crochet gauche
  • 1 - un
  • ~ - tilde

Vous pouvez voir cela en appuyant sur Ctrl + V puis Home .

Vous pouvez peut-être résoudre votre problème en changeant le paramètre clavier de PuTTY pour les touches Home et End en rxvt (ce qui rend la séquence d'échappement ^[[H ou en changeant le $TERM que vous utilisez (ou en éditant ~/.inputrc ).

Au fait, il n'y a aucune relation entre le tilde que vous obtenez lorsque vous appuyez sur Home et le tilde qui représente le répertoire personnel. Par exemple, dans mon installation Page-Down produit ^[[6~ qui imprimerait également un tilde s'il n'était pas interprété correctement.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X