143 votes

Touches fléchées, Home, End, touches de complétion de tabulation ne fonctionnent pas dans Shell.

J'ai installé ubuntu minimal(mini.iso) sur ma vm. J'ai ensuite utilisé le mode récupération pour me connecter en tant que root et créer un compte avec useradd -m admin et ensuite définir un mot de passe avec passwd admin .

Lorsque je me connecte sur le nouveau compte, au lieu de l'invite normale, je ne vois qu'une $ signe. Si j'essaie de compléter par une tabulation une commande ou un nom de fichier, il imprime une tabulation normale. Si j'essaie d'utiliser les touches fléchées, le message suivant s'affiche ^[[A , ^[[B , ^[[C o ^[[D . Aussi, ls n'ajoute plus de couleurs.

Aucun de ces problèmes n'était en mode de récupération. Comment puis-je réparer cela ?

0voto

IAM_AL_X Points 101

Si tout le reste fonctionne, mais que certaines tentatives de complétion de nom de fichier (autocomplétion) échouent, il se peut que vous n'ayez pas l'autorisation d'effectuer une recherche dans un répertoire qui est un composant du chemin d'accès.

Supposons que vous souhaitiez obtenir le listing d'un autre utilisateur .bash_profile fichier. Les éléments suivants ls fonctionnera ; car sudo exécute le ls avec la permission requise.

$ sudo ls -al /home/someone_else/.bash_profile    

Cependant, si vous essayez d'utiliser la complétion par nom de fichier, la complétion par tabulation ne fait rien.

$ sudo ls -al /home/someone_else/.bash_pr<tab>   # does not complete

C'est parce que le bash l'achèvement fonctionne avant sudo est invoquée. La commande pourrait tout aussi bien être :

$ ls -al /home/someone_else/.bash_pr<tab>   

Comme il n'y a pas d'autorisation de recherche dans ce répertoire, l'exécution de la commande ne donne rien.

Pour fonctionner temporairement avec de plus grandes permissions, vous pouvez démarrer un nouveau Shell avec sudo .

$ sudo bash

Le site ls peut maintenant être exécutée sans l'option sudo prédicat, et l'autocomplétion fonctionne. (Notez que l'invite passe de $ a # .)

# ls -al /home/someone_else/.bash_pr<tab>   

Assurez-vous simplement de tuer le Shell lorsque votre tâche est terminée ; un Shell avec autant de puissance est dangereux.

# exit

-1voto

Josef Klimuk Points 1446

Cela résoudra tout : collez et appuyez sur . Après cela, vous pourrez faire de l'autocomplétion à partir de l'historique, en utilisant la flèche vers le haut.

bind '"\e[A": history-search-backward'

Tiré de : https://unix.stackexchange.com/questions/5366/command-line-completion-from-command-history Vous pouvez également utiliser Ctrl + R pour voir votre historique.

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