Zusammenfassung der unbekannten Verwendung von "!" in Linux

Zusammenfassung der unbekannten Verwendung von "!" in Linux

Vorwort

Tatsächlich gibt es für das bescheidene „!“ in Linux viele erstaunliche Einsatzmöglichkeiten, die Sie in Erstaunen versetzen werden. In diesem Artikel werden die magischen Verwendungsmöglichkeiten von „!“ ausführlich beschrieben. Werfen wir einen Blick auf die ausführliche Einführung.

Führen Sie den vorherigen Befehl aus

Beispielsweise können Sie nach der Ausführung des vorherigen Befehls die folgende Methode verwenden, um den vorherigen Befehl erneut auszuführen:

$ whereis bash #Befehl bash ausführen: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
$ !! # Führen Sie den vorherigen Befehl erneut aus, wo sich bash befindet
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz

!! stellt den zuletzt ausgeführten Befehl dar. Wie Sie sehen, wird bei der Eingabe von zwei Ausrufezeichen der vorherige Befehl angezeigt und gleichzeitig ausgeführt. Normalerweise denken wir natürlich daran, für diese Aufgabe die Taste „AUF“ zu verwenden. Aber wenn es auf der vorherigen Befehlserweiterung basiert, ist !! praktischer.
Sie möchten beispielsweise eine Datei anzeigen, vergessen jedoch, weitere Angaben zu machen:

$ /opt/user/test.txt #Habe vergessen, mehr einzugeben
$ mehr!! #Ist das nicht viel schneller?

Benutzen Sie es! Ist das nicht viel bequemer?

Führen Sie einen Befehl mit dem ersten oder letzten Argument des vorherigen Befehls aus.

Verwenden Sie den letzten Parameter des vorherigen Befehls

Wenn Sie beispielsweise mit ls den Inhalt eines Verzeichnisses ohne Parameter auflisten, dies aber mit dem Parameter -al erneut ausführen möchten, ohne einen langen Parameter angeben zu müssen, können Sie die folgende Methode verwenden:

$ ls /proc/1/task/1/net/tcp
/proc/1/Aufgabe/1/net/tc
$ ls -al !$
ls -al /proc/1/task/1/net/tcp
-r--r--r-- 1 root root 0 22. Dezember 17:30 /proc/1/task/1/net/tcp

Hier stellt !$ den letzten Parameter des vorherigen Befehls dar.

Verwenden Sie den ersten Parameter des vorherigen Befehls

Um den ersten Parameter des vorherigen Befehls zu verwenden, verwenden Sie einfach !^, zum Beispiel:

$ ls -al !^

Entfernen Sie den letzten Parameter und führen Sie den vorherigen Befehl aus

Wenn Sie den vorherigen Befehl ohne den letzten Parameter ausführen möchten:

$ ls -al dir #Angenommen, dir ist eine sehr lange Zeichenfolge $ !:-
ls -al

In welchen Szenarien könnte es verwendet werden? Wenn beispielsweise der letzte Parameter Ihres vorherigen Befehls eine lange Zeichenfolge ist und Sie diese nicht verwenden möchten und das Löschen mit der Rücktaste langsam ist, können Sie die obige Methode verwenden.

Alle Parameter des vorherigen Befehls verwenden

Wir haben bereits erwähnt, dass wir den letzten Parameter des vorherigen Befehls verwenden. Was passiert, wenn es nicht der letzte Parameter ist? Es ist ganz einfach, verwenden Sie einfach !*. Wenn uns beispielsweise bei der Eingabe des Find-Befehls ein Fehler unterläuft und wir diesen korrigieren möchten:

$ fin -name "test.zip" #Das Suchwort hier ist falsch.
$ finden !*
finde ./ -name "test.zip"
./workspaces/shell/find/test.zip
./workspaces/shell/test.zip

Verwenden Sie die im vorherigen Befehl angegebenen Parameter

Einige Leser fragen sich möglicherweise: Was ist, wenn ich nur einen der Parameter verwenden möchte? Befolgen Sie einfach die Regel ![Befehlsname]:[Parameternummer]. Zum Beispiel:

$ cp -rf dira dirb/ #Kopiere dira nach dirb
$ ls -l !cp:2 #Den Inhalt von dira anzeigen ls -l dira
gesamt 0
-rw-rw-r-- 1 hyb hyb 0 Dez 22 17:45 testdatei

Der Effekt ist deutlicher, wenn die Parameter des vorherigen Befehls sehr lang sind und Sie in der Mitte einen Parameter verwenden müssen.

Befehle im Verlauf ausführen

Wir alle wissen, dass wir mit dem Verlaufsbefehl zuvor ausgeführte Befehle anzeigen können, aber wie führen wir die Befehle im Verlauf erneut aus? Wir können die Taste „UP“ zum Anzeigen verwenden, aber wenn der Verlaufsbefehl sehr lang ist, ist das nicht sehr praktisch. In diesem Fall ist „!“ praktisch:

$ Geschichte
(Weitere Inhalte wurden hier weggelassen)
2043 berühren ./dira/testfile
 2044 cp -rf dira dirb/
 2045 ls -al dira
 2046 ls -l dira
 2047 ls -al dira
 2048 ls -l dira
 2049 ls -al dira
 2050 ls -l dira
 2051 Geschichte

