Befehl suchen: Es gibt viele Möglichkeiten, um Dateien in Linux zu finden

Sie sagen, dass diejenigen, die sich nicht an die Geschichte erinnern, dazu verdammt sind, immer wieder dasselbe zu wiederholen. Und wenn Sie nicht wissen, wie man die Geschichte in nutzt BashDann können Sie die Leistung Ihres Systems nicht vollständig nutzen. Es ist jedoch nie zu spät, um anzufangen. Wenn Sie diese Notiz lesen, werden Sie einige nützliche und notwendige Fähigkeiten für die Arbeit mit GNU Bash in Ihrer täglichen Arbeit entdecken.

Wenn Sie eine bestimmte Zeit in der Shell verbringen, wissen Sie höchstwahrscheinlich, dass es einen „Verlauf“ der von Ihnen ausgeführten Befehle gibt, genau wie Ihr Webbrowser den Verlauf der besuchten Webseiten speichert. Obwohl die Geschichte von Befehlen in Shells natürlich viel früher erschien als die besuchten Seiten in Browsern.

Viele Benutzer wissen, dass der Zugriff auf den Befehlsverlauf mit dem Befehl erhalten werden kann   oder mit Tastenkombinationen Strg + p   (vorheriger Befehl) und Strg + n   (nächstes Team). Dies sind sehr nützliche und häufig verwendete Methoden zum Arbeiten mit Historie. Mit deren Hilfe können Sie jedoch nicht alle Funktionen von Bash verwenden, um mit Historie zu arbeiten. Schauen wir uns ein paar Tricks an, um mit dem Befehl bash zu arbeiten   oder auf andere Weise.

Verwendung von Zahlen

Wenn Sie einen Befehl geben erhalten Sie eine Liste der zuletzt eingegebenen Befehle mit einer fortlaufenden Nummer vor jedem Befehl. Sie können jeden Befehl aus der Historie mit Hilfe von ausführen

wenn Sie durchführen müssen nth   Zählen Sie den Befehl ab dem Ende der Liste. Zum Beispiel Ihre Schlussfolgerung   sieht so aus:

1 Sudo Su 2 Ausfahrt 3 Sudo apt-get Update

1 Sudo su

2 Ausfahrt

3 sudo apt - erhalten Sie ein Update

dann die Anweisung

Der letzte Befehl wird gestartet ( !! ) mittels sudo. Nicht schlecht?

Sie kennen wahrscheinlich das Design ! BefehlDadurch wird der letzte Befehl aus einer Geschichte gestartet, die mit beginnt befehl. Wenn Sie vor kurzem einen sehr langen Befehl gestartet haben und sich dessen Anfang merken, kann diese Art des Startens aus der Geschichte für Sie nützlich sein. Wussten Sie, dass Bash in diesem Fall kein Team sucht, sondern sucht teilzeichenfolge? Das heißt, Sie müssen nicht den gesamten Befehl nach dem Ausrufezeichen eingeben, sondern nur die ersten Zeichen sind ausreichend. Angenommen, Sie laufen so etwas wie:

$ git commit -a -m "Verschiedene und verschiedene Notizen"

um den Befehl zu wiederholen, genügt es jedoch, sich vorzustellen

Letzten Befehlsparameter aufrufen

Kombination verwenden "Esc +." (Flucht   mit einem Punkt) können Sie das letzte aus der Historie aufrufen wortals Argument an den Befehl übergeben. Zum Beispiel haben Sie Folgendes ausgeführt:

$ cp Dateiname1 Dateiname2

und Sie mussten zwei Wörter aus der Mitte ziehen? Einfach!

$ ls! : *

Suche

Eine weitere nützliche Funktion ist die Suche mit "Strg + r". Klicken Sie auf "Strg + r"   und geben Sie in der daraufhin angezeigten Einladung einen Teil eines zuvor eingegebenen Befehls ein. Während der Eingabe von Zeichen versucht Bash, den letzten Befehl im Verlauf zu finden, der die angegebenen Zeichen enthält. Einmal gefunden, können Sie loslegen "Strg + r"   wieder gibt Bash einen früheren Befehl aus, falls vorhanden. Nachdem Sie den gewünschten Befehl gefunden haben, klicken Sie einfach auf "Enter"   und es erscheint in Ihrer Befehlszeile.

Wenn Sie einen Befehl bearbeiten müssen, bewegen Sie den Cursor vor dem Start mit dem traditionellen "Nach-links-Pfeil" und "Nach-Rechts-Pfeil" an die richtige Stelle für den Korrekturbefehl.

Sicherheit

Die Geschichte der Befehle ist eine sehr nützliche Sache, aber manchmal gibt es Situationen, in denen es unerwünscht ist, dass sie beibehalten werden. Beispielsweise verwenden Sie ein freigegebenes System zwischen vielen Benutzern und möchten dies nicht systemadministratoren   System hervorgehoben, welche Befehle Sie eingegeben haben. Selbst wenn Sie einen Personal Computer verwenden, besteht immer die Möglichkeit, dass er gehackt wird, und Sie möchten keine wirklich wichtigen Daten in der Historie aufbewahren. Am Ende möchten Sie vielleicht die Geschichte nicht mit einigen Teams vermasseln, da es einfach keinen Sinn hat, sie zu speichern. Beispielsweise können Sie häufig verwenden ls, aber warum sollte es in der Geschichte bleiben, anstatt es nur lang und wirklich nützlich in Bezug auf die Teamspeicherung zu halten?

Mal sehen, wie Sie das Speichern von Befehlen im Verlauf verwalten können.

