| shortcut | descripción | 
	
		| eventos | 
	
	
		| ! | Indica que empieza la sustitución | 
	
		| !! | Último comando → !-1 | 
	
		| !n | enésimo comando | 
	
		| !-n | último comando menos n | 
	
		| !string | el comando más reciente que empiece por string | 
	
		| !?string? | el comando más reciente que contenga string | 
	
		| ^string1^string2^ | repite el último comando cambiando el primer string1 por string2 | 
	
		| !!:gs/string1/string2 | repite el último comando cambiando TODAS las string1 por string2 | 
	
		| !# | último comando | 
	
		| palabras - siguen a un evento, separado por : | 
	
		| 0 | la primera palabra de la linea, usualmente un comando | 
	
		| n | la enésima palabra de una linea | 
	
		| ^ | el primer argument - la segunda palabra | 
	
		| $ | el último argumento de una linea | 
	
		| % | la palabra que cuadra con la búsqueda ?string? más reciente | 
	
		| * | todos los argumentos | 
	
		| x* | equivalente a x-$ | 
	
		| x- | ? | 
	
		| ejemplos de palabras: | 
	
		| !:^ | primer argumento del último comando | 
	
		| !:$ | último argumento del último comando | 
	
		| !:<n> | argumento <n> del último comando | 
	
		| !:* | todos los argumentos | 
	
	
		| modificaciones - siguen a una palabra, separados por : | 
	
	
		| h | quita el path del final | 
	
		| t | quita el path del principio | 
	
		| r | quita la extensión de un archivo del estilo .xxx, dejando el nombre del archivo | 
	
		| e | lo quita todo excepto la extensión | 
	
		| p | imprime el comando resultantte sin ejecutarlo | 
	
		| q | entrecomilla las palabras cambiadas, escapandolas | 
	
		| x | entrecomilla las palabras por separado | 
	
		| s/old/new/[g] | cambia OLD por NEW [g] hace que se aplique en toda la línea, no solo en el primero | 
	
		| & | repite la anterior sustitución ? | 
Ejemplos: 
$ echo a b c d e
a b c d e
$ echo !!:3-$
c d e
$ echo !-2:*:q
a b c d e  -> ejecuta un echo 'a b c d e'
$ echo !-3:1:2:4:x
a b d  -> ejecuta un echo 'a' 'b' 'd'
$ echo !-4:1-3:s/a/foo/:s/b/bar/:s/c/baz/
foo bar baz
$ tar -xzf paquete.tar
$ cd !-1:$:r
cd paquete
$ ls -a /tmp
$ ^-a^-l^ -> sustituye -a por -l
ls -l /tmp
$ ls -a /tmp
$ !!:s/-a/-l/ -> sustituye -a por -l
ls -l /tmp
$ echo papa papa papa
$ !!:s/papa/mama/
echo mama papa papa
$ !!:sg/papa/mama/
echo mama mama mama
$ echo papa mama hijo hija
$ echo !!:3-4 -> recupera parámetros 3 y 4
echo hijo hija
$ echo !!:* -> recupera todos los parámetros
echo hijo hija
$ echo echo papa mama hijo hija
$ !!:1-$ -> recupera los parámetros del 1 al final. Ejecuta el primer parámetro como instrucción
echo papa mama hijo hija
http://www.catonmat.net