Bedeutung des Linux-Befehlssymbols !ls

Bedeutung des Linux-Befehlssymbols !ls

Was bedeutet ! in einem Befehl? Was ist beispielsweise die Ausgabe des ls-Befehls, wenn man ihn in (!ls) einfügt?

Antwort1

Es bedeutet, den letzten Befehl in Ihrer Verlaufsliste auszuführen, der mit beginnt, lswie mir gesagt wurde. Wenn Sie zuletzt einen Befehl von ausgeführt haben, lsb_releasedann wäre das „ran“. Wenn Sie nur den Befehl ausführen, lserhalten Sie die Verzeichnisliste. Es führt den letzten oder aktuellsten Befehl aus, der mit dem von Ihnen angegebenen beginnt.

Wenn Sie historyauf Ihrem System ausführen, werden Ihnen alle Befehle angezeigt, die Sie ausgeführt haben. Und wenn Sie einen bestimmten Befehl aus Ihrem Verlauf möchten, wäre das !#etwa so: !1990würde meinen vorherigen Befehl ausführen cd.

Beispiel für die Verlaufsausgabe:

 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:~$

Und wenn ich den letzten Befehl in dieser Liste ausführen möchte, sshgebe ich ihn ein als

!ssh

Beispiel:

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:~$ 

Hoffe das hilft!

Antwort2

Lesen Sie man bash. Darin heißt es auszugsweise:

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.

verwandte Informationen