Der erste Weg ist, in zu bestimmen .bashrc

Ja, über den "Frieden". Auf freigegebenen Systemen sehen einige Benutzer möglicherweise Befehle, die Sie mit Dienstprogrammen ausführen. oben   und ps. Wenn Sie sich also nicht zu 100% sicher sind, mit welchem ​​System Sie arbeiten, sollten Sie dort keine Befehle ausführen, die geheime Daten enthalten.

Fazit

Ich hoffe wirklich, dass die hier besprochenen Techniken bei Ihrer täglichen Arbeit für Sie nützlich sind und die Ausführung etwas angenehmer machen. Dies ist jedoch nicht alles. Stellen Sie sicher, dass Sie die Protokoll-Manpage auf Ihrem System überprüfen. Ich bin mir sicher, dass Sie sich viel nützlicher finden können!

Zweifellos besteht bei der Arbeit mit Linux manchmal ein Bedarf dateisuche mit bestimmten Eigenschaften. Diese Merkmale können Dateigröße oder -typ, Zugriffsrechte und mehr sein.

Verfügbarkeit in Linux-Befehle findenhilft viel mit zurechtzukommen dateisuche   nach verschiedenen Kriterien.

Heute werden wir analysieren dateisuche in Linux   und geben Sie die wichtigsten Befehlsoptionen findendie Sie in Ihrer Arbeit bewerben können.


Befehlsformat finden:

findender Weg-Optionen

wo der Weg   - Dies ist das Verzeichnis, in dem gesucht werden soll. Die folgenden Werte können als Pfad angegeben werden:

.   - im aktuellen Verzeichnis suchen;

/   - Suche aus dem Wurzelverzeichnis;

~   - Suche im Heimatverzeichnis.

Was die Optionen angeht, so gibt es eine viel größere Liste, mit der es notwendig ist, sorgfältig zu lesen (dies wird in Zukunft viel helfen!). So finden Sie grundlegende Optionen des Befehls:

-name   - Suche nach Dateien anhand des Namens anhand der angegebenen Vorlage;

-user   - Suche nach Dateien, die zu dem angegebenen Benutzer gehören;

-Gruppe   - Suche nach Dateien, die zur angegebenen Gruppe gehören;

-perm   - Suche nach Dateien mit dem angegebenen Zugriffsmodus;

-type   - Suche nach Dateien eines bestimmten Typs. Es gibt auch genug Typen:

  • b - spezielle Blockdatei;
  • d - Verzeichnis;
  • c - Sonderzeichendatei;
  • f ist eine reguläre Datei;
  • l - symbolischer Link;
  • p ist die benannte Pipe;
  • s - sockel.
-größe n   - Suche nach Dateien mit einer Größe von n Einheiten;

-mtime -n + n   - Suche nach Dateien, deren Inhalt vor weniger als (-) oder mehr als (+) Tagen geändert wurde.

Betrachten Sie einige beispiele für Befehlsverwendung finden :

Die am häufigsten verwendete Option ist die Option -namedie nach Dateien nach Namen sucht.

Beispiele mit der Option -name :

$ find / mnt / usb -name "* .mp3" -print

sucht nach allen Dateien (mit * gekennzeichnet) mit der Erweiterung .mp3 auf dem USB-Gerät, das im Verzeichnis / mnt / usb eingehängt ist.

$ find ~ -name "test *" -print

zeigt eine Liste der Ausgangsverzeichnisdateien an, die mit test beginnen.

Wenn Sie Dateien suchen müssen, die mit bestimmten Buchstaben beginnen (z. B. von a bis j), empfiehlt es sich, reguläre Ausdrücke zu verwenden, die sich bei der Arbeit als äußerst praktisch erweisen:

$ find / -name "*" -print

Mit dem obigen Befehl können Sie alle Dateien im System finden, beginnend mit den Buchstaben von a bis j.

Suchen Sie nach Dateien mit bestimmten Zugriffsmodi

Wenn Sie Dateien mit bestimmten Zugriffsmodi suchen müssen, hilft Ihnen die Option. -permdas ist einfach zu helfen.

Lassen Sie uns zum Beispiel nach Dateien mit dem Zugriffsmodus 775 suchen (der Besitzer und die Gruppe haben) volle Rechte   und die Benutzer mit Einschränkungen haben den Eintrag für die Einschränkung im aktuellen Verzeichnis:

$ finden -perm 775 -print

Durch die Suche mit finden Mit der Option -perm können Sie eine andere Methode verwenden. Sie können einen Bindestrich vor den Moduswert setzen. Anschließend wird nach Dateien gesucht, für die alle angegebenen Berechtigungsbits festgelegt sind. Darüber hinaus werden die restlichen Bits in diesem Fall ignoriert.

Finden Sie beispielsweise die Dateien, auf die Benutzer der Gruppe uneingeschränkten Zugriff haben:

$ finden -perm -070 -print

Anstelle eines Bindestrichs können Sie ein Pluszeichen angeben. In diesem Fall werden Dateien mit mindestens einem der angegebenen Berechtigungsbits durchsucht. Die restlichen Bits werden ignoriert.

Suchen Sie nach Dateien eines bestimmten Benutzers oder einer Gruppe

Das Auffinden von Dateien eines bestimmten Benutzers ist in seiner Implementierung extrem einfach. Führen Sie dazu einfach den Befehl aus:

$ find / -user admin -print

Der obige Befehl wird produzieren dateisuche   im System des Benutzers admin.

