So speichern Sie übereinstimmende Wörter aus der Ausgabe von dmesg in einer Liste
576
user423369
Ich verbinde USB-serielle Geräte über verschiedene Anschlüsse mit meinem Gerät, und serielle USB-Geräte werden manchmal als 'ttyUSB0', manchmal 'ttyUSB1' oder 'ttyUSB2' angezeigt.
Wie schreibe ich ein Skript, um alle ttyUSB-Namen aus diesem Befehl zu extrahieren:
deviceNodes = "$(sudo dmesg tail | egrep -i 'ttyUSB')" echo "$" for i in "$" do udevadm info -a -n /dev/ttyUSB1 | grep '' | head -n1 done
und speichern Sie es in einer Variablen und überlaufen Sie die Elemente in der Liste?
Hier ist der Ausgang des Befehls dmesg:
[37606.832517] usb 2-1.1: FTDI USB Serial Device converter now attached to ttyUSB0 [37664.565271] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0 [37695.844687] usb 2-1.1: FTDI USB Serial Device converter now attached to ttyUSB0 [38017.111961] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0 [38490.802048] usb 2-1.1: FTDI USB Serial Device converter now attached to ttyUSB0 [38776.225985] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0 [38778.317840] usb 2-1.1: FTDI USB Serial Device converter now attached to ttyUSB0 [38874.027395] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0 [38876.631579] usb 2-1.1: FTDI USB Serial Device converter now attached to ttyUSB0 [39040.443963] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0 [39796.942837] usb 2-1.2: FTDI USB Serial Device converter now attached to ttyUSB0 [39802.674018] usb 2-1.1: FTDI USB Serial Device converter now attached to ttyUSB1 [40372.029798] ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1 [40372.156024] ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0 [41642.886671] usb 2-1.1: FTDI USB Serial Device converter now attached to ttyUSB0
Bitte fügen Sie die Ausgabe von `sudo dmesg tail | Egrep -i 'ttyUSB'` zu Ihrer Frage.
Cyrus vor 9 Jahren
0
2 Antworten auf die Frage
0
dtbnguyen
Geht es nicht einfach darum, das Folgende zu ändern,
Wenn Sie außerdem nur die tatsächlichen Übereinstimmungen durchlaufen möchten, müssen Sie den Ausdruck so ändern, dass nur diese extrahiert werden. Versuche dies.
dmesg | grep -Eo 'ttyUSB[0-9]+' | sort -u | while read devnode; do udevadm info -a -n /dev/"$devnode" | grep '' | head -n1 done
(Läuft auf meinem System dmesgohne sudoOrdnung und hat kein tailArgument.)