Ich möchte nur die dritte df -h
Ausgabezeile bekommen.
Welche Art von Befehl soll ich verwenden?
Ich möchte nur die dritte df -h
Ausgabezeile bekommen.
Welche Art von Befehl soll ich verwenden?
Antworten:
Der df
Befehl akzeptiert tatsächlich ein Argument, das das gewünschte Dateisystem angibt. So könnten Sie zum Beispiel df /home
oder verwenden df /dev/sda3
.
Wenn Sie die Ausgabe für ein Skript analysieren möchten, sollten Sie df -P
sicherstellen, dass es niemals in mehrere Zeilen umgebrochen wird. Sie könnten zum Beispiel Folgendes verwenden df -Ph /home | tail -n +2
(aber wenn Sie die Ausgabe für ein Skript analysieren, müssen Sie sich der Möglichkeit bewusst sein, dass Dateinamen Leerzeichen enthalten).
df /home
bietet einen Header. Sie interpretieren den Zweck des Benutzers. Du könntest Recht haben. Sie können sich irren, wer weiß?
tail -n +2
entfernt den Header.
Sie können eine Kombination aus head
und verwenden tail
:
df -h | head -3 | tail -1
Oder
df -h | tail -n +3 | head -1
Beachten Sie jedoch, dass Sie sich diese zuerst ansehen sollten, bevor Sie einen externen Befehl verwenden df
, um die Ausgabe aus den eigenen Optionen df
herauszufiltern.
Überprüfen Sie man df
.
Awk ist ein Textverarbeitungsprogramm, das für diese Aufgabe geeignet ist
df -h | awk 'NR == 3'
Ich gehe davon aus, dass Sie nicht unbedingt nach der dritten Zeile suchen, sondern nach der Zeile, in der entweder ein bestimmter Datenträger (z. B. /dev/sda3
) oder ein bestimmter Einhängepunkt (z /home
. B. ) angegeben ist.
Anstatt nur die dritte Zeile anzuzeigen, die unsicher ist, weil sich die Ausgabereihenfolge möglicherweise ändert und Sie ein anderes Ergebnis erhalten, können Sie die Ausgabe nach Inhalt filtern und nur die Zeilen anzeigen, die einem bestimmten Muster entsprechen oder ein Schlüsselwort enthalten.
Ihr Werkzeug dafür ist grep
.
Wenn Sie beispielsweise die Zeile über das Gerät anzeigen möchten /dev/sda3
, geben Sie Folgendes ein:
df -h | grep '/dev/sda3'
Wenn Sie möchten, dass die Zeile Ihr Home-Verzeichnis als Mount-Punkt enthält, verwenden Sie:
df -h | grep '/home'
df -h /dev/sda3
oder df -h /home
(Letzteres funktioniert auch, wenn es sich nicht um einen Einhängepunkt handelt).
Sie könnten auch verwenden perl
:
df -h | perl -ne 'print if $.==3'
Dies $.
ist die aktuelle Zeilennummer, mit der Sie die n-te Zeile drucken können perl -ne 'print if $.==N'
.
Meine erste Idee wäre ein Kopf-Schwanz-Konstrukt.
Beispiel:
df -h | head -3 | tail -1
head -3
bewirkt, dass die Ausgabe nach drei Zeilen gestoppt wird und tail -1
nur die letzte Zeile ausgegeben wird.
Wenn Sie wissen, wie die Ausgabe aussehen wird, können Sie alternativ auch grep
nach Zeilen suchen, die eine bestimmte Zeichenfolge enthalten.