Estou procurando uma maneira portátil de obter o nome do dispositivo do bloco pai (por exemplo /dev/sda
), dado o nome do dispositivo da partição (por exemplo /dev/sda1
). Eu sei que poderia simplesmente largar o último caractere, mas isso não funcionaria em alguns casos:
- Os leitores de cartão MMC normalmente têm nomes como
/dev/mmcblk0
, enquanto suas partições têm nomes como/dev/mmcblk0p1
(observe o extrap
). - opcional: alguns dispositivos de bloco não possuem nenhuma tabela de partição e são formatados como uma única partição. Nesse caso, o dispositivo de partição e o dispositivo de bloco pai são os mesmos.
Os volumes LVM são uma chaleira totalmente diferente de peixe. Não preciso apoiá-los agora, mas se levá-los em consideração exigir pouco esforço extra, não me importaria.
/dev/sda1
e /dev/mmcblk0p1
são específicos para Linux de qualquer maneira. lsblk
é relativamente recente.
lsblk
também usa os números de nó do dispositivo para encontrar o número correto, em vez de apenas usar o nome. parece que a solução mais simples para Linux e util-linux provavelmente sempre estará disponível.
lsblk -dpno pkname $devname
passou em todos os meus testes! Talvez você deva adicionar uma resposta.
/dev/sd0c
nesse caso. As respostas abaixo funcionam para você?
/dev/sd0a
, mas não há nenhum/dev/sd0
dispositivo (há uma/dev/sd0c
...)