从DVD中读取标题?


8

我注意到每个DVD映像都有一个半唯一的大写名称。我是否有一种标准化的方法可以简单地以Linux的非root用户身份读取此名称?我在运行内核3.7的Ubuntu 12.04衍生产品上。我想简单地获取驱动器中当前的任何磁盘的名称,如下所示:

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

1
将所有大写变量名称都用于非环境变量是一种不好的做法。
jordanm

5
谢谢,但这不能回答我的问题:)不良做法值得商bat。
Naftuli Kay

2
这就是为什么它是评论而不是答案。
jordanm

Answers:


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)。


我需要扎根吗?
Naftuli Kay

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

2
(1)问题标题是“要从DVD读取标题吗?” 问题的最后一句话说:“我只想获取驱动器中当前任何磁盘的名称...”,因此您可能应该首先建议,然后添加以下事实作为后记:通过指定,命令可用于检查文件中的ISO映像。…(续)isoinfo -i /dev/cdrom -d   ……   -i iso_image_filename 
G-Man说'Reinstate Monica'

2
(续)…(2)awk是功能强大的文本处理工具;您几乎不需要将它与其他文本处理工具(例如)结合使用grep。您的管道grep "Volume id:" | awk '{print $3}'可以简化为awk '/Volume id: / {print $3}'。(3)卷ID可以是多个单词,这种print $3方法仅显示第一个。有多种方法可以处理此问题awk,但更简单的方法是将输出通过管道传递isoinfosed -n 's/Volume id: //p'。(4)作为健全性检查,最好搜索/^Volume id: /
G-Man说'Reinstate Monica'

亲爱的G-Man,谢谢您的宝贵提示。:-)真诚的X.
xerostomus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.