В чем смысл! в команде? Например, команда ls, что выводится после ввода из нее (! Ls)?
Это означает выполнять последнюю команду в Вашем списке предыстории, который начинается ls
поскольку на это указали мне. Если Вы в последний раз выполнили команду lsb_release
затем это было бы, работал. Если Вы выполнили просто команду ls
это дало бы Вам список каталогов. Это выполняет последнюю или новую команду, которая запускается с того, что Вы указываете.
Если Вы работаете history
в Вашей системе Вы будете видеть все команды, которые Вы имеете, работал. И если бы Вы хотели определенную команду от своей истории, то это было бы !#
как !1990
выполнил бы мою предыдущую команду cd
.
История в качестве примера произвела:
1990 cd
1991 sync
1992 ssh pi@10.0.0.201
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:~$
И если я хотел выполнить последнее ssh
команда в том списке я ввожу его как
!ssh
Пример:
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:~$
Надеюсь, это поможет!
Читайте man bash
. Это говорит, частично:
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.