Bonjour,
Il y a fort longtemps, quand j'utilisais zsh comme shell principal, j'usais et abusais d'une fonctionnalité très pratique qui permettait de mettre de coté la ligne de commande courante pour pouvoir en faire une autre. Une fois la 2ème commande exécutée, la ligne de commande n°1 était restaurée.
Je trouve ça pratique car souvent, quand il me manque une info pour compléter une commande en cours. Je n'ai pas d'autre choix que d'annuler la commande pour lancer la commande me permettant d'avoir cette info, puis de retaper ma commande.
Cas d'utilisation: je veux éditer un fichier dans le rep courant:
# vim # ah j'ai oublié le nom du fichier - raccourci clavier permettant de mettre de coté la commande courante
# ls -l # exécution de commande #2 pour retrouver le nom du fichier
...
# vim # restauration de la commande initiale.
Ma question, est-ce que ça existe avec bash ?
Salutations
# Ctrl-z
Posté par Anonyme . Évalué à 2. Dernière modification le 28 octobre 2022 à 16:28.
pour suspendre le processus en cours et revenir à bash: Ctrl-z
pour réactiver le processus suspendu et le passer en arrière plan:
bg
au prompt bashpour réactiver le processus suspendu et reprendre la main dessus:
fg
au prompt bash[^] # Re: Ctrl-z
Posté par ranDom (site web personnel) . Évalué à 4.
Je me suis mal exprimé, ce n'est pas tout à fait ce que je recherche:
Ce que tu décris fonctionne pour les programmes en cours de fonctionnement. Moi je cherche la même chose, mais pour la commande en cours d'édition, pas encore exécutée.
je me souviens d'un raccourci zsh permettant de sauvegarder la ligne de commande courante (non exécutée) afin de libérer celle-ci le temps d'exécuter une autre commande. la cli initiale (en cours d'édition) est ensuite restaurée.
# Ctrl-u/Ctrl-y
Posté par xenom . Évalué à 10.
Je ne connais pas l’équivalent exact en bash avec la restauration automatique, mais c'est possible de faire
Ctrl-u
pour supprimer la ligne etCtrl-y
pour la coller à nouveau, avec bash et zsh.Dans zsh le widget s'appelle
push-line
le terme peut aider pour trouver l’équivalent en bash.[^] # Re: Ctrl-u/Ctrl-y
Posté par ranDom (site web personnel) . Évalué à 8.
Tu m'as mis sur la bonne piste, merci
Sous zsh c'est control-q qui permet ça.
Sous bash, pas d'autre moyen que la séquence control-u + control-y
source: https://sgeb.io/posts/bash-zsh-half-typed-commands/
[^] # Re: Ctrl-u/Ctrl-y
Posté par bobo38 . Évalué à 3.
Super tricks je ne connaissais pas! Merci!
# La solution est presque dans la question
Posté par Cyril Brulebois (site web personnel) . Évalué à 8.
Sans utiliser une fonctionnalité particulière, j'utilise l'historique du shell de cette façon :
Ctrl-a
pour aller en début de ligne#
pour basculer toute la ligne en commentaireEnter
pour passer à la commande suivante.↑
pour revenir à la commande en commentaire.#
, édition de la ligne, et validation.Debian Consultant @ DEBAMAX
[^] # Re: La solution est presque dans la question
Posté par deuzene (site web personnel) . Évalué à 4.
Plus rapide : une fois la ligne écrite, Alt+# ou (Esc puis #) va commenter la ligne en cours.
« Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. »
# en utilisant la commande history du bash
Posté par MicP . Évalué à 3. Dernière modification le 29 octobre 2022 à 16:27.
Bonjour
Je liste (ou n'importe quelle autre commande) deux noms de fichiers.
Mais comme j'ai oublié les noms des fichiers que j'avais listés dans la ligne de commande que j'avais précédemment lancée mais que je sais que c'est le premier nom que j'avais donné, alors, après avoir tapé ma commande (par exemple
head -1
), je rappelle le nom du premier fichier en entrant :!:1
Même chose si j'avais voulu rappeler le nom du deuxième fichier, mais en mettant cette fois un 2 :
!:2
[^] # Re: en utilisant la commande history du bash
Posté par MicP . Évalué à 3. Dernière modification le 28 octobre 2022 à 21:34.
J'aurais aussi pu
remplacer le
1
par un^
pour demander le premieret, dans cet exemple où il n'y avait que 2 noms de fichier,
remplacer le
2
par un$
pour demander le dernier.[^] # Re: en utilisant la commande history du bash
Posté par MicP . Évalué à 4. Dernière modification le 29 octobre 2022 à 16:25.
On s'habitue très vite au confort, et du coup, j'avais oublié de spécifier dans mes message précédents que que sur mon système, j'ai activé depuis longtemps l'option
histverify
de mon shellbash
en ajoutant, dans mon fichier de configuration ~/.bashrc
la ligne de commande suivante :
shopt -s histverify
NOTE :
Il me semble que, pour le shell zsh, l'option histverify est activée par défaut.
C'est grâce à cette option que la ligne de commande entrée :
s'affiche d'abord en clair afin de me permettre de vérifier si la ligne de commande qui va être lancée correspond bien à ce que je voulais lancer :
Toujours en utilisant les fonctionnalités de la commande
history
,on peut lister les dernières commandes lancées pour récupérer le numéro d'enregistrement qui sera affiché en lançant simplement la commande
history
et on peut utiliser le premier, deuxième, etc. argument donné dans cette ligne de commande
en spécifiant le numéro d'enregistrement de la commande et le numéro d'ordre de l'argument utilisé :
Par exemple, si dans le retour de la commande history,
j'ai la ligne suivante qui s'affiche :
Je peux récupérer le troisième argument (
ncdu
) qui avait été donné à la commandeapt
dans cette ligne de commande en entrant :!31:3
Donc, si je veux installer le paquetage
ncdu
je pourrais entrer la ligne de commande suivante :
Si l'option du shell
histverify
n'est pas activée, la ligne de commande sera directement lancée, sinon, elle sera d'abord affichée et on pourra choisir de la lancer (ou pas).[^] # Re: en utilisant la commande history du bash
Posté par ranDom (site web personnel) . Évalué à 4.
Je confirme que l'option histverify est un "must-have" si on s'amuse beaucoup avec l'historique.
Dans le même ordre d'idée, j'utilise énormément !$ qui correspond au dernier argument de la précédente commande:
Il y a également $* qui correspond à l'ensemble des arguments de la précédente commande
En plus d'utiliser les numéros de commande de l'historique, on peut faire des recherches:
mais bon on s'éloigne du sujet initial :)
[^] # Re: en utilisant la commande history du bash
Posté par MicP . Évalué à 2. Dernière modification le 29 octobre 2022 à 09:09.
Bonjour
Dans mon message du 28/10/22 à 21:25
j'aimerai remplacer l'extrait suivant :
par :
et dans mon message du 28/10/22 à 22:34
j'aimerai remplacer l'extrait suivant :
par :
[^] # Re: en utilisant la commande history du bash
Posté par palm123 (site web personnel) . Évalué à 4.
fait
ウィズコロナ
[^] # Re: en utilisant la commande history du bash
Posté par MicP . Évalué à 3.
Merci beaucoup
En vous souhaitant tout plein de bonnes choses.
# ctrl-q sur zsh
Posté par BFG . Évalué à 2. Dernière modification le 04 novembre 2022 à 16:37.
message supprimé
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.