Um nach Dateien zu suchen, die zu einer bestimmten Gruppe gehören (z. B. Manager), führen Sie den folgenden Befehl aus:

$ find / -Gruppenmanager -print

Sie können die Optionen verwenden, um nach Dateien nicht vorhandener Benutzer oder Gruppen zu suchen. -nouser   und -nogruppe:

$ / -nouser -print finden

$ find / -nogroup -print

Suchen Sie nach Dateien eines bestimmten Typs

Eine der praktischen Funktionen des Teams findenist die Fähigkeit, nach Dateien eines bestimmten Typs zu suchen. Erwägen Sie Optionen für die Verwendung der Option -type:

Finden Sie symbolische Links im Verzeichnis / etc:

$ find / etc -type l -print

Zeigt eine Liste der Verzeichnisse im Verzeichnis / mnt / raid an

$ find / mnt / raid-type d -print

Suchen Sie nach Dateien mit einer bestimmten Größe

Option -größe   Ermöglicht die Suche nach Dateien mit einer bestimmten Größe und hat bei der Ausführung folgendes Aussehen:

$ finden -größe 2000k -druck

Der obige Befehl wird Dateien von 2 MB im aktuellen Verzeichnis auf dem Bildschirm suchen und anzeigen. Wenn Sie beispielsweise nach Dateien suchen müssen, die kleiner als 500 Kilobyte sind, lautet der Befehlstyp wie folgt:

$ finden -size -500k -print

Wenn Sie Dateien suchen müssen, die größer als 600 MB sind, wenden Sie den folgenden Befehl an:

$ find / -size + 600M -print

Suchen Sie nach Dateien mit der Option -mtime

Option -zeit   können Sie Dateien finden, die sich innerhalb einer bestimmten Zeit geändert haben.

Zum Beispiel mussten wir nach Dateien suchen, die sich im Verzeichnis / mnt / raid / upload befinden und in den letzten 5 Tagen geändert wurden. Das Team wird uns dabei helfen:

$ find / mnt / raid / upload -mtime -5 -print

Wenn Sie beispielsweise das Gegenteil benötigen, um Dateien zu finden, die sich seit einer Woche nicht geändert haben, wenden Sie den Befehl an:

$ find / mnt / raid / upload -7 -print

Team finden   ist ein äußerst praktisches Werkzeug für dateisuche und kann auch für verwendet werden dateisuche   auf NFS-Laufwerken (Netzwerk dateisysteme), aber in diesem Fall muss berücksichtigt werden, dass die Suche nach etwas auf NFS viel länger dauert als auf lokalen Festplatten.

In diesem Artikel haben wir nur die grundlegenden Optionen des Suchbefehls behandelt, die Ihnen bei Ihrer Arbeit helfen werden. Verwenden Sie das, was bequem ist, und sorgen Sie sich nicht um Kleinigkeiten!

In einer Serverumgebung erfordert das Arbeiten mit der Befehlszeile viel Zeit. Die Bash-Shell wird oft verwendet. befehls-Shell   der Standard der meisten Distros.

Wahrscheinlich werden während der Terminalsitzung häufig gebräuchliche Befehle wiederholt und Variationen dieser Befehle werden noch häufiger. Natürlich ist das manuelle Eintippen jedes Teams sehr nützlich, da dies eine zusätzliche Gelegenheit zum Üben ist, aber irgendwann beginnt es zu stören und zu nerven.

