Прочитать название с DVD?

8

Я заметил, что у каждого образа DVD есть полууникальное заглавное имя. Есть ли для меня стандартизированный способ просто читать это имя как пользователь без полномочий root в Linux? Я работаю на Ubuntu 12.04 с производным ядром 3.7. Я хотел бы просто получить имя любого диска, находящегося в данный момент в приводе, например:

DVD_NAME="$( ./read-dvd-name.sh )"
Нафтули Кей
источник
1
Это плохая практика - использовать все имена переменных в верхнем регистре для переменных, не относящихся к среде.
Иордания
5
Спасибо, но это не отвечает на мой вопрос :) Плохая практика спорна.
Нафтули Кей
2
Вот почему это был комментарий, а не ответ.
Иордания

Ответы:

11

Вы можете использовать blkidдля этого:

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

(для этого вам нужно иметь разрешение на чтение /dev/dvd).

Или:

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

для которого вам не нужны никакие специальные привилегии ( udev(с правами root) запрашивает имя метки, используя blkidи обновляет базу данных устройства, с которой вы запрашиваете udevadm).

Стефан Шазелас
источник
Нужно ли для этого быть пользователем root?
Нафтули Кей
1

Я не уверен, поможет ли это вам:

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

Мое неуклюжее оригинальное решение:

dvdtitle=$(isoinfo  -i isofile.iso -d | grep "Volume id:" | awk '{print $3}')
xerostomus
источник
2
(1) Заголовок вопроса: «Читать заголовок с DVD?» и последнее предложение в вопросе гласит: «Я хотел бы просто получить имя любого диска, находящегося в данный момент в дисководе…», поэтому вам, вероятно, следует начать с предложения , а затем добавить в качестве постскриптума тот факт, что Команда может быть использована для проверки ISO-образа в файле, указав . … (Продолжение)isoinfo -i /dev/cdrom -d   ……   -i iso_image_filename 
G-Man говорит: «Восстановите Монику»
2
(Продолжение)… (2) awk- мощный инструмент для обработки текста; вам вряд ли когда-нибудь понадобится использовать его в сочетании с другим инструментом для обработки текста, таким как grep. Ваш конвейер grep "Volume id:" | awk '{print $3}'может быть упрощен до awk '/Volume id: / {print $3}'. (3) Идентификаторы тома могут состоять из нескольких слов, и этот print $3подход отображает только первое. Есть способы справиться с этим в awk, но более простой подход состоит в том, чтобы передать вывод isoinfoв sed -n 's/Volume id: //p'. (4) В качестве проверки работоспособности было бы лучше искать /^Volume id: /.
G-Man говорит: «Восстановите Монику»
Дорогой G-Man, спасибо за ценные советы. :-) С уважением X.
xerostomus