Eu tive um script na semana passada que esperava que meu usb fosse sdc, eu estava usando este comando
usb_path=`lsblk | grep sdc1 | awk '{print $7}'`
mas aí voltei e vi que o stick estava vazio, porque o stick se chamava sdb. Então, o que isso depende do nome que o bastão recebe? Eu não tinha nenhum outro disco conectado quando ele obteve o sdc e nenhum outro disco está conectado agora que é sdb. Então a única diferença que pude ver foi o tempo, mas isso parece estúpido. Ah, e é o mesmo pendrive da semana passada.
Responder1
A letra b
/ c
in sdb
/ sdc
é um contador.
O primeiro disco detectado obtém sda
, o segundo sdb
e assim por diante.
As letras podem ser ignoradas se, por exemplo, você obtiver uma conexão temporária perdida ao conectar seu pendrive. A princípio o pendrive fica sdb
, depois a conexão é interrompida e é restabelecida e fica sdc
, pois sdb
ainda não foi liberado.
Como você não pode contar com o mesmo dispositivo recebendo sempre o mesmo nome, o Ubuntu possui um diretório com links simbólicos para discos que estão vinculados a um ID do sistema de arquivos no disco:
/dev/disk/by-uuid/
Cada partição em cada disco conectado obtém uma entrada neste diretório e sempre permanece a mesma para a mesma partição.
Se você preferir acessar um pendrive USB conectado a uma porta USB específica em vez de usar a identidade do pendrive, você pode usar as entradas em /dev/disk/by-path
.
lsblk
aceita um argumento se você quiser informações sobre um dispositivo específico. Então, em vez de usar, lsblk | grep …
você pode usar, por exemplo lsblk /dev/disk/by-id/1234-5678
, oulsblk /dev/disk/by-path/pci-0000:00:2.0-usb-0:1:1.0-scsi-0:0:0:0