Leia o título de um DVD?


8

Percebi que cada imagem de DVD tem um nome em maiúscula semi-exclusivo. Existe uma maneira padronizada para eu simplesmente ler esse nome como um usuário não root no Linux? Estou em um derivado do Ubuntu 12.04 executando o kernel 3.7. Gostaria simplesmente de obter o nome de qualquer disco atualmente na unidade da seguinte forma:

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

1
É uma prática recomendada usar todos os nomes de variáveis ​​em maiúsculas para variáveis ​​que não são de ambiente.
Jordanm

5
Obrigado, mas isso não responde à minha pergunta :) A má prática é discutível.
Naftuli Kay

2
Por isso foi um comentário e não uma resposta.
Jordanm

Respostas:


11

Você pode usar blkidpara isso:

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

(você precisa ter permissão de leitura /dev/dvdpara isso).

Ou:

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

para o qual você não precisa de nenhum privilégio especial ( udev(executando como root) consulta o nome do rótulo usando blkide atualiza um banco de dados do dispositivo com o qual você consulta udevadm).


Preciso ser raiz para fazer isso?
Naftuli Kay

1

Não tenho certeza se isso ajudaria você:

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

Minha desajeitada solução original:

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

2
(1) O título da pergunta é "Leia o título de um DVD?" e a última frase da pergunta diz: "Gostaria simplesmente de obter o nome de qualquer disco atualmente na unidade ...", portanto, você provavelmente deve começar sugerindo e, em seguida, adicionar, como um postscript, o fato de que o O comando pode ser usado para examinar uma imagem ISO em um arquivo, especificando . … (Continua)isoinfo -i /dev/cdrom -d   ……   -i iso_image_filename 
G-Man diz 'Restabelecer Monica' em

2
(Continua)… (2) awké uma poderosa ferramenta de processamento de texto; você quase nunca precisa usá-lo em conjunto com outra ferramenta de processamento de texto , como grep. Seu pipeline,, grep "Volume id:" | awk '{print $3}'pode ser simplificado para awk '/Volume id: / {print $3}'. (3) Os IDs de volume podem ter várias palavras, e essa print $3abordagem exibe apenas a primeira. Existem maneiras de lidar com isso awk, mas uma abordagem mais fácil é canalizar a saída para isoinfodentro sed -n 's/Volume id: //p'. (4) Como uma verificação de sanidade, seria melhor procurar /^Volume id: /.
G-Man diz 'Reinstate Monica'

Caro G-Man, obrigado por dicas valiosas. :-) Atenciosamente X.
xerostomus
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.