
Cuál es el significado de ! en un comando? Por ejemplo, el comando ls, ¿cuál es el resultado después de ingresarlo (!ls)?
Respuesta1
Significa ejecutar el último comando en su lista de historial que comienza con ls
lo que me indicaron. Si ejecutó por última vez un comando, lsb_release
entonces se ejecutará. Si ejecutara solo el comando, ls
obtendrá la lista del directorio. Ejecuta el último comando o el más reciente que comienza con lo que usted especifique.
Si ejecuta history
en su sistema, verá todos los comandos que ha ejecutado. Y si quisiera un comando específico de su historial, sería !#
como !1990
ejecutar mi comando anterior de cd
.
Ejemplo de salida del historial:
1990 cd
1991 sync
1992 ssh [email protected]
1993 sync
1994 sync
1995 sudo apt autoremove
1996 reboot
1997 sudo apt remove nvidia-driver-430
1998 sudo apt install nvidia-driver-435
1999 sudo apt autoremove
2000 reboot
2001 ./intrepid_check.bsh
2002 ssh intrepid
2003 ls -al
2004 ls
2005 ls -al
2006 history
terrance@terrance-ubuntu:~$
Y si quisiera ejecutar el último ssh
comando en esa lista, lo escribo como
!ssh
Ejemplo:
terrance@terrance-ubuntu:~$ !ssh
ssh intrepid
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 5.0.0-29-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
* Congrats to the Kubernetes community on 1.16 beta 1! Now available
in MicroK8s for evaluation and testing, with upgrades to RC and GA
snap info microk8s
* Canonical Livepatch is enabled.
- All available patches applied.
0 packages can be updated.
0 updates are security updates.
Your Hardware Enablement Stack (HWE) is supported until April 2023.
You have mail.
Last login: Wed Sep 25 21:38:55 2019 from 10.0.0.100
-------------------------------------------------------------- 09/25/19 21:43:36
terrance@Intrepid:~$
¡Espero que esto ayude!
Respuesta2
Leer man bash
. Dice, en parte:
Event Designators
An event designator is a reference to a command line entry in the history list. Unless
the reference is absolute, events are relative to the current position in the history
list.
! Start a history substitution, except when followed by a blank, newline, carriage
return, = or ( (when the extglob shell option is enabled using the shopt builtin).
!n Refer to command line n.
!-n Refer to the current command minus n.
!! Refer to the previous command. This is a synonym for `!-1'.
!string
Refer to the most recent command preceding the current position in the history list
starting with string.
!?string[?]
Refer to the most recent command preceding the current position in the history list
containing string. The trailing ? may be omitted if string is followed immediately
by a newline.
^string1^string2^
Quick substitution. Repeat the previous command, replacing string1 with string2.
Equivalent to ``!!:s/string1/string2/'' (see Modifiers below).
!# The entire command line typed so far.