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/sda1e /dev/mmcblk0p1são específicos para Linux de qualquer maneira. lsblké relativamente recente.
lsblktambé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 $devnamepassou em todos os meus testes! Talvez você deva adicionar uma resposta.
/dev/sd0cnesse caso. As respostas abaixo funcionam para você?
/dev/sd0a, mas não há nenhum/dev/sd0dispositivo (há uma/dev/sd0c...)