Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
linux:bash:historyexpansion [02/11/2016 09:10] matelinux:bash:historyexpansion [20/01/2020 01:16] (actual) mate
Línia 1: Línia 1:
 = history expansion = history expansion
 +{{tag>linux bash}}
 +
 ^ shortcut  ^ descripción ^ ^ shortcut  ^ descripción ^
 ^ eventos   ^^ ^ eventos   ^^
 | !                 | Indica que empieza la sustitución | | !                 | Indica que empieza la sustitución |
-| !!                | Último comando |+| !!                | Último comando -> ''!-1''|
 | !n                | enésimo comando | | !n                | enésimo comando |
-| !-n               ultimo comando menos n |+| !-n               último comando menos n |
 | !string           | el comando más reciente que empiece por string | | !string           | el comando más reciente que empiece por string |
 | !?string?         | el comando más reciente que contenga string | | !?string?         | el comando más reciente que contenga string |
-| %%^string1^string2^%% | repite el último comando cambiando string1 por string2 |+| %%^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 | | !#                | último comando |
-| !:<n>             | argumento <n> del ú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: ^^
 +| !:%%^%%           | 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 : ^^ ^ 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 cambiadas, separando las palabras con espacio y salto de linea +| x                 | entrecomilla las palabras por separado 
-| s/old/new/        | cambia OLD por NEW | +| 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:
-<code>+<code bash>
 $ echo a b c d e $ echo a b c d e
 a b c d e a b c d e
 </code> </code>
  
-<code>+<code bash>
 $ echo !!:3-$ $ echo !!:3-$
 c d e c d e
 </code> </code>
  
-<code>+<code bash>
 $ 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'
 </code> </code>
  
-<code>+<code bash>
 $ echo !-3:1:2:4:x $ echo !-3:1:2:4:x
-a b d  -> ejecyta un echo 'a' 'b' 'd'+a b d  -> ejecuta un echo 'a' 'b' 'd'
 </code> </code>
  
-<code>+<code bash>
 $ echo !-4:1-3:s/a/foo/:s/b/bar/:s/c/baz/ $ echo !-4:1-3:s/a/foo/:s/b/bar/:s/c/baz/
 foo bar baz foo bar baz
 </code> </code>
  
-<code>+<code bash>
 $ tar -xzf paquete.tar $ tar -xzf paquete.tar
-$ cd !-1:$:-> ejecuta cd paquete+$ cd !-1:$:r 
 +cd paquete
 </code> </code>
  
-<code>+<code bash>
 $ ls -a /tmp $ ls -a /tmp
-$ ^-a^-l^ -> ejecuta ls -l /tmp+$ ^-a^-l^ -> sustituye -a por -l 
 +ls -l /tmp 
 +</code> 
 + 
 +<code bash> 
 +$ ls -a /tmp 
 +$ !!:s/-a/-l/ -> sustituye -a por -l 
 +ls -l /tmp 
 +</code> 
 + 
 +<code bash> 
 +$ echo papa papa papa 
 +$ !!:s/papa/mama/ 
 +echo mama papa papa 
 +$ !!:sg/papa/mama/ 
 +echo mama mama mama 
 +</code> 
 + 
 +<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
 </code> </code>
  
 [[http://www.catonmat.net]] [[http://www.catonmat.net]]
  • linux/bash/historyexpansion.1478103025.txt.gz
  • Darrera modificació: 02/11/2016 09:10
  • per mate