Existe-t-il un moyen de sauvegarder une commande dans l'historique bash sans l'exécuter? par exemple
$ cmd [a long list of arguments]
et maintenant pendant la frappe, je me souviens que je voudrais faire autre chose en premier. Puis-je avoir quelque chose comme
$ cmd [a long list of arguments][some-key-strokes]
et cela ne s'exécute pas réellement mais entre dans l'historique de bash pour que je puisse l'utiliser plus tard?
#
, puis appuyez sur Entrée.Réponses:
Il peut y avoir un meilleur moyen, mais vous pouvez utiliser le
:p
modificateur de l'expansion de l'historique pour imprimer la ligne de commentaire actuelle sans l'exécuter.!#
est la ligne actuelle, et%
en elle-même ne correspondra à rienla source
ls -al
+1Utilisez l'
-s
option de lahistory
commande:L'appel à
history -s
lui-même, commodément, n'est pas ajouté à l'historique des commandes, donc dans votre historique, il semble que vous ayez exécutécmd
sans réellement le faire.la source
Habituellement, cela se fait par
Notez que le nom de l'historique peut différer sur votre système. Vous pouvez donc utiliser l'
HISTFILE
environnement varce qui rend:
la source
Normalement, j'ajoute juste un # au début de la ligne pour transformer la ligne en commentaire:
Je préfère cette façon parce que vous pouvez le faire avec seulement 3 [4 si vous avez besoin de SHIFT pour insérer #] touches
^ a va au début de la ligne actuelle
# ajoute le commentaire
ENTER exécute le commentaire
la source
... ou utilisez le combo de touches:
ESC #
Voir aussi: Bash - enregistrer la commande sans l'exécuter
la source
Vous pouvez essayer d'ajouter un espace et | (pipe) à la fin de la ligne, en appuyant sur Entrée, puis sur Ctrl-C'ing.
( Space, |, Enter, Ctrl+ C)
La commande sera dans votre historique avec un | à la fin (peut simplement supprimer avec retour arrière) au lieu d'un # au début (potentiellement plus fastidieux à supprimer).
AVERTISSEMENT: Je ne sais pas si cela fonctionne toujours! À utiliser à vos risques et périls!
la source
Vous pouvez essayer d'utiliser cette ligne:
history -s -p $COMMAND
De
help
:Cela signifie que vous pouvez développer des choses comme
!!
et stocker le résultat au bas de l'histoire.la source
history -s
a été donnée il y a deux ans dans une réponse. Est-ce que cela-p
s'améliore? Que fait-p
-il? (Dans la mesure où cela est logique de le faire, vous devez modifier votre réponse pour l'améliorer, et ne pas répondre à mon commentaire par un autre commentaire.)Une autre option consiste à aller au début de la ligne et à faire ce que vous alliez faire suivi de &&, comme
Donc, si la chose que vous vouliez faire réussit, votre commande s'exécutera immédiatement après, et si elle échoue, votre commande ne s'exécutera pas, mais elle sera dans l'historique. Vous pourriez aussi faire
Étant donné que le test sans args échouera, il s'agit d'une poignée de touches supplémentaires par rapport à la
#
méthode.la source
Je pense que les "quelques touches" que vous voulez sont Ctrl-U et Ctr-Y qui stockent une ligne dans le kill-ring, puis la retirent plus tard. Cela ne rentre pas dans l'histoire, mais je pense que non, car vous ne l'avez pas fait.
Readline Killing Commands
Tuer et tirer
J'ai appris cela il y a des années, puis j'ai oublié et je suis allé chercher ces touches clés aussi.
Il est également discuté ici: /unix/140741/how-to-save-a-command-you-entered-without-executing-it
la source