Ahh ... * nix ... usted es una cosa de belleza ... cada día te quiero más
jx12345
¿Cómo podemos referirnos al penúltimo argumento del comando anterior? por ejemplo, si di echo tiger rabbit, ¿cómo puedo referirme tigeral siguiente comando?
Chan Kim
3
Alt + .no funciona en modo vi. Solo para tu información, para otros que estaban confundidos aquí.
Brian McCutchon el
160
Si el comando anterior tenía dos argumentos, como este
ls a.txt b.txt
y querías el primero, podías escribir
!:1
dando
a.txt
O si quisieras ambos, podrías escribir
!:1-2
dando
a.txt b.txt
Puede extender esto a cualquier número de argumentos, por ejemplo:
@RNA, lo intenté nuevamente para asegurarme de no incluir un error tipográfico, ¿podría proporcionar un poco más de detalles (por ejemplo, línea de comando ubuntu, cygwin para windows? Mensaje de error? Línea anterior?)
Robert Gowland
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: bad word specifier
ARN
2
Me sale lo mismo si no hubiera dos argumentos en la línea anterior. P.ej. línea 1 ls a.txtlínea 2ll !:1-2
Robert Gowland
tienes razón. Ese es un estúpido error que cometí. ¡Gracias!
ARN
También para obtener todos los argumentos, !:^-$se puede usar o, por supuesto, un código similar en combinación con números.
816-8055
88
!!:ndonde nes la posición basada en 0 del argumento que desea.
Por ejemplo:
echo 'one''two'# "one two"
echo !!:2# "two"
El !prefijo se usa para acceder a comandos anteriores.
Otros comandos útiles:
!$ - último argumento del comando anterior
!^ - primer argumento (después del programa / incorporado / script) del comando anterior
!! - comando anterior (a menudo pronunciado "bang bang")
!n- número de comando ndehistory
!pattern - coincidencia de comandos más reciente pattern
!!:s/find/replace- último comando, sustituir findconreplace
Siempre he encontrado las teclas ↑y ↓para trabajar también.
Cubo
Las teclas @Bucket van a través de comandos anteriores, mientras que la solución proporcionada por Antonio permite pasar por argumentos anteriores (último argumento de cada comando anterior únicamente)
everyonesdesign
30
Si conoce el número dado en el historial de un comando en particular, puede tomar cualquier argumento en ese comando usando los siguientes términos.
Use el siguiente para tomar el segundo argumento del tercer comando en la historia,
!3:2
Use el siguiente para tomar el tercer argumento del quinto último comando en la historia,
!-5:3
Usando un signo menos, le pide que atraviese desde el último comando del historial.
Respuestas:
Puede usar
$_
o!$
para recuperar el último argumento del comando anterior.También
Alt + .
se puede utilizar para recuperar el último argumento de cualquiera de los comandos anteriores.fuente
!!:1
,!!:2
etc. (!!:0
es el comando anterior mismo). Consulte gnu.org/software/bash/manual/bashref.html#History-Interaction!$
, usas!^
para el primer argumento.echo tiger rabbit
, ¿cómo puedo referirmetiger
al siguiente comando?Alt + .
no funciona en modo vi. Solo para tu información, para otros que estaban confundidos aquí.Si el comando anterior tenía dos argumentos, como este
y querías el primero, podías escribir
dando
O si quisieras ambos, podrías escribir
dando
Puede extender esto a cualquier número de argumentos, por ejemplo:
fuente
-bash: :1-2: bad word specifier
ls a.txt
línea 2ll !:1-2
!:^-$
se puede usar o, por supuesto, un código similar en combinación con números.!!:n
donden
es la posición basada en 0 del argumento que desea.Por ejemplo:
El
!
prefijo se usa para acceder a comandos anteriores.Otros comandos útiles:
!$
- último argumento del comando anterior!^
- primer argumento (después del programa / incorporado / script) del comando anterior!!
- comando anterior (a menudo pronunciado "bang bang")!n
- número de comandon
dehistory
!pattern
- coincidencia de comandos más recientepattern
!!:s/find/replace
- último comando, sustituirfind
conreplace
Más información sobre el historial de comandos
fuente
!!:s/find/replace
, tú también puedes^find^replace
.!*
- todos los argumentos del comando anterior (después del programa / incorporado / script). por ejemplo:ls *.tmp *.cache rm !*
En la línea de comando puedes presionar esc- .o alt+.
Se desplaza por el último argumento de sus comandos anteriores.
fuente
↑
y↓
para trabajar también.Si conoce el número dado en el historial de un comando en particular, puede tomar cualquier argumento en ese comando usando los siguientes términos.
Use el siguiente para tomar el segundo argumento del tercer comando en la historia,
!3:2
Use el siguiente para tomar el tercer argumento del quinto último comando en la historia,
!-5:3
Usando un signo menos, le pide que atraviese desde el último comando del historial.
fuente
! * ejecuta un nuevo comando con todos los argumentos anteriores.
fuente
$_
.Sí, puede usar
!$
para recuperar el último argumento del comando anterior.fuente