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

Erfahren Sie in einem Artikel mehr über JavaScript-Closure-Funktionen

Inhaltsverzeichnis Variablenbereich Das Konzept d...

So erstellen Sie mit Photoshop ein Web-Drahtgittermodell

Dieser Beitrag stellt eine Reihe kostenloser Phot...

Verstehen Sie die Implementierung des Nginx-Standortabgleichs in einem Artikel

Da das Team Front-End und Back-End trennt, überni...

So aktivieren Sie TLS- und CA-Authentifizierung in Docker

Inhaltsverzeichnis 1. Zertifikat generieren 2. Ak...

Implementierung einer nicht geheimen SSH-Kommunikation in Linux

Was ist SSH? Administratoren können sich remote a...

So verwenden Sie worker_threads zum Erstellen neuer Threads in nodejs

Einführung Wie im vorherigen Artikel erwähnt, gib...

Acht Beispiele, wie Vue Komponentenkommunikation implementiert

Inhaltsverzeichnis 1. Props übergeordnete Kompone...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7

In diesem Tutorial erfahren Sie alles über die In...

Lernen Sie, mit Eclipse eine Verbindung zur MySQL-Datenbank herzustellen

Vorwort Da immer wieder Fehler auftreten, protoko...

jQuery-Plugin zum Erzielen eines Code-Rain-Effekts

In diesem Artikel wird der spezifische Code des j...