Como obtenho o UUID de uma partição e defino uma variável de Bash como sendo igual a ela?

4

Eu gostaria de definir uma variável de bash PART_ID como sendo igual ao UUID da partição /dev/sdb1 . O mais próximo que cheguei da resposta desejada é a saída de:

ls -ld /dev/disk/by-uuid/* | grep sdb1

que, para mim, dá:

lrwxrwxrwx 1 root root 10 Mar 16 17:02 /dev/disk/by-uuid/d26c3e60-0cfb-4118-9dec-1f1819439790 -> ../../sdb1

que não é um valor aceitável para eu definir PART_ID para. Em vez disso, o que PART_ID deve ser igual é d26c3e60-0cfb-4118-9dec-1f1819439790 .

    
por Brenton Horne 16.03.2016 / 15:35

2 respostas

5

Observe que o UUID do sistema de arquivos (ou outros dados estruturados com um UUID que os scripts udev conhecem) na partição, não o UUID da própria partição (nem todos os esquemas de particionamento fornecem UUIDs para particionar de qualquer maneira). Veja também Diferença entre o UUID do blkid e o mdadm? .

Algumas opções em sistemas baseados em Linux para obter o FS UUID:

fs_uuid=$(blkid -o value -s UUID /dev/sdb1)
fs_uuid=$(lsblk -no UUID /dev/sdb1)
fs_uuid=$(udevadm info -n sdb1 -q property | sed -n 's/^ID_FS_UUID=//p')
fs_uuid=$(find /dev/disk/by-uuid -lname '*/sdb1' -printf %f)

O primeiro pode exigir privilégios de superusuário ou pelo menos o direito de ler o dispositivo.

Se o sistema de arquivos estiver montado, você também pode usar:

fs_uuid=$(findmnt -fn -o UUID /dev/sdb1)
    
por 16.03.2016 / 15:54
3

Você pode fazer isso dessa maneira

PART_ID=$(blkid -o value -s UUID /dev/sdb1)

    
por 16.03.2016 / 15:39