Leggi il titolo da un DVD?


8

Ho notato che ogni immagine del DVD ha un nome maiuscolo semi-univoco. Esiste un modo standardizzato per leggere semplicemente questo nome come utente non root in Linux? Sono su un derivato di Ubuntu 12.04 con il kernel 3.7. Vorrei semplicemente ottenere il nome di qualsiasi disco attualmente nell'unità in questo modo:

DVD_NAME="$( ./read-dvd-name.sh )"

1
È buona norma utilizzare tutti i nomi di variabili maiuscole per variabili non di ambiente.
Jordan

5
Grazie, ma questo non risponde alla mia domanda :) Le cattive pratiche sono discutibili.
Naftuli Kay,

2
Ecco perché è stato un commento e non una risposta.
Giordania,

Risposte:


11

Puoi usare blkidper quello:

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

(devi avere il permesso di leggere /dev/dvdper quello).

O:

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

per i quali non è necessario alcun privilegio speciale ( udev(in esecuzione come root) esegue una query sul nome dell'etichetta utilizzando blkide aggiorna un database del dispositivo con cui si esegue una query udevadm).


Devo essere root per farlo?
Naftuli Kay,

1

Non sono sicuro che questo possa aiutarti:

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}'

La mia soluzione originale goffa:

dvdtitle=$(isoinfo  -i isofile.iso -d | grep "Volume id:" | awk '{print $3}')

2
(1) Il titolo della domanda è "Leggi il titolo da un DVD?" e l'ultima frase nella domanda dice: "Vorrei semplicemente ottenere il nome di qualsiasi disco attualmente nell'unità ...", quindi dovresti probabilmente iniziare suggerendo e quindi aggiungere, come post scriptum, il fatto che il Il comando può essere utilizzato per esaminare un'immagine ISO in un file specificando . ... (proseguendo)isoinfo -i /dev/cdrom -d   ……   -i iso_image_filename 
G-Man dice "Ripristina Monica" il

2
(Continua) ... (2) awkè un potente strumento di elaborazione del testo; non hai quasi mai bisogno di usarlo insieme a un altro strumento di elaborazione del testo come grep. La tua pipeline grep "Volume id:" | awk '{print $3}'può essere semplificata awk '/Volume id: / {print $3}'. (3) Gli ID volume possono essere più parole e questo print $3approccio visualizza solo il primo. Ci sono modi per gestirlo awk, ma un approccio più semplice è convogliare l'output da isoinfoin sed -n 's/Volume id: //p'. (4) Come controllo di sanità mentale, sarebbe meglio cercare /^Volume id: /.
G-Man dice "Ripristina Monica" il

Caro G-Man, grazie per i tuoi preziosi suggerimenti. :-) Cordialmente X.
xerostomus
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.