Wir können sehen, dass der Verlaufsbefehl die zuvor ausgeführten Befehle anzeigen kann, und wir können auch einen Wert davor sehen. Wenn wir den vorherigen Befehl cp -rf dira dirb/ ausführen möchten, können wir dies eigentlich auf folgende Weise tun:

$ !2044 #2044 ist der n-te ausgeführte Befehl cp -rf dira dirb/

Das heißt, historische Befehle werden über ![historischer Befehlswert] ausgeführt.

Wenn wir den vorletzten Befehl ausführen möchten, gibt es natürlich eine Möglichkeit:

$ !-2 #Auf das Ausrufezeichen folgt eine negative Zahl, und die negative Zahl stellt die letzte Zahl des Elements dar

Ausführen historischer Befehle nach Schlüsselwort

!Sie können Befehle basierend auf Schlüsselwörtern ausführen.

Führen Sie den vorherigen Befehl aus, beginnend mit dem Schlüsselwort

Führen Sie beispielsweise den vorherigen Suchbefehl aus:

$ !find #Führen Sie den vorherigen Befehl aus, beginnend mit find

Führen Sie den vorherigen Befehl mit dem Schlüsselwort aus

Führen Sie für ein weiteres Beispiel den vorherigen Befehl mit dem Namen aus:

$ finde ./ -name "test"
./prüfen
./finden/testen
$ !?Name?
finde ./ -name "test"
./prüfen
./finden/testen

Ersetzen Sie die Parameter des vorherigen Befehls

Zum Beispiel:

$ find ./ -name "alt*" -a -name "*.zip"

Wenn wir in diesem Befehl „alt“ durch „neu“ ersetzen müssen:

$ !!:gs/alt/neu

Die Rolle der logischen Negation

Dies ist die bekannteste Funktion, um beispielsweise alle Dateien außer denen mit der Endung cfg zu löschen:

rm !(*.cfg) # Vorsicht beim Löschen

Auf die Einzelheiten werde ich hier nicht näher eingehen.

Zusammenfassen

Die Wirkung des Ausrufezeichens „!“ ist manchmal tatsächlich verblüffend. Es wurde vielleicht gerade schon einmal erwähnt! In Kombination mit anderen Zeichen, um eine bestimmte Verwendung einer bestimmten Bedeutung darzustellen, können wir tatsächlich kombinieren oder erweitern, um noch mehr wunderbare Verwendungsmöglichkeiten zu entdecken. Darauf wird hier nicht näher eingegangen. Welche anderen guten Entdeckungen haben Sie gemacht? Hinterlassen Sie gerne eine Nachricht!

Nun, das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Autor dieses Artikels: Sehen Sie sich diesen Artikellink an: https://www.yanbinghu.com/2018/12/22/40915.html
Copyright-Erklärung: Bei diesem Artikel handelt es sich um einen Originalartikel. Das Copyright liegt bei Shouwang und er unterliegt der Lizenzvereinbarung CC BY-NC-SA 3.0. Bei Nachdruck bitte bei mir melden!

Das könnte Sie auch interessieren:
  • Zusammenfassung zur Verwendung des Ausrufezeichen-Befehls (!) unter Linux

<<:  Tiefgreifendes Verständnis der Kernprinzipien von React Native (Bridge of React Native)

>>:  Mysql 5.6 fügt eine Methode zum Ändern von Benutzername und Passwort hinzu

Artikel empfehlen

Beispielcode zur Implementierung der WeChat-Kontoaufteilung mit Nodejs

Das Geschäftsszenario des Unternehmens erfordert ...

So legen Sie den Standardwert eines MySQL-Felds fest

Inhaltsverzeichnis Vorwort: 1. Standardwertbezoge...

Details zur Ereignisbindung reagieren

Inhaltsverzeichnis Ereignisbindung von Klassenkom...

WiFi-Entwicklung | Einführung in die WiFi-Wireless-Technologie

Inhaltsverzeichnis Einführung in die WiFi-Wireles...

Softwaretests – MySQL (VI: Datenbankfunktionen)

1.MySQL-Funktionen 1. Mathematische Funktionen PI...

Implementieren Sie über 24 Array-Methoden in JavaScript von Hand

Inhaltsverzeichnis 1. Traversal-Klasse 1. fürJede...

So schreiben Sie eine Node.JS-Version eines Spiels

Inhaltsverzeichnis Überblick Build-Prozess Verwan...

Beispielcode zur Implementierung des Div-Konkaveckenstils mit CSS

Bei der normalen Entwicklung verwenden wir normal...

Welche Bilddateiformate gibt es und wie wählt man sie aus?

1. Welche drei Formate? Dies sind: gif, jpg und pn...

Erläuterung der Konfiguration und Verwendung der MySQL-Speicher-Engine InnoDB

MyISAM und InnoDB sind die gängigsten Speicher-En...

Daten in der Layui-Tabellenzeile dynamisch bearbeiten

Inhaltsverzeichnis Vorwort Stil Funktion Beschrei...