Por ejemplo:
[root@ip-10-0-7-125 ~]# history | grep free
594 free -m
634 free -m | xargs | awk '{print "free/total memory" $17 " / " $ 8}'
635 free -m
636 free -m | xargs | awk '{print "free/total memory" $9 " / " $ 10}'
736 df -h | xargs | awk '{print "free/total disk: " $11 " / " $9}'
740 df -h | xargs | awk '{print "free/total disk: " $11 " / " $8}'
741 free -m | xargs | awk '{print "free/total memory: " $17 " / " $8 " MB"}'
Me pregunto si hay alguna forma de ejecutar el comando 636 sin volver a escribirlo, simplemente escriba algo más el número, como el historial 636 o algo así.
bash
command-history
El único
fuente
fuente
ctrl-r
?Respuestas:
En bash, solo
!636
estará bien.fuente
In Linux
- Esto tiene más que ver con el shell (bash, zsh, etc.) que una persona está ejecutando y luego con el sistema operativo en el que lo está ejecutando. Hay shells en linux sin soporte para la historia.:p
imprimir el comando sin ejecutarlo,!636:p
por ejemplo. Lo que significa que puede volver a seleccionarlo fácilmente desde su historial presionando la flecha hacia arriba y realizar los cambios menores que deseeSí, se llama "expansión de la historia". Ver
para más detalles
El uso de un signo de exclamación seguido de un número es posiblemente el uso más simple:
Sin embargo, también puede ejecutar el último comando ejecutado directamente sin conocer su número de historial:
O puede ejecutar dos comandos de regreso:
Sin embargo, la forma que uso con más frecuencia es repetir el último argumento del último comando:
O, digamos que estoy inspeccionando un archivo. Usando la finalización de pestañas, podría hacer lo siguiente:
Nuevamente, lea la página del manual para más detalles:
fuente
Alt-.
puede ser más conveniente que!$
. Inserta el último argumento del último comando textualmente en la línea.!$
, pero nunca supeAlt-.
)? ¿Publicarás un enlace, por favor?LESS="+/DEFAULT KEY BINDINGS" man 3 readline
,/etc/inputrc
,~/.inputrc
. Muchos programas además de bash usan libreadline; para aquellos que lo hacen, obtiene las mismas funciones comoAlt-.
,Ctrl-X-U
(deshacer),Ctrl-/
(describir acceso directo), completar pestañas, etc., de forma gratuita. Por ejemplo, con solo tres líneas dePYTHONSTARTUP
una puede habilitar la finalización de pestañas y el historial en el stock python REPL . Que funcionará (principalmente) igual que en bash, ya que es la biblioteca GNU Readline la que hace el trabajo. La página de manual de readline describe las características en detalle.echo {1..5}
seguida portouch !$
tocará cinco archivos, no sólo uno. Hablando estrictamente, no es el último argumento, sino la última palabra de shell en esa línea. (Intente tambiénecho hello >temp
seguido deecho goodbye !$
). Si puede pensar en una forma de expresarlo con mayor claridad, no dude en sugerir una edición.Una buena pregunta, si no quieres primero el historial, anota el número, etc.
en bash (y tal vez otros):
(
ctrl-r
= "búsqueda inversa interactivamente") (something
= una parte de un comando anterior)Esto le mostrará la última línea del historial que contiene
something
. Para obtener el anterior, haga ctrl-r (solo) nuevamente, cada vez que obtenga una línea anterior.ex:
para mostrar la última línea del historial que contiene '10' (por ejemplo, la línea con
$10
, en su ejemplo), yctrl-r
nuevamente hasta que recupere la línea del historial que estaba buscandoCuando aparece la línea que deseaba, solo
Enter
para ejecutarla (o también puede editarla, usando elarrow keys
,backspace
yctrl-a
para ir al principio de la línea,ctrl-e
para llegar al Fin,ctrl-k
para "matar" desde el cursor hasta el final de la línea (= elimina + lo guarda en un búfer),:ctrl-y
para restaurar, desde el búfer, un bit muerto previamente, etc.)Si desea buscar hacia adelante (ctrl-s), primero debe deshabilitar XON : consulte https://stackoverflow.com/a/791800/1841533 :
"solo para deshabilitar XON / XOFF ejecutando
"(y luego podrá usar ctrl-s, sin tener que congelar el terminal)
fuente
Puede usar el shell incorporado fc :
fuente
-s
para obtener los beneficios. Si ejecutafc 636
, abrirá un editor con el comando 636 de su historial en el búfer, y cuando guarde y salga del comando (modificado o no) se ejecutará. Y aún mejor, este es compatible con POSIX .help
no es POSIX - podría tener que hacerman dash
o similarhelp
existe. Otro caparazón incorporado. Y desconcertante para los usuarios incautos que podrían querer ayuda con un nuevo sistema, pero en cambio se enfrentan a una corriente de galimatías. :-(Hay
HSTR
-hh
comando parabash
yzsh
selección de comando interactivo, mejor que la búsqueda inversa Ctrl-R:es interactivo, por lo que puede buscar y editar el comando antes de ejecutarlo.
En Ubuntu, puede instalar
hh
con el siguiente one-liner:o paso a paso:
Instalar
hh
en Fedora, RHEL o CentOS:En macOS con
homebrew
:... luego configúrelo con:
Esto reemplazará el comportamiento predeterminado de Ctrl-R.
Ejecute
hh --show-configuration
para determinar qué se agregará a su perfil de Bash.Más opciones de configuración disponibles en la página de inicio del proyecto en Github: https://github.com/dvorka/hstr
fuente