Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
linux:bash:historyexpansion [02/11/2016 09:10] – mate | linux:bash:historyexpansion [20/01/2020 01:16] (actual) – mate | ||
---|---|---|---|
Línia 1: | Línia 1: | ||
= history expansion | = history expansion | ||
+ | {{tag> | ||
+ | |||
^ shortcut | ^ shortcut | ||
^ eventos | ^ eventos | ||
| ! | Indica que empieza la sustitución | | | ! | Indica que empieza la sustitución | | ||
- | | !! | Último comando | | + | | !! | Último comando |
| !n | enésimo comando | | | !n | enésimo comando | | ||
- | | !-n | + | | !-n |
| !string | | !string | ||
| !? | | !? | ||
- | | %%^string1^string2^%% | repite el último comando cambiando string1 por string2 | | + | | %%^string1^string2^%% | repite el último comando cambiando |
+ | | !!: | ||
| !# | último comando | | | !# | último comando | | ||
- | | !:< | ||
^ palabras - siguen a un evento, separado por : ^^ | ^ palabras - siguen a un evento, separado por : ^^ | ||
| 0 | la primera palabra de la linea, usualmente un comando | | | 0 | la primera palabra de la linea, usualmente un comando | | ||
Línia 20: | Línia 22: | ||
| x* | equivalente a x-$ | | | x* | equivalente a x-$ | | ||
| x- | ? | | | x- | ? | | ||
+ | ^ ejemplos de palabras: ^^ | ||
+ | | !: | ||
+ | | !:$ | último argumento del último comando| | ||
+ | | !:< | ||
+ | | !:* | todos los argumentos| | ||
+ | |||
^ modificaciones - siguen a una palabra, separados por : ^^ | ^ modificaciones - siguen a una palabra, separados por : ^^ | ||
| h | quita el path del final | | | h | quita el path del final | | ||
Línia 27: | Línia 35: | ||
| p | imprime el comando resultantte sin ejecutarlo | | | p | imprime el comando resultantte sin ejecutarlo | | ||
| q | entrecomilla las palabras cambiadas, escapandolas | | | q | entrecomilla las palabras cambiadas, escapandolas | | ||
- | | x | entrecomilla las palabras | + | | x | entrecomilla las palabras |
- | | s/ | + | | 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 | + | | & | repite la anterior sustitución |
- | | g | hace que s se aplique a toda la linea | | + | |
Ejemplos: | Ejemplos: | ||
- | < | + | < |
$ echo a b c d e | $ echo a b c d e | ||
a b c d e | a b c d e | ||
</ | </ | ||
- | < | + | < |
$ echo !!:3-$ | $ echo !!:3-$ | ||
c d e | c d e | ||
</ | </ | ||
- | < | + | < |
$ echo !-2:*:q | $ echo !-2:*:q | ||
a b c d e -> ejecuta un echo 'a b c d e' | a b c d e -> ejecuta un echo 'a b c d e' | ||
</ | </ | ||
- | < | + | < |
$ echo !-3:1:2:4:x | $ echo !-3:1:2:4:x | ||
- | a b d -> ejecyta | + | a b d -> ejecuta |
</ | </ | ||
- | < | + | < |
$ echo !-4: | $ echo !-4: | ||
foo bar baz | foo bar baz | ||
</ | </ | ||
- | < | + | < |
$ tar -xzf paquete.tar | $ tar -xzf paquete.tar | ||
- | $ cd !-1: | + | $ cd !-1:$:r |
+ | cd paquete | ||
</ | </ | ||
- | < | + | < |
$ ls -a /tmp | $ ls -a /tmp | ||
- | $ ^-a^-l^ -> ejecuta | + | $ ^-a^-l^ -> sustituye -a por -l |
+ | ls -l /tmp | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | $ ls -a /tmp | ||
+ | $ !!:s/-a/-l/ -> sustituye -a por -l | ||
+ | ls -l /tmp | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | $ echo papa papa papa | ||
+ | $ !!: | ||
+ | echo mama papa papa | ||
+ | $ !!: | ||
+ | echo mama mama mama | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | $ 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:// | [[http:// |