Символ команды Linux! Значение ls

В чем смысл! в команде? Например, команда ls, что выводится после ввода из нее (! Ls)?

2
задан 26 September 2019 в 06:38

2 ответа

Это означает выполнять последнюю команду в Вашем списке предыстории, который начинается 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:~$ 

Надеюсь, это поможет!

3
ответ дан 23 October 2019 в 10:27

Читайте 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.
0
ответ дан 23 October 2019 в 10:27

Другие вопросы по тегам:

Похожие вопросы: