Lire le titre d'un DVD?


8

J'ai remarqué que chaque image DVD a un nom en majuscule semi-unique. Existe-t-il un moyen standardisé de lire simplement ce nom en tant qu'utilisateur non root sous Linux? Je suis sur un dérivé d'Ubuntu 12.04 exécutant le noyau 3.7. Je voudrais simplement obtenir le nom de n'importe quel disque actuellement dans le lecteur comme ceci:

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

1
Il n'est pas recommandé d'utiliser tous les noms de variables en majuscules pour les variables non liées à l'environnement.
jordanm

5
Merci, mais cela ne répond pas à ma question :) Les mauvaises pratiques sont discutables.
Naftuli Kay

2
C'est pourquoi c'était un commentaire et non une réponse.
jordanm

Réponses:


11

Vous pouvez utiliser blkidpour cela:

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

(vous devez avoir une autorisation de lecture /dev/dvdpour cela).

Ou:

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

pour lequel vous n'avez besoin d'aucun privilège spécial ( udev(en cours d'exécution en tant que root) interroge le nom de l'étiquette en utilisant blkidet met à jour une base de données de périphériques avec laquelle vous interrogez udevadm).


Dois-je être root pour cela?
Naftuli Kay

1

Je ne sais pas si cela pourrait vous aider:

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

Ma solution originale maladroite:

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

2
(1) Le titre de la question est "Lire le titre d'un DVD?" et la dernière phrase de la question dit: "Je voudrais simplement obtenir le nom de n'importe quel disque actuellement dans le lecteur ...", donc vous devriez probablement commencer par suggérer , puis ajouter, en tant que post-scriptum, le fait que le La commande peut être utilisée pour examiner une image ISO dans un fichier en spécifiant . … (Suite)isoinfo -i /dev/cdrom -d   ……   -i iso_image_filename 
G-Man dit «Réintègre Monica»

2
(Suite)… (2) awkest un puissant outil de traitement de texte; vous n'avez presque jamais besoin de l'utiliser en conjonction avec un autre outil de traitement de texte tel que grep. Votre pipeline,, grep "Volume id:" | awk '{print $3}'peut être simplifié en awk '/Volume id: / {print $3}'. (3) Les identifiants de volume peuvent être composés de plusieurs mots, et cette print $3approche n'affiche que le premier. Il existe des moyens de gérer cela dans awk, mais une approche plus simple consiste à diriger la sortie de isoinfovers sed -n 's/Volume id: //p'. (4) En tant que contrôle de santé mentale, il serait préférable de rechercher /^Volume id: /.
G-Man dit `` Réintègre Monica ''

Cher G-Man, merci pour vos précieux conseils. :-) Cordialement X.
xerostomus
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.