User hat geschrieben:Was bedeutet der folgende Befehl?
Code: Alles auswählen
sed -ne 's/.*\([sh]d[a-zA-Z]\+[0-9]\+$\)/\/dev\/\1/p' /proc/partitions
Dieser Befehl führt eine Suche in der Datei /proc/partitions durch, welche Informationen über die verfügbaren Festplatten und Partitionen im System enthält. Der Befehl sucht nach Zeilen, die auf "sd" oder "hd" gefolgt von einem oder mehreren Buchstaben und einer oder mehreren Ziffern enden. Die gefundenen Zeilen werden so manipuliert, dass sie "/dev/" vor dem gefundenen String hinzufügen, und dann wird das Ergebnis ausgegeben.
Hier ist eine schrittweise Erklärung des Befehls:
sed ist ein Unix-Programm zur Textverarbeitung, das zum Bearbeiten von Textdateien verwendet wird.
-ne bedeutet "nicht drucken" und "keine Standardausgabe", was bedeutet, dass die Ausgabe nicht automatisch auf die Konsole ausgegeben wird.
's/.*[sh]d[a-zA-Z]\+[0-9]\+$//dev/\1/p' ist ein regulärer Ausdruck, der auf jede Zeile in /proc/partitions angewendet wird. Es sucht nach einer Zeichenkette, die mit "sd" oder "hd" beginnt, gefolgt von einem oder mehreren Buchstaben und einer oder mehreren Ziffern. Die gefundene Zeichenfolge wird in eine Gruppe (\1) eingeschlossen und "/dev/" vorangestellt. Das "p" am Ende des Ausdrucks bedeutet, dass das Ergebnis ausgegeben werden soll.
/proc/partitions ist eine Datei, die Informationen über die im System verfügbaren Partitionen enthält.
Insgesamt sucht der Befehl nach allen "sd" oder "hd"-Partitionen im System, fügt "/dev/" hinzu und gibt das Ergebnis aus.
User hat geschrieben:Kannst Du mir die Zeichen .*[sh]d[a-zA-Z]\+[0-9]\+$ genauer erklären?
Ja, gerne!
Die Zeichenfolge .*[sh]d[a-zA-Z]\+[0-9]\+$ ist ein regulärer Ausdruck, der verwendet wird, um nach Zeichenketten in einem Textdokument zu suchen, die bestimmten Kriterien entsprechen.
Hier ist eine detaillierte Erklärung der verschiedenen Elemente in diesem regulären Ausdruck:
.* - Steht für eine beliebige Anzahl von Zeichen, die null oder mehr sein können, die auf den nächsten Teil des regulären Ausdrucks folgen werden. Das "."-Zeichen repräsentiert ein beliebiges Zeichen und das "*" bedeutet, dass dieses beliebige Zeichen null oder mehrfach wiederholt werden kann.
[sh] - Bedeutet, dass das nächste Zeichen entweder ein "s" oder ein "h" sein muss.
d - Steht für das Zeichen "d".
[a-zA-Z]\+ - Sucht nach einer oder mehreren Buchstaben (a bis z oder A bis Z) nach dem vorherigen "d". Das "+" bedeutet, dass mindestens ein Zeichen gefunden werden muss, aber es können auch mehrere vorhanden sein.
[0-9]\+$ - Sucht nach einer oder mehreren Ziffern am Ende der Zeichenkette. Das "$" bedeutet, dass diese Ziffern am Ende der Zeichenkette stehen müssen.
Zusammen genommen sucht der reguläre Ausdruck also nach Zeichenketten, die mit "sd" oder "hd" beginnen, gefolgt von einer oder mehreren Buchstaben und einer oder mehreren Ziffern am Ende der Zeichenkette. Diese Zeichenketten entsprechen typischerweise den Bezeichnungen von Festplatten und Partitionen im Linux-System, wie z.B. "/dev/sda1" oder "/dev/hdb3".
Der reguläre Ausdruck wird dann in Verbindung mit dem Befehl "sed" verwendet, um die entsprechenden Zeichenketten in der Datei /proc/partitions zu finden und sie zu bearbeiten. In diesem Fall wird "/dev/" vor den gefundenen Zeichenketten hinzugefügt und das Ergebnis wird ausgegeben.
User hat geschrieben:Wie müsste der Befehl lauten, wenn auch NVMe-Geräte angezeigt werden sollen?
Um auch NVMe-Geräte in der Ausgabe des Befehls anzuzeigen, können Sie die Suche nach "sd" oder "hd" durch eine Suche nach "sd", "hd" oder "nvme" erweitern. Dazu können Sie den regulären Ausdruck wie folgt ändern:
Code: Alles auswählen
sed -ne 's/.*\([shn]d[a-zA-Z]\+[0-9]\+$\)/\/dev\/\1/p' /proc/partitions
Im obigen Befehl haben wir das [sh] durch [shn] ersetzt, um die Möglichkeit zu erweitern, dass auch "n" für NVMe in den Laufwerksbezeichnungen auftreten kann.
Dieser Befehl sucht nun nach Zeilen, die mit "sd", "hd" oder "nvme" beginnen, gefolgt von einer oder mehreren Buchstaben und einer oder mehreren Ziffern am Ende der Zeichenkette. Diese Zeichenketten entsprechen typischerweise den Bezeichnungen von Festplatten und Partitionen im Linux-System. Das Ergebnis wird wie zuvor mit "/dev/" vor der gefundenen Zeichenkette versehen und ausgegeben.