Den Titel von einer DVD lesen?

8

Ich habe festgestellt, dass jedes DVD-Image einen halb eindeutigen Großbuchstaben hat. Gibt es eine standardisierte Möglichkeit für mich, diesen Namen als Nicht-Root-Benutzer unter Linux einfach zu lesen? Ich bin auf einem Ubuntu 12.04-Derivat, auf dem Kernel 3.7 ausgeführt wird. Ich möchte einfach den Namen einer Festplatte abrufen, die sich derzeit im Laufwerk befindet:

DVD_NAME="$( ./read-dvd-name.sh )"
Naftuli Kay
quelle
1
Es wird empfohlen, alle Variablennamen in Großbuchstaben für Nicht-Umgebungsvariablen zu verwenden.
Jordanm
5
Danke, aber das beantwortet meine Frage nicht :) Schlechtes Üben ist umstritten.
Naftuli Kay
2
Deshalb war es ein Kommentar und keine Antwort.
Jordanm

Antworten:

11

Sie könnten dafür verwenden blkid:

DVD_NAME=$(blkid -o value -s LABEL /dev/dvd)

(Dazu benötigen Sie eine Leseberechtigung /dev/dvd).

Oder:

DVD_NAME=$(udevadm info -n dvd -q property | sed -n 's/^ID_FS_LABEL=//p')

Für die Sie keine besonderen Berechtigungen benötigen ( udev(als Root ausgeführt), wird der Labelname mithilfe blkideiner Gerätedatenbank abgefragt und aktualisiert, mit der Sie abfragen udevadm).

Stéphane Chazelas
quelle
Muss ich root sein, um das zu tun?
Naftuli Kay
1

Ich bin mir nicht sicher, ob dies Ihnen helfen würde:

isoinfo  -i C462_19-08-26_09-56.iso -d | sed -n 's/^Volume id: //p'
isoinfo  -i C462_19-08-26_09-56.iso -d | awk '/Volume id: / {print $3}'

Meine ungeschickte ursprüngliche Lösung:

dvdtitle=$(isoinfo  -i isofile.iso -d | grep "Volume id:" | awk '{print $3}')
Xerostomus
quelle
2
(1) Der Fragentitel lautet "Titel von einer DVD lesen?" und der letzte Satz in der Frage lautet: "Ich möchte einfach den Namen einer Festplatte abrufen, die sich derzeit im Laufwerk befindet ...". Daher sollten Sie wahrscheinlich zunächst die Tatsache vorschlagen und dann als Postskriptum hinzufügen, dass die Mit dem Befehl können Sie ein ISO-Image in einer Datei durch Angabe untersuchen . … (Fortsetzung)isoinfo -i /dev/cdrom -d   ……   -i iso_image_filename 
G-Man sagt 'Reinstate Monica'
2
(Fortsetzung)… (2) awkist ein leistungsstarkes Textverarbeitungswerkzeug. Sie müssen es kaum in Verbindung mit einem anderen Textverarbeitungswerkzeug wie z grep. Ihre Pipeline grep "Volume id:" | awk '{print $3}'kann vereinfacht werden awk '/Volume id: / {print $3}'. (3) Volume-IDs können aus mehreren Wörtern bestehen, und bei diesem print $3Ansatz wird nur das erste angezeigt. Es gibt Möglichkeiten, dies zu handhaben awk, aber ein einfacherer Ansatz besteht darin, die Ausgabe von isoinfoin zu leiten sed -n 's/Volume id: //p'. (4) Zur Überprüfung der geistigen Gesundheit ist es besser, nach zu suchen /^Volume id: /.
G-Man sagt 'Reinstate Monica'
Lieber G-Man, vielen Dank für Ihre wertvollen Hinweise. :-) Mit freundlichen Grüßen X.
Xerostomus