2010-07-30 10 views

Respuesta

350

Puede usar $_ o !$ para recuperar el último argumento del comando anterior. También puede usar Alt + . para recuperar el último argumento de cualquiera de los comandos anteriores.

+75

Además, si quieres que un parámetro arbitrario, se puede usar '!! : 1', '!!: 2', etc. (' !!: 0' es el comando anterior en sí.) Consulte http://www.gnu.org/software/bash/manual/bashref.html#History- Interacción – janmoesen

+17

Similar a '! $', Usa '! ^' Para el primer argumento. – Will

+2

ahh ... * nix ... eres una belleza ... cada día te amo más – jx12345

14

Sí, puede usar !$ para recuperar el último argumento del comando anterior.

111

Si el comando anterior tenía dos argumentos, como esto

ls a.txt b.txt 

y que quería que la primera de ellas, podría escribir

!:1 

dando

a.txt 

o si se pretendía ambos, puede escribir

!:1-2 

dando

a.txt b.txt 

Se puede extender a cualquier número de argumentos, por ejemplo:

!:10-12 
+0

'!: 1-2' no funciona para mí – RNA

+0

@RNA, solo intenté de nuevo para asegurarme de no incluir un error tipográfico, ¿podría proporcionar un poco más de detalles (por ejemplo, la línea de comandos de ubuntu, cygwin para Windows ? mensaje de error? línea anterior?) –

+0

Estoy usando GNU bash, versión 3.2.51 (1) -release (x86_64-apple-darwin13) Copyright (C) 2007 Free Software Foundation, Inc. El mensaje de error es '-bash :: 1-2: especificador de mala palabra' – RNA

49

En la línea de comandos puede presionar esc - . o alt + .

Pasa por los argumentos anteriores que utilizó.

20

Si conoce el número dado en el historial de un comando en particular, puede tomar prácticamente cualquier argumento en ese comando utilizando los siguientes términos.

Uso siguiente para tomar el segundo argumento de la tercera orden en la historia,

!3:2

Uso siguiente para tomar el tercer argumento de la quinta último comando en la historia,

!-5:3

Usando un signo menos, solicite que se desplace desde el último comando del historial.

29

!!:n donde n es la posición 0 del argumento que desea.

Por ejemplo:

echo 'one' 'two' 
# "one two" 

echo !!:2 
# "two" 

El prefijo ! se utiliza para acceder a los comandos anteriores.

Otros comandos útiles:

  • !$ - último argumento del comando anterior
  • !^ - primer argumento (después de que el/built-in/script programa)
  • !! del comando anterior - comando anterior (a menudo pronunciado "bang bang")
  • !n - número de comando n de history
  • !pattern - comando más reciente juego pattern
  • !!:s/find/replace - última orden, sustituir find con replace

More info on command history

+1

En lugar de '!!: s/find/replace', también puede'^find^replace'. –

+0

Muy niiiice !!! – smarber

3

* Se ejecuta un nuevo comando con todos los argumentos anteriores!.

ls /tmp 
cd !* 
#you are now in /tmp 
Cuestiones relacionadas