Die folgenden Dateizugriffsbefehle sind UNIX-Befehle, keine spezifischen Shell-Befehle.
Befehl | Remakr |
---|---|
finden | Findet den Speicherort einer Datei |
sortieren | Liest eine Datei und sortiert die Ausgabe |
hören oder verfolgen | Betrachtet nur den Anfang oder das Ende einer Datei |
Der Suchbefehl
Mit dem Befehl find können Sie nach Dateien und Verzeichnissen suchen und Befehle für diese Dateien ausführen. Die Syntax des Find-Befehls hat drei allgemeine Argumentabschnitte. Der Abschnitt Pfade ist eine Liste mit Pfadnamen (Verzeichnissen), die durchsucht werden sollen. Der Abschnitt search_criteria ist eine Liste von Optionen, die als boolescher Ausdruck (wahr oder falsch) betrachtet werden. Jede Option (Bedingung) wird der Reihe nach getestet und wenn das Ergebnis wahr ist, wird die angegebene Aktion ausgeführt.
Einige der möglichen Suchkriterien sind:
- -name – Wenn der Dateiname übereinstimmt
- -Benutzer – Wenn die Datei einem Benutzer gehört (Anmeldename)
- -atime – Wenn vor der angegebenen Anzahl von Tagen auf die Datei zugegriffen wurde
- -mtime – Wenn die Datei zuletzt vor der angegebenen Anzahl von Tagen geändert wurde
- -Größe – Wenn die Datei die spezifische Blockgröße hat
Einige der möglichen Aktionen sind:
- -drucken – Zeigt den Pfadnamen der Datei an
- -exec – Führt den Befehl aus
- -ok – Führt den Befehl erst aus, nachdem er ein y von stdin erhalten hat
Beispiele für die Verwendung des Find-Befehls
Sie müssen nicht den vollständigen Namen der Datei kennen, um sie zu finden. Beispielsweise neigen Protokolldateien dazu, ziemlich schnell zu wachsen. Als Systemadministrator möchten Sie vielleicht die Größe der Protokolldateien überwachen. Um nach den Verwaltungsprotokolldateien zu suchen (Dateien im Verzeichnis /var/log Verzeichnis), verwenden Sie den folgenden Befehl:
# find /var/log -name "*.log" -print /var/log/audit/audit.log /var/log/tuned/tuned.log /var/log/cloud-init.log /var/log/pm-powersave.log /var/log/awslogs-agent-setup.log /var/log/awslogs.log /var/log/boot.log /var/log/wpa_supplicant.log /var/log/amazon/ssm/amazon-ssm-agent.log /var/log/amazon/ssm/errors.log /var/log/amazon/ssm/hibernate.log /var/log/dpkg.log /var/log/yum.log /var/log/auth.log
Im Rahmen einer Dateisystembereinigung möchten Sie möglicherweise nach Kerndateien suchen und diese löschen. Die folgenden beiden Befehle finden jede Datei mit dem Namen core. Der erste Befehl führt den rm-Befehl ohne Bedienereingabe aus. Der zweite Befehl gibt den rm-Befehl aus und erfordert Bedienereingaben.
$ find / -name core -exec rm -f {} \; $ find / -name core -ok rm -f {} \;
Verwenden Sie den folgenden Befehl, um Dateien zu finden, die größer als 1000 Blöcke sind:
$ find / -size +1000 -print
Der Sortierbefehl
Eine Datei, wie z. B. die Kennwortdatei, wird häufig erstellt, indem neue Benutzer am Ende der Datei hinzugefügt werden. Die Datei hat keine bestimmte Reihenfolge; Wenn Sie jedoch nach etwas oder jemandem in der Datei suchen, wäre es hilfreich, wenn die Datei in einer bestimmten Reihenfolge sortiert wäre. Der Sortierbefehl bietet eine Möglichkeit, die Datei zu sortieren.
Einige der häufiger verwendeten Sortieroptionen sind:
- -r – Sortiert in umgekehrter Reihenfolge (z nach a, statt a nach z)
- -n – Sortiert die Felder numerisch statt nur als American Standard Code for Information Interchange (ASCII)-Strings
- -t [ch] – Setzt das Feldtrennzeichen
- + Zahl – Legt die Feldnummer fest, ab der die Sortierung beginnen soll (Felder werden ab 0 [Null] nummeriert)
- – Zahl – Legt die Feldnummer fest, vor der die Sortierung beendet werden soll (dies ist das erste Feld, das nicht für die Sortierung berücksichtigt wird)
- -b – Ignoriert führende Leerzeichen (sie werden normalerweise als Teil der Felder betrachtet, die während der Schlüsselsortierung angegeben werden)
- -r – Sortiert in umgekehrter Reihenfolge (z nach a, statt a nach z)
- -o – file Legt die Datei fest, die verwendet werden soll, um die Ausgabe der Sortierung zu speichern (die dieselbe Datei sein kann, die die ursprüngliche Eingabe enthält)
# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin ...
Verwenden Sie den folgenden Befehl, um die Datei nach dem Anmeldenamen zu sortieren:
# sort /etc/passwd adm:x:3:4:adm:/var/adm:/sbin/nologin apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin cloud_user:x:1002:1003::/home/cloud_user:/bin/bash colord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gdm:x:42:42::/var/lib/gdm:/sbin/nologin geoclue:x:994:990:User for geoclue:/var/lib/geoclue:/sbin/nologin halt:x:7:0:halt:/sbin:/sbin/halt ...
Verwenden Sie den folgenden Befehl, um die Datei nach dem 5. Feld (dem Kommentar) zu sortieren, wobei die Felder durch den Doppelpunkt getrennt sind:
# sort -t: -k5 /etc/passwd tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin halt:x:7:0:halt:/sbin:/sbin/halt ...
Sie können die Ausgabe einer Sortierung in eine Datei schreiben. Sie können die Sortierung sogar in die Originaldatei ausgeben; zum Beispiel:
# cat names Big Ape 415 Roger Rabbit 408 Jessica Rabbit 510 Easter Rabbit 408 Doctor Doom 415 Easter Rabbit 408 Peter Wolf 510 Roger Rabbit 408 Peter Rabbit 510
# sort names -o names
Überprüfen Sie die Datei erneut:
# cat names Big Ape 415 Doctor Doom 415 Easter Rabbit 408 Easter Rabbit 408 Jessica Rabbit 510 Peter Rabbit 510 Peter Wolf 510 Roger Rabbit 408 Roger Rabbit 408
Wenn Sie mehrere bereits sortierte Dateien zu einer einzigen Datei zusammenführen möchten, verwenden Sie den folgenden Befehl:
# sort file1 file2 file3 -o file4
Das Zusammenführen von Dateien kann zu doppelten Einträgen führen. Um nur die eindeutigen Zeilen der Datei auszugeben, verwenden Sie den folgenden Befehl:
# sort -u names Big Ape 415 Doctor Doom 415 Easter Rabbit 408 Jessica Rabbit 510 Peter Rabbit 510 Peter Wolf 510 Roger Rabbit 408
Teil einer Datei lesen
Häufig möchten Sie nicht eine ganze Datei überprüfen. Sie können den Anfang der Datei durchsuchen, um festzustellen, ob es der richtige ist, oder am Ende einer Datei nachsehen, was zuletzt in die Datei eingegeben wurde.
Das Hauptkommando
Um den Anfang einer Datei zu überprüfen, verwenden Sie den Head-Befehl:
# head -5 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
Der Schweifbefehl
Wenn Sie Protokolldateien überprüfen, interessieren Sie sich wahrscheinlich nur für die letzten paar Einträge dieser Datei. Mit dem tail-Befehl können Sie sich das Ende der Datei ansehen.
# tail -5 /etc/passwd systemd-network:x:995:991:systemd Network Management:/:/sbin/nologin geoclue:x:994:990:User for geoclue:/var/lib/geoclue:/sbin/nologin cloud_user:x:1002:1003::/home/cloud_user:/bin/bash ssm-user:x:1003:1004::/home/ssm-user:/bin/bash apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin