Terminal con botón "repetir último"

Terminal con botón "repetir último"

A menudo estoy compilando cosas y, por lo tanto, repitiendo el mismo comando una y otra vez, por lo que me gustaría beneficiarme de mi "memoria visual" y tener una especie de botón de "repetir el último comando" adjunto a una terminal. Más precisamente, así es como lo veo:

  • Mi terminal "especial" sería como un emulador de terminal estándar, con una línea de entrada adicional en la parte inferior, que tendría un botón "ejecutar" adjunto. Al hacer clic en el botón se ejecutará el comando.sinborrándolo.
  • Tal vez incluso se podría apilar una cantidad arbitraria de dichos comandos (ya que a menudo necesito alternar entre 2 o 3 comandos).

Sé que puedo usar solo Enterel teclado para rehacer el último comando, pero lo que sucede a menudo es que olvido que tuve que escribir otro comando (para arreglar algo, o lo que sea), por lo que no aparece el comando correcto del historial. Entonces, en lugar de ser un reflejo, tengo que leer (al menos hojear) el comando antes de presionar Enter.

¿Existe tal artilugio en alguna parte? A menudo uso varias terminales precisamente para asegurarme de que cada una tenga siempre el comando "correcto" como último, pero mis habilidades Alt+ Tabgeneralmente me hacen ir a la ventana equivocada. Y necesito información del terminal, como el entorno y cwd, por lo que no puedo simplemente intentar "integrarlo" en mi editor de código. Quiero decir, usar Alt+ F2y luego Enterno funcionaría (ya que también necesito leer la salida del terminal). Solo quiero poder utilizar lo mejor del teclado y de la memoria visual (mediante clics) al mismo tiempo.

Respuesta1

Creo que la expansión de la historia podría ser muy útil aquí. Por ejemplo, al escribir !pse ejecutará el último comando que comience con 'p'. De manera similar !viejecutará el último comando que comience con 'vi', y así sucesivamente. Más informaciónaquí. Si no está seguro de cuál de ellos fue el último, puede configurar la opción de shell histverify( shopt -s histverify), para poder editar (o inspeccionar) el comando antes de ejecutarlo. Más sobre estoaquí.

Alternativamente, puede utilizar la función de búsqueda del historial. En bash, presione Ctrl+Ry escriba el comando que desea encontrar en el historial (comenzando con el más reciente que coincida con los criterios). Al presionar Ctrl+Rrepetidamente se recuperarán los comandos más antiguos que coincidan con sus criterios. Más informaciónaquíyaquí

Si está interesado, puede modificar el inputrc de su línea de lectura, de modo que las flechas arriba/abajo realicen la búsqueda del historial por usted. Más informaciónaquíyaquí.

Respuesta2

Eche un vistazo a la funcionalidad del historial de su shell. En mi zsh:

!!

repite el último comando.

Escriba historypara echar un vistazo a las últimas entradas.

Para obtener el búfer deseado en el shell:

man zshzle

o

man readline

Además, puede expandir con pestañas las terminaciones.

make long_target
ls some_path
...
make l<TAB> # prints 'make long_target' without running it

use comodines, expansiones... ni una parte de su caso de uso queda fuera de esta funcionalidad.

Respuesta3

Usando zshpuedes hacer precisamente eso con Esc+ A. Escriba un comando y luego presione Esc+ Aen lugar de Enter. El comando se ejecutará y el mismo comando estará en el búfer de línea una vez que se complete el comando.

Respuesta4

Parece que necesitas una respuesta muy simple. Como mencionaste Alt+ Tab, supongo que estás usando (X)windows. Resalta el comando con el mouse antes de presionar "Entrar". Se copia automáticamente al portapapeles cuando lo resalta. Para pegarlo, presione el botón central del mouse (rueda de desplazamiento) o escriba Shift+ Insert.

información relacionada