Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[bash] Complétion de path

7 réponses
Avatar
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

7 réponses

Avatar
Olivier Miakinen
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
Avatar
Damien Wyart
* Olivier Miakinen <om+ in fr.comp.os.unix:
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
Avatar
Damien Wyart
* Olivier Miakinen <om+ in fr.comp.os.unix:
> '--------------+------------------------------------------------------------'
> | * | 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
Avatar
Paul Gaborit
À (at) Thu, 20 Mar 2014 11:54:49 +0100,
Damien Wyart écrivait (wrote):

* Olivier Miakinen <om+ in fr.comp.os.unix:
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 - <http://perso.mines-albi.fr/~gaborit/>
Avatar
Nicolas George
Olivier Miakinen , dans le message <lgedji$2lvh$,
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.
Avatar
Lucas Levrel
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ν οιδα οτι ουδεν οιδα (Σωκρατης)
Avatar
Olivier Miakinen
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.