Aquesta és una revisió antiga del document
history expansion
| shortcut | descripción |
|---|---|
| eventos | |
| ! | Indica que empieza la sustitución |
| !! | Último comando |
| !n | enésimo comando |
| !-n | ultimo 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 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