Glücklicherweise hat die Bash-Shell einige ziemlich gut entwickelte History-Funktionen. Durch die Möglichkeit, Historie in bash produktiv zu nutzen und zu verwalten, können Sie weniger Zeit mit der Eingabe von Befehlen verbringen und erhöhen somit den Arbeitsaufwand. Wie Sie wissen, ist bei den Entwicklern das sogenannte DRY-Prinzip (Don'tt Repeat Yourself) beliebt. Die effektive Verwendung von History in Bash hilft, mit Informationen nach diesem Prinzip zu arbeiten.

Dieses Handbuch zeigt alle Funktionen von VPS mit Ubuntu 12.04, aber fast alle modernen linux-Distributionen   wird auf ähnliche Weise funktionieren.

Verlaufseinstellungen in bash

Bevor Sie die Story verwenden, müssen Sie einige der Bash-Einstellungen bearbeiten, um sie anwendbarer zu machen.

Mit Bash können Sie die Anzahl der vorherigen Befehle bearbeiten, die im Verlauf gespeichert werden müssen. Dazu gibt es zwei verschiedene Optionen für bash: Der Parameter „HISTFILESIZE“ legt die Anzahl der in der History-Datei gespeicherten Befehle fest, und „HISTSIZE“ gibt die Anzahl der Befehle an, die für die aktuelle Sitzung im Speicher gespeichert sind.

Dies bedeutet, dass Sie vernünftige Grenzen für die Größe des Verlaufs für die aktuelle Sitzung im Speicher festlegen und einen größeren Verlauf für die spätere Verwendung auf der Festplatte speichern können.

Standardmäßig setzt bash sehr moderate Werte für diese Parameter, sodass sie erweitert werden müssen, um eine vollständigere Historie verwenden zu können. Einige Distributionen haben bereits die Standardverlaufseinstellungen erhöht.

Um diese Optionen zu ändern, öffnen Sie die Datei "~ / .bashrc" mit dem Editor:

Suchen Sie nach den Optionen "HISTSIZE" und "HISTFILESIZE". Wenn für sie Werte festgelegt sind, ändern Sie sie. Wenn sich in dieser Datei keine solchen Parameter befinden, geben Sie diese ein. In diesem Handbuch können 10.000 Zeilen für eine Festplatte und 5.000 gespeicherte Zeilen verwaltet werden. Dies sind ziemlich bescheidene Werte für die meisten Systeme, aber selbst wenn sie die Leistung beeinträchtigen, müssen sie gesenkt werden:

HISTSIZE = 5000
  HISTFILESIZE = 10.000

Standardmäßig schreibt bash am Ende jeder Sitzung ein Protokoll, wobei eine vorhandene Datei überschrieben und aktualisiert wird. Dies bedeutet, dass bei der Arbeit in mehreren Bash-Sitzungen nur der Verlauf der letzten abgeschlossenen Sitzung gespeichert wird.

Dies kann umgangen werden, indem der Parameter "histappend" festgelegt wird. Dadurch wird die Story hinzugefügt und nicht überschrieben. Es kann bereits installiert sein; Andernfalls kann es durch Hinzufügen der folgenden Zeile aktiviert werden:

shopt -s histappend

Damit bash Befehle sofort in history eingeben kann, ohne darauf zu warten, dass die Sitzung beendet ist (damit Befehle von einem Terminal sofort in einem anderen verfügbar sind), können Sie den Befehl „history –a“ für die Option „PROMPT_COMMAND“ festlegen oder hinzufügen, die Befehle enthält, die vor jedem neuen Befehl ausgeführt werden Befehlszeile

Aber für den korrekten Betrieb eines solchen Teams braucht es einen Trick. Fügen Sie sofort „history –a“ zur Verlaufsdatei hinzu, löschen Sie dann den aktuellen Verlauf dieser Sitzung mit „history –c“, lesen Sie dann die bearbeitete Verlaufsdatei und kehren Sie mit „history –r“ zum Verlauf dieser Sitzung zurück.

Es sieht so aus:

export PROMPT_COMMAND = "history -a; history -c; history -r; $ PROMPT_COMMAND"

Speichern Sie die Änderungen und schließen Sie die Datei, nachdem Sie diesen Vorgang abgeschlossen haben.

Um Änderungen zu aktivieren, melden Sie sich ab und wieder an, oder verwenden Sie den Befehl source diese Dateitippen:

source ~ / .bashrc

Frühere Geschichte anzeigen inBash

Um den Verlauf in Bash anzuzeigen, verwenden Sie den Befehl "history". Es zeigt die vorherigen Befehle in der Befehlszeile an. In den meisten Fällen sollte die mit dem Wert "HISTSIZE" festgelegte Anzahl von Zeilen ausgegeben werden. Momentan gibt es nicht so viele Teams:

geschichte
. . .
  43 Mann bash
  44 man fc
  45 Mann Bash
  46 fc -l -10
  47 geschichte
  48 ls -a
  49 vim .bash_history
  50 geschichte
  51 mann geschichte
  52 geschichte 10
  53 geschichte

Es zeigt auch die Sequenznummer des Befehls an. Jedem Team ist eine Nummer zugeordnet, um die Verwendung zu erleichtern.

Die Ausgabe kann reduziert werden, indem die Anzahl der Befehle nach der "Historie" angegeben wird. Wenn Sie beispielsweise nur die letzten fünf eingegebenen Befehle anzeigen möchten, können Sie Folgendes eingeben:

geschichte 5
  50 geschichte
  51 mann geschichte
  52 geschichte 10
  53 geschichte
  54 geschichte 5

Um alle Befehle in einer Historie zu finden, die eine bestimmte Zeichenfolge enthalten, können Sie einfach grep nach dem vertikalen Balkensymbol verwenden. Um beispielsweise Zeichenfolgen zu finden, die „cd“ enthalten, geben Sie Folgendes ein:

geschichte | grep cd
  33 cd Bilder /
  37 cd ..
  39 cd Desktop /
  61 cd / usr / bin /
  68 cd
  83 cd / etc /
  86 cd resolvconf /
  90 cd resolv.conf.d /

Ausführen von Befehlen aus der Historie in Bash

Es ist natürlich nützlich zu lernen, wie man Befehle ausgibt. Aber abgesehen von der Reihenfolge der Befehle gibt es so gut wie nichts. Um einen vorherigen Befehl aufzurufen, müssen Sie eine spezielle Syntax verwenden.

Sie können einen der vorherigen Befehle aufrufen, indem Sie dessen Nummer eingeben und davor platzieren. ausrufezeichen   "!" Basierend auf dem obigen Verlaufsbeispiel können Sie die Betriebshandbuchseite schnell aufrufen, indem Sie einfach Folgendes eingeben:

Dies wird sofort den Befehl in der Historie unter Nummer 51 auslösen und ausführen.

Sie können auch Befehle relativ zur aktuellen Position ausführen. Dies geschieht mit der Syntax "! -N", wobei "n" durch die Nummer des auszuführenden Befehls ersetzt werden muss.

Wenn Sie zum Beispiel den vorletzten Wählbefehl anzeigen und ausführen möchten, können Sie "! -2" eingeben. Wenn also der Inhalt des langen Pfads zum Verzeichnis angezeigt wurde und der Befehl Echo eingegeben wurde und Sie nun den Pfad erneut ausgeben müssen, kann die Sitzung folgendermaßen aussehen:

ls / usr / share / doc / manpages
  hallo hallo
  ! -2 # listet den Inhalt erneut auf

Um den letzten Befehl erneut auszuführen, anstatt "! -1" in bash zu verwenden, können Sie den Hot-Befehl "!!" verwenden, der Folgendes ausführt:

Viele verwenden dies, wenn sie einen Befehl eingegeben haben, für den Sudo-Berechtigungen erforderlich sind. Wenn Sie "sudo !!" eingeben, wird der Befehl mit sudo-Berechtigungen übererfüllt. Diese Sitzung sieht folgendermaßen aus:

berühren Sie / etc / hallo
  touch: cant touch `/ etc / hello": Erlaubnis verweigert
  Sudo !!
  sudo touch / etc / hallo
   Passwort für Demouser:

Dieses Beispiel zeigt eine weitere Funktion dieser nützlichen Syntax. In der Tat ist dies ein einfacher Ersatz, da er bei Bedarf in anderen Befehlen enthalten sein kann.

Scrolling-Verlauf in Bash

Sie können in Bash durch die Historie blättern und die darauffolgenden Befehle zur Bearbeitung auf verschiedene Weise in der Befehlszeile anzeigen.

Die gebräuchlichste Methode ist das Drücken der Aufwärtspfeiltaste in der Befehlszeile.

Jedes weitere Drücken dieser Taste führt einen Schritt zurück in der Befehlszeilenhistorie. Um die Richtung zu ändern, verwenden Sie die Nach-unten-Taste, um die Story bis zur letzten Befehlszeile zu scrollen.

Anstelle der Pfeiltasten können Sie Tastenkombinationen verwenden: „STRG-p“, um den Verlauf rückwärts zu scrollen, und „STRG-n“, um vorwärts zu blättern.

Um zur aktuellen Befehlszeile zurückzukehren, können Sie "Meta-\u003e" verwenden. In den meisten Fällen ersetzen „Meta“ und das Symbol „\u003e“ die Kombination „ALT-Shift-“. Dies ist sehr nützlich, wenn der Strom befehlszeile   ist weit genug weg.

Um zur ersten Zeile der Story zu gelangen, verwenden Sie das umgekehrte Manöver<». Обычно это сочетание замещает «ALT-Shift-,».

Im Folgenden finden Sie eine Zusammenfassung der wichtigsten Navigationstasten der Historie:

  • Pfeiltaste nach oben: Blättern Sie die Geschichte zurück.
  • STRGp: blättern Sie die Geschichte zurück;
  • Pfeiltaste nach unten: Blättern Sie die Geschichte vorwärts.
  • STRGn: blättern Sie die Geschichte vorwärts;
  • AltShift-. : zum Ende der Geschichte springen (bis zum zuletzt eingegebenen Befehl);
  • AltShift-, : Zum Anfang der Geschichte springen (zum ersten eingegebenen Befehl).

Suchverlauf inBash

Obwohl die Verwendung der Kombination "Geschichte | grep ”ist der einfachste Weg, um einige Eingriffe durchzuführen, seine Arbeit ist in vielen Situationen alles andere als perfekt.
  Bash hat eine History-Suchfunktion. Beispielsweise wird häufig die Historiensuche in entgegengesetzter Richtung verwendet (zuerst werden die "neuesten" Ergebnisse angezeigt), und zwar mit der Tastenkombination "Strg-r".

Sie können beispielsweise "Strg-r" eingeben und einen Teil des vorherigen Befehls eingeben. Es ist notwendig, nur einen Teil des Teams zu rekrutieren. Wenn der eingegebene Wert mit einem nicht benötigten Befehl übereinstimmt, können Sie erneut "Strg-r" drücken, um das folgende Ergebnis anzuzeigen.

Wenn der gewünschte Befehl versehentlich weggelassen wurde, können Sie die Suchrichtung mit der Kombination "STRG-s" ändern. Dies ist auch hilfreich, wenn Sie durch den im vorherigen Kapitel beschriebenen Verlauf für die Vorwärtssuche navigieren.

Hinweis: In vielen Terminals blockiert die Kombination "CTRL-s" die Terminalsitzung. Das heißt, wenn Sie versuchen, es für die Suche zu verwenden, wird das Terminal "eingefroren". Um eine Sitzung zu entsperren, geben Sie einfach "Strg-q" ein.

Diese Funktionen zum Anhalten und Wiederaufnehmen einer Sitzung in den meisten modernen Terminals sind nicht erforderlich, da sie durch Eingabe von folgenden Funktionen deaktiviert werden können:

Jetzt müssen Sie dies der Datei "~ / .bashrc" hinzufügen, um die ständige Ausführung des Befehls sicherzustellen.

Diese Suchkombination funktioniert nun korrekt.

Suche nach einem Teil des eingegebenen Befehls

Eine übliche Suchmethode besteht darin, einen Teil eines Befehls einzugeben, herauszufinden, ob er zuvor ausgeführt wurde, und ihn dann in der Historie zu finden.

Wie führen Sie eine Suche anhand der bereits in der Befehlszeile eingegebenen Daten durch? Bewegen Sie den Cursor mit "CTRL-a" an den Anfang der Zeile, rufen Sie die umgekehrte Ansicht der Historie "CTRL-r" auf, fügen Sie die aktuelle Zeile mit "CTRL-y" in die Suche ein und verwenden Sie die "CTRL-r" -Taste, um die Suche umzukehren.

Beispielsweise müssen Sie den Paketcache in Ubuntu aktualisieren. Dieser Befehl wurde bereits ausgeführt. Um zu überprüfen, ob dies der Fall ist, können Sie sudo eingeben:

Zu diesem Zeitpunkt steht fest, dass dieser Befehl in letzter Zeit definitiv ausgeführt wurde. Klicken Sie jetzt auf:

Dadurch wird der Cursor an den Anfang der Zeile verschoben.

Dies führt zu einer umgekehrten sequentiellen Verlaufssuche. Diese Aktion hat einen Nebeneffekt: Sie kopiert den gesamten Inhalt der Befehlszeile, die sich hinter der aktuellen Cursorposition befindet, und fügt sie in die Zwischenablage ein.

Dadurch werden die Teile des Befehls, die Sie gerade aus der Befehlszeile kopiert haben, in die Suche eingefügt.

Jetzt müssen Sie die umgekehrte Verlaufssuche erneut ausführen, um die Befehle zu finden, die den angegebenen Teil enthalten.

Dieses Verfahren erscheint zunächst verwirrend, aber Sie müssen sich nur daran gewöhnen. Es ist äußerst nützlich in jenen Momenten, in denen die Hälfte der komplexen Befehle eingegeben wurde. Jetzt ist eine Historie erforderlich, um die Arbeit abzuschließen.

Darüber hinaus können alle diese Aktionen zu einer einzigen kombiniert werden:

Erweiterte Verwendung von History in Bash

Nachdem Sie die grundlegenden Techniken zur Verwendung der Geschichte in bash überprüft haben. Unter ihnen:

  • !! : den letzten Befehl anzeigen;
  • ! n: gehe zum Team mit der Sequenznummer "n";
  • !- n: Gehen Sie zu dem Befehl, der mit „n“ nummeriert wurde, bevor Sie den letzten Befehl ausführen.

Ereignis-IDs

Die obigen drei Kombinationen werden aufgerufen determinanten der Veranstaltung. Auf diese Weise können Sie frühere Befehle aus der Historie anhand bestimmter Kriterien aufrufen.

Um beispielsweise den letzten Befehl "ssh" auszuführen, können Sie Folgendes verwenden:

Diese Aktion sucht nach Zeilen, die mit "ssh" beginnen. Um eine Sequenz zu finden, die sich nicht am Anfang eines Befehls befindet, können Sie das "?" - Zeichen vor und nach der Sequenz eingeben. Um beispielsweise den letzten Befehl "apt-cache search" zu wiederholen, müssen Sie Folgendes eingeben:

Sie können auch Variationen der Ausgabe des letzten Befehls ("!!") verwenden. Führen Sie eine Schnellsuche durch und geben Sie Folgendes ein:

^ original ^ ersatz ^

Dadurch wird der letzte Befehl (wie „!!“) aufgerufen, mit dem Wert von „Original“ nach einer Übereinstimmung gesucht und durch den Wert von „Ersetzen“ ersetzt. Dann wird der Befehl ausgeführt.

Es ist sehr praktisch zu verwenden, wenn Sie Rechtschreibfehler korrigieren müssen. Z.B:

katze / etc / hosst
  cat: / etc / hosst: Keine solche Datei oder Verzeichnis
  ^ hosst ^ Gastgeber ^

Wortkennungen

Nach den Ereignisbezeichnern können Sie einen Doppelpunkt (:) hinzufügen und dann hinzufügen wortbezeichnerum einen Teil des übereinstimmenden Teams auszuwählen.

Dies funktioniert, indem der Befehl in "Wörter" unterteilt wird - Bereiche, die durch Leerzeichen getrennt sind. Dies eröffnet neue Möglichkeiten für die Interaktion mit Befehlsparametern.

Der Befehl selbst ist mit Null nummeriert, das erste Argument ist 1 usw.

Beispielsweise können Sie den Inhalt eines Verzeichnisses anzeigen und dann auf folgende Weise ändern:

ls / usr / share / doc / manpages
  CD !!: 1

Wenn diese Operation mit dem letzten Befehl ausgeführt wird, kann diese Kombination durch Entfernen des zweiten "!" Und des Doppelpunkts komprimiert werden.

Dies funktioniert genauso.

Das erste Argument kann mit dem Symbol „^“ referenziert werden, das letzte Argument kann mit „$“ bezeichnet werden. Diese Zeichen sind viel nützlicher, wenn Sie mit Bereichen und nicht mit Seriennummern arbeiten. Sie können beispielsweise alle Argumente des vorherigen Befehls auf drei Arten in den neuen Befehl extrahieren:

!!:1*
!!:1-$
!!:*

Das Sternchen "*" wird verwendet, um die Ausgabe von Daten mit Ausnahme des ursprünglichen Befehls anzuzeigen. In ähnlicher Weise können Sie die Wortnummer gefolgt von * verwenden, um anzugeben, dass alles nach dem angegebenen Wort ebenfalls enthalten sein soll.

Modifikatoren

Das letzte, was dem Verhalten der aufgerufenen Verlaufszeile hinzugefügt werden kann, ist die Änderung des Verhaltens des Aufrufs, um den Text selbst zu steuern. Modifikatoren werden nach dem zusätzlichen ":" am Zeilenende eingefügt.

Sie können beispielsweise den Pfad zu einer Datei mit dem Modifikator "h" (dh "head") verkürzen, wodurch der Pfad zum letzten Schrägstrich (/) entfernt wird. Denken Sie daran: Es funktioniert nicht richtig, wenn Sie den Pfad zu einem Verzeichnis verkürzen müssen, das mit einem Schrägstrich endet.

Dies wird häufig verwendet, wenn eine Datei geändert wird und es erforderlich ist, in ihr Verzeichnis zu wechseln, um Vorgänge für die zugehörigen Dateien auszuführen.

cat / usr / share / doc / manpages / urheberrecht

Danach müssen Sie in das Verzeichnis gehen. Dies kann mit dem Befehl „cd“ am Parameterstring erfolgen, der den Dateinamen am Ende abschneidet.

cd !!: $: h
  pwd
  / usr / share / doc / manpages

Sie können auch den umgekehrten Vorgang ausführen, indem Sie den Pfad verkürzen und nur den Dateinamen verwenden. Verwenden Sie dazu den Modifikator "t" (was "Schwanz" bedeutet). Sie können zum Beispiel nach dem letzten Befehl "cat" suchen, indem Sie das Flag "t" verwenden, um nur den Dateinamen zu belassen.

Sie können auch einfach den vollständigen Pfad verlassen, und das Team wird ordnungsgemäß arbeiten. Aber manchmal ist es nicht so. Wenn Sie beispielsweise mit einer Datei arbeiten, die in mehreren Unterverzeichnissen des aktuellen Verzeichnisses verschachtelt ist, einen relativen Pfad verwenden und das Unterverzeichnis mit dem Modifikator „h“ ändern, funktioniert der relative Pfad zu dieser Datei nicht mehr.

Ein weiterer sehr nützlicher Modifikator ist "r", der das nachfolgende Suffix der Form ".xxx" entfernt. Dies ist nützlich, wenn Sie mit dem Befehl "tar" eine Datei entpacken und dann in ein Verzeichnis wechseln. Wenn der Verzeichnisname mit dem Dateinamen übereinstimmt, können Sie Folgendes tun:

tar xzvf long-Projektname.tgz
  CD !!: $: r

Wenn der Tarball die Erweiterung tar.gz anstelle von tgz verwendet, geben Sie einfach den Modifikator zweimal ein:

tar xzvf long-Projektname.tar.gz
  cd !!: $: r: r

Ein ähnlicher Modifikator "e" entfernt alles außer der Endstückverlängerung.

Wenn der aufzurufende Befehl nur gefunden und nicht ausgeführt werden soll, kann mit dem Modifikator "p" der Befehl für bash erneut angezeigt werden.

Dies ist nützlich, wenn Sie sicherstellen möchten, dass der ausgewählte Teil der Story korrekt ist. Darüber hinaus fügt dieser Modifikator den ausgewählten Befehl in die Historie ein, falls er weiter bearbeitet werden muss.

Beispielsweise wurde der Befehl „find“ zuvor im Basisverzeichnis ausgeführt und muss nun von diesem Verzeichnis (/) aus ausgeführt werden. Sie können folgendermaßen überprüfen, ob die Ersetzung korrekt durchgeführt wurde (vorausgesetzt, dieser Befehl hat die Nr. 119):

find ~ -name "file1" # ursprünglicher Befehl
  ! 119: 0: p /! 119: 2 *: p
  find / -name "file1"

Wenn der Befehl korrekt angezeigt wurde, kann er ausgeführt werden mit:

Es gibt auch eine einfachere Möglichkeit, eine Ersetzung in Befehlen auszuführen: Dazu können Sie die Syntax s / original / new / verwenden.

Zum Beispiel kann die oben beschriebene Aktion wie folgt ausgeführt werden:

Dadurch wird die erste Instanz des Suchmusters ersetzt. Verwenden Sie die Modifikatoren "g" und "s", um bei jedem Spiel eine Ersetzung durchzuführen. Um beispielsweise Dateien mit dem Namen "file1", "file2" und "file3" und den Verzeichnissen "dir1", "dir2", "dir3" zu erstellen, müssen Sie Folgendes verwenden:

berühren Sie file1 file2 file3
  mkdir !!: *: gs / file / dir /

Ergebnisse

Dieses Handbuch hilft Ihnen beim Erlernen der Grundlagen der Verwendung von Historie. Natürlich sind einige der beschriebenen Funktionen in seltenen Fällen nützlich, aber es ist auch notwendig, sie zu kennen und zu wissen, wie man sie benutzt.

Im Allgemeinen können alle beschriebenen Verwendungen der Geschichte die Arbeit erheblich beschleunigen.

   Tags :,

Linux hat einen sehr leistungsfähigen und nützlichen Befehl zum Suchen von Dateien - den Befehl find. Es verfügt über eine große Anzahl von Dateisuchfunktionen, jedoch ist es für Anfänger manchmal schwierig, hauptsächlich aufgrund seiner Syntax.

Ein einfaches Beispiel für die Verwendung des Befehls find

Betrachten Sie zunächst ein einfaches Beispiel für die Verwendung des Befehls find zum Suchen von Dateien auf einem Computer namens config. Wir werden nach Konfigurationsdateien ausgehend vom Stammverzeichnis / suchen. Dazu müssen Sie den Befehl als root-Benutzer ausführen, um ausreichende Zugriffsrechte zu haben. Andernfalls erhalten Sie die Meldung "Permission denied". Führen Sie also den Befehl aus:

Suche nach / -name config -print

Der Befehl bedeutet Folgendes: Suchen Sie nach Dateien mit dem Namen config (-name config), beginnend mit dem Verzeichnis / (dem ersten Parameter des Suchbefehls), und zeigen Sie die Dateinamen auf dem Bildschirm an (-print-Argument). Ich stelle fest, dass die Suche rekursiv ist, dh bei der Suche werden alle Unterverzeichnisse angezeigt. Wie Sie sehen können, ist alles einfach. Betrachten Sie nun die Syntax des Befehls und fahren Sie mit der Überprüfung der Hauptargumente fort.

Befehlssyntax suchen

Die allgemeine Syntax des Suchbefehls, die Sie im Referenzhandbuch finden, erscheint möglicherweise nicht unkompliziert, daher gebe ich Ihnen ein besser lesbares Beispiel:

Suchen [Pfad] [Optionen] [Suchkriterien] [Dateiaktionen]

Der Weg

Sowohl absolute als auch relative Pfade sowie eine Liste von Pfaden, die durch ein Leerzeichen getrennt sind, können als Suchpfad verwendet werden.

Optionen

Optionen für den Suchbefehl werden angegeben, beginnend mit einem "-" - Zeichen gefolgt vom Namen der Option. Berücksichtigen Sie die grundlegenden Optionen.

Suchkriterien

Der Suchbefehl kann mehrere Suchkriterien haben (diese werden auch als Tests bezeichnet). Jedes Kriterium ist eine bestimmte Testbedingung, die entweder wahr oder falsch zurückgibt. Dies kann mit den Bedingungen einer if-Anweisung in der Programmierung verglichen werden. Während der Verarbeitung der nächsten Datei überprüft der Suchbefehl jedes Kriterium der Reihe nach. Wenn das nächste Kriterium den Wert false ergibt, wird der Suchbefehl zur nächsten Datei verschoben. Der Suchbefehl hat einige Kriterien, wir werden nur einige davon berücksichtigen.

-Zeit NDie letzte Datei wurde vor N Tagen aufgerufen.
-Zeit NLetzte Dateiänderung war vor N Tagen.
-name VorlageDateiname (Namensmuster) ohne Pfad Es wird empfohlen, die Vorlage immer in Anführungszeichen zu setzen.
-Neuere andere_DateiDie Datei wurde später als eine andere_Datei geändert.
-größe [±] NDie Dateigröße beträgt N Blöcke, wenn + N angegeben wird, dann ist die Dateigröße größer als N, -N ist kleiner. Das Zeichen nach N gibt die Größe des Blocks an. b - 512 Bytes, s - Bytes, w - 2 Bytes, k - Kilobyte, M - Megabyte, G - Gigabyte.
-Typ CGeben Sie eine C-Datei ein. Die am häufigsten verwendeten Werte für C sind: d ist das Verzeichnis, f ist die Datei.
-benutzer benutzernameDie Datei gehört zu einem Benutzer namens Benutzername.

Beispiele für die Verwendung des Befehls find anhand von Kriterien

  finden -type f -name "~ *" -print

Suchen Sie im aktuellen Verzeichnis nach regulären Dateien (nicht Verzeichnissen), deren Name mit dem Zeichen „~“ beginnt.

Finden -newer file.bak-type f -print

Suchen Sie die Dateien im aktuellen Verzeichnis, die später geändert wurden als die Datei file.bak.

Betreiber

Kriterien können mit Operatoren kombiniert werden. Im Folgenden sind die Operatoren in absteigender Reihenfolge der Priorität aufgeführt.

Im Allgemeinen werden bei der Verwendung von Operatoren Kriterien in der Reihenfolge ihrer Priorität geprüft. Sie können die Reihenfolge mit Klammern ändern. Klammern müssen mit dem Backslash ausgewählt werden.

Beispiele für die Verwendung des Befehls find mithilfe von Operatoren

  finden \\ (- name "~ *" -oder -name "temp *" \\) -type f -print

Suchen Sie im aktuellen Verzeichnis nach Dateien, die mit dem Symbol „~“ oder c „temp“ beginnen. Dabei handelt es sich nur um reguläre Dateien (-type f) und nicht um Verzeichnisse.

Finden -maxdepth 1 \\ (\\ (- size + 600M -and -size -1G \\) -oder -name "* .mpeg" \\) -und -type f

Suchen Sie im aktuellen Verzeichnis (ohne Verarbeitung von Unterverzeichnissen - -maxdeph 1) reguläre Dateien (-file f), die größer als 600 Megabyte und weniger als 1 Gigabyte (-size) sind, oder Dateien, deren Namen mit ".mpeg" (-name) enden.

Aktionen für Dateien

Wenn der Suchbefehl ausgeführt wird, können Sie verschiedene Aktionen für die gefundenen Dateien ausführen. Betrachten Sie die wichtigsten.

In den ausgeführten Befehlen können Sie den Parameter () als Argument verwenden, der durch den Pfad zur aktuellen Datei ersetzt wird.

Beispiele für die Verwendung des Suchbefehls mithilfe von Aktionen

  finden -größe + 1000c -type f -ls

Suchen Sie reguläre Dateien mit mehr als 1000 Byte im aktuellen Verzeichnis und führen Sie den Befehl ls -dils (Aktion ls) aus.

Finden -name "~ *" -Typ f -ok rm () \\;

Suchen Sie reguläre Dateien im aktuellen Verzeichnis, die mit einer Tilde "~" beginnen, und fordern Sie für jede Datei die Entfernung dieser Datei an (zur Ausführung des Befehls rm).

Fazit

In diesem Hinweis haben wir uns einen sehr wichtigen und nützlichen Linux-Suchbefehl angesehen, der nahezu unbegrenzte Möglichkeiten bietet, Dateien anhand vieler Kriterien und Muster zu finden. Und mit Hilfe von Befehlen (Aktionen) können Sie nach Dateien suchen und Operationen daran ausführen.

Fortsetzung des Themas:
Programme

   Die Storefront des Online-Shops soll dasselbe Problem lösen wie das Storefront eines regulären Stores, nämlich, um Waren potenziellen Käufern zu präsentieren. Zu dem ...