4 votes

Pourquoi le Terminal Ubuntu n'accepte-t-il pas le caractère "\" ?

Je ne parviens pas à faire en sorte que mon terminal accepte un \ lorsque je le tape. Rien ne se passe. J'ai cherché sur Google mais je n'ai rien trouvé qui semble résoudre ce problème. Je n'ai aucune idée par où commencer pour résoudre ce problème.

EDIT :

Je peux utiliser le \ dans Eclipse, n'importe quel éditeur de texte (y compris nano ou d'autres outils en ligne de commande). La commande exacte en question est :

find -type f -exec chmod -x {} \;    

Si je copie et colle cette ligne, le caractère \ disparaît. Ensuite, si j'essaie de le taper, rien ne se passe.

Ce n'est un problème que dans la ligne de commande du shell.

Merci.

EDIT DEUX :

Il semble y avoir une confusion. Si je copie la commande ci-dessus sur ma ligne de commande, SANS APPUYER SUR ENTRÉE (c'est-à-dire sans l'exécuter), voici ce qui apparaît dans mon shell :

$find -type f -exec chmod -x {} ;    

Si j'essaie ensuite d'entrer un \ pour échapper au ;, le symbole ne s'affiche pas. Si j'appuie sur entrée à n'importe quel moment alors que cette commande a été entrée dans les circonstances ci-dessus, elle ÉCHOUE à s'exécuter, car le ; n'est pas pris en compte dans la commande.

Edit 3 :

J'utilise GNOME 3.4.1.1 sur Ubuntu 12.04 LTS

3voto

steeldriver Points 118154

Une possibilité est que la touche backslash ait été liée à une commande readline (readline est la bibliothèque qui permet d'éditer les commandes shell in situ, par exemple en liant Ctrl+h à l'action backward-delete-char).

Pour vérifier si c'est le cas, vous pouvez essayer de démarrer un sous-shell bash avec l'édition readline désactivée

bash --noediting

Si la touche backslash fonctionne dans ce sous-shell, alors les endroits à vérifier pour la définition de la touche liée seraient /etc/inputrc pour la configuration globale et ~/.inputrc pour la configuration par utilisateur. Vous pourriez également essayer d'afficher et de rechercher les liaisons de touches actuellement définies à partir de la ligne de commande en utilisant

bind -P | grep '\\\\'

Les backslashes supplémentaires sont nécessaires car un backslash littéral apparaîtra dans la configuration readline comme \\, chacun d'entre eux ayant besoin d'une échappatoire supplémentaire dans le shell. Evidemment, vous ne pouvez le faire que dans le sous-shell, si le backslash est lié dans le shell normal.

Pour information, il y a une option de commande bind pour supprimer une liaison, mais il n'est pas clair comment entrer l'argument keyseq lorsqu'il est déjà lié

-r  keyseq         Supprime la liaison pour KEYSEQ.

Pour plus d'informations, consultez help bind dans la ligne de commande bash

1voto

colboynik Points 736

\ échappe à tout caractère qui le suit. ; termine explicitement une commande. \; signifie échapper au ; et le transmettre à la commande que vous invoquez à l'intérieur de find (tout ce qui suit -exec). Avec \ le point-virgule s'applique à chmod tandis que sans \ le point-virgule s'appliquerait à find.

Votre terminal reconnaît \. Lorsque vous le saisissez dans votre terminal, vous indiquez à votre terminal d'échapper au caractère suivant - que vous ne fournissez pas.

Si vous souhaitez afficher \ en tant que caractère, échappez-le. Tapez \\.

0voto

pellea72 Points 323

Aucune idée si c'est la cause racine dans votre cas mais je peux reproduire un comportement similaire en entrant cette commande:

stty eof \\

Cela peut être corrigé avec:

stty sane

Vous voudrez peut-être essayer la dernière commande pour voir si cela corrige votre problème.

0voto

drexeljoe Points 11

Je travaille sur un "macBook Air" 2015, avec "Parallels 11", et une machine virtuelle "Ubuntu". Mon clavier est le clavier sans fil "réduit" d'Apple. J'ai choisi "Macintosh français" (parce que je suis français...!) pour le clavier dans le MENU, mais dans le Terminal d'Ubuntu, initialement, je ne pouvais pas taper "\" ni "|". Donc je vais dans les "Paramètres Système", "Saisie de texte" et clique sur le bouton "Paramètres du clavier" dans le coin en bas à droite de la fenêtre. Dans la deuxième nouvelle fenêtre, je sélectionne "Saisie" et ensuite la ligne "Touche de caractères alternatifs"; en cliquant sur l'extrémité droite de cette ligne, il est possible de choisir parmi de nombreuses touches spéciales... Dans mon cas, aucune touche n'était initialement définie, et j'ai sélectionné "Alt Gauche" pour émuler l'action normale sous Mac OS X. Long à expliquer, mais rapide et facile à réaliser ! Guy de Pernon

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