Vuelva a ejecutar varios comandos de historial

22

Imagine que acaba de ejecutar una docena de comandos. Decir...

$ cd foo/    # history cmd #10000 (my history is very long)
$ ... more commands ...
$ cd ../     # history cmd #10012 

Sé que puedo volver a ejecutarlos concatenados !-12 && !-11 && !-10 && (and so on) && !!si acaban de ejecutarse (poco probable) o !10000 && !10001 && !10002 && (and so on), pero ¿hay una manera más simple que escribir a mano cada número de historial con una explosión y símbolos?

¿Acaso hay algún tipo de rango que no conozco en bash?

Por ejemplo, !{10000-10012}# algo como esto, solo funciona.

inanutshellus
fuente

Respuestas:

23

Para esto es el fccomando.

fc -12 -1

o

fc 10000 10012

Esto no es exactamente lo que desea, ya que lanzará primero un editor, pero probablemente sea algo bueno, ya que le da la oportunidad de verificar que tenga los comandos correctos e incluso editarlos usando todas las capacidades de su editor favorito. Una vez que guarde los cambios y salga del editor, se ejecutarán los comandos.

jw013
fuente
Ah hah! ¡Brillante! fc. Arreglar comandos. ¡Tiene sentido!
inanutshellus
1
Para evitar iniciar un editor (¡peligroso!), Puede usarfc -e true -12 -1
BingsF
no disponible en ubuntu
okwap
1
@okwap, sin sentido. Se especifica POSIX y ciertamente está disponible en Ubuntu. (Sin embargo, es un caparazón incorporado, como debe ser, por lo que si está buscando /binno lo encontrará.)
Comodín el