[bash] Complétion de path

Le
Olivier Miakinen
Bonjour,

Hier il m'est arrivé la chose suivante, avec bash en mode 'set -o vi'.
Au moment de récupérer la dernière commande par 'Esc k', mon doigt a
dérapé sur le clavier, et du coup, au lieu de lire :
scp user@host:/path localname
j'ai obtenu :
/usr/bin/scp user@host:/path localname

Comment se fait-ce ? Plus exactement, comment reproduire ce comportement
que je trouve très utile ?

Cordialement,
--
Olivier Miakinen
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #26041892
Bonjour,

Le 11/03/2014 15:11, j'écrivais :

Hier il m'est arrivé la chose suivante, avec bash en mode 'set -o vi'.
Au moment de récupérer la dernière commande par 'Esc k', mon doigt a
dérapé sur le clavier, et du coup, au lieu de lire :
scp :/path localname
j'ai obtenu :
/usr/bin/scp :/path localname

Comment se fait-ce ? Plus exactement, comment reproduire ce comportement
que je trouve très utile ?



Il n'y a donc personne qui sache quelle combinaison de touches
permet de remplacer automatiquement « commande arguments » par
« /chemin/commande arguments » ?

--
Olivier Miakinen
Damien Wyart
Le #26041992
* Olivier Miakinen
Il n'y a donc personne qui sache quelle combinaison de touches permet
de remplacer automatiquement « commande arguments » par
« /chemin/commande arguments » ?



J'ai bien cherché, mais je n'ai pas trouvé.

Ce que tu indiques ressemble à l'appel à shell-expand-line (voir le man
bash), mais cette fonction n'est pas "bindée" en mode vi (voir
http://www.catonmat.net/download/bash-vi-editing-mode-cheat-sheet.txt).

La piste où le chemin complet serait dans l'historique ne tient pas non
plus (ne semble pas possible en bash, et de toutes façons tu aurais dans
ce cas toujours le comportement).

Donc je sèche !

--
DW
Damien Wyart
Le #26042062
* Olivier Miakinen
> '--------------+------------------------------------------------------------'
> | * | Insert all possible completions. |
> '--------------'------------------------------------------------------------'

Et effectivement, « Esc * » complète le chemin. Un grand merci à toi !



Bizarre car j'y avais pensé (j'ai examiné toute la liste) mais quand
j'ai testé avant de te répondre,sur ma machine, ça ne complétait pas le
chemin (de plus, s'il existe plusieurs complétions, elles seront toutes
insérées, et je pense que cela risque de te gêner !).
Cela doit dépendre de la configuration de bash et éventuellement de sa
version...

Ceci dit, tant mieux si cela répond, même de façon détournée, à ta
question... :)

--
DW
Paul Gaborit
Le #26042272
À (at) Thu, 20 Mar 2014 11:54:49 +0100,
Damien Wyart
* Olivier Miakinen
Il n'y a donc personne qui sache quelle combinaison de touches permet
de remplacer automatiquement « commande arguments » par
« /chemin/commande arguments » ?



J'ai bien cherché, mais je n'ai pas trouvé.



Le problème est que ça n'a pas toujours de sens. Par exemple, si la
commande est une built-in ou une fonction...

Il y a bien 'where' et 'which' qui peuvent donner des informations. Mais
ça ne répond pas au besoins de remplacement automagique.

--
Paul Gaborit -
Nicolas George
Le #26043112
Olivier Miakinen , dans le message a écrit :
Il n'y a donc personne qui sache quelle combinaison de touches
permet de remplacer automatiquement « commande arguments » par
« /chemin/commande arguments » ?



Avec zsh, « =commande » sera remplacé à l'exécution, et aussi par la
complétion s'il n'y a pas de commande plus longue qui complète de même.
Lucas Levrel
Le #26043102
Le 20 mars 2014, Olivier Miakinen a écrit :

Cela y répond parfaitement, puisque la première question était « mais
comment diable ai-je pu faire ça en dérapant sur le clavier » !



Faire * au lieu de k, ce n'est pas une glissade, c'est un triple lutz !

--
LL
Eν οιδα οτι ουδεν οιδα (Σωκρατης)
Olivier Miakinen
Le #26043322
Le 20/03/2014 20:38, Lucas Levrel a écrit :

Cela y répond parfaitement, puisque la première question était « mais
comment diable ai-je pu faire ça en dérapant sur le clavier » !



Faire * au lieu de k, ce n'est pas une glissade, c'est un triple lutz !



J'avais déjà fait Esc k. C'est probablement au moment d'appuyer sur
Entrée que j'ai dérapé sur *, ce qui représente un écart assez faible
sur un clavier Azerty.
Publicité
Poster une réponse
Anonyme