11 votes

Enregistrer la commande dans l'historique sans l'exécuter dans bash

Existe-t-il un moyen de sauvegarder une commande dans l'historique de bash sans l'exécuter ? Par exemple

$ cmd [a long list of arguments] 

et maintenant pendant que je tape, je me souviens que j'aimerais faire autre chose avant. Est-ce que je peux avoir quelque chose comme

$ cmd [a long list of arguments][some-key-strokes]

et cela ne s'exécute pas réellement mais va dans l'historique de bash pour que je puisse l'utiliser plus tard ?

1voto

Drflash Points 1

Je pense que les "quelques touches" dont vous avez besoin sont Ctrl-U et Ctr-Y qui stockent une ligne dans l'anneau de mort, et la ressortent plus tard. Cela ne va pas dans l'historique, mais je pense que cela ne devrait pas, puisque vous ne l'avez pas fait.

Commandes de destruction de la ligne de lecture

Killing and Yanking

J'ai appris ça il y a des années, puis j'ai oublié et j'ai cherché ces touches aussi.

On en parle ici aussi : https://unix.stackexchange.com/questions/140741/how-to-save-a-command-you-entered-without-executing-it

0voto

Josiah Krutz Points 136

Vous pouvez essayer d'ajouter un espace et un | (pipe) à la fin de la ligne, d'appuyer sur la touche Entrée, puis de faire Ctrl-C.

( Space , | , Enter , Ctrl + C )

La commande sera dans votre historique avec un | à la fin (vous pouvez simplement l'effacer avec le retour arrière) au lieu d'un # au début (potentiellement plus fastidieux à effacer).

AVERTISSEMENT : Je ne sais pas si cela fonctionne toujours ! Utilisez-le à vos risques et périls !

$ cmd [liste d'arguments longue] |

> Ctrl+C

$ Up

$ cmd [liste d'arguments longue] |

0voto

akauppi Points 3125

Vous pouvez essayer d'utiliser cette ligne :

history -s -p $COMMAND

De help :

The -p option means to perform
history expansion on each ARG and display the result,

Cela signifie que vous pouvez développer des choses comme !! et stocker le résultat au bas de l'historique.

0voto

jwir3 Points 1384

Une autre option consiste à aller au début de la ligne et à faire ce que vous alliez faire, suivi de &&, comme suit

rm old_file && cmd [args]

Donc si la chose que vous vouliez faire réussit, votre commande sera exécutée immédiatement après, et si elle échoue, votre commande ne sera pas exécutée, mais elle sera dans l'historique. Vous pouvez aussi faire

test && cmd [args]

Puisque le test sans arguments échouera, mais il s'agit d'une poignée de frappes supplémentaires par rapport à la fonction # méthode.

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