Questo è altamente dipendente dalla piattaforma. Anche metodi diversi possono trattare i casi limite in modo diverso (dischi "falsi" di vario tipo, volumi RAID, ...).
Nelle moderne installazioni di udev, ci sono collegamenti simbolici ai supporti di archiviazione nelle sottodirectory di /dev/disk , che ti permettono di cercare un disco o una partizione per numero di serie (/dev/disk/by-id/ ), per UUID (/dev/disk/by-uuid ), per etichetta del filesystem (/dev/disk/by-label/ ) o tramite connettività hardware (/dev/disk/by-path/ ).
Sotto Linux 2.6, ogni disco e dispositivo simile a un disco ha una voce in /sys/block . Sotto Linux dall'alba dei tempi, i dischi e le partizioni sono elencati in /proc/partitions . In alternativa, puoi usare lshw:lshw -class disk .
Linux fornisce anche lsblk utility che mostra una bella vista ad albero dei volumi di archiviazione (a partire da util-linux 2.19, non presente su dispositivi embedded con BusyBox).
Se hai un fdisk o disklabel utility, potrebbe essere in grado di dirti su quali dispositivi è in grado di funzionare.
Troverai nomi di utility per molte varianti unix su Rosetta Stone per Unix, in particolare le righe "list hardware configuration" e "read a disk label".
lsblk elencherà tutti i dispositivi a blocchi. Si presta bene allo scripting:
$ lsblk -io KNAME,TYPE,SIZE,MODEL
KNAME TYPE SIZE MODEL
sda disk 149.1G TOSHIBA MK1637GS
sda1 part 23.3G
sda2 part 28G
sda3 part 93.6G
sda4 part 4.3G
sr0 rom 1024M CD/DVDW TS-L632M
lsblk è presente nel pacchetto util-linux ed è quindi molto più universale delle alternative proposte.
Che ne dici di
lshw -class disk