Как получить список всех имен несъемных дисковых устройств (только SSD / HDD и SATA / IDE)?

Мне нужен список всех имен устройств (не USB или CD-ROM) в следующей форме: DRIVES = 'sda sdb', чтобы я мог их пропустить в сценарии bash.

Идеальное решение не нужно было устанавливать специальную утилиту и использовать / sys | / proc | / dev из файловой системы.

1
задан 16 July 2015 в 01:44

2 ответа

Это работает для меня:

echo DRIVES=\'`cd /dev; ls sd?; cd`\'

Он просто переходит в каталог / dev и выводит все с помощью sd и еще одного символа. После этого он возвращается домой.

1
ответ дан 24 May 2018 в 03:23
  • 1
    Конечно, если вы хотите установить переменную вместо возврата строки, содержащей «DRIVES =», вы можете просто использовать DRIVES=`cd /dev; ls sd?; cd`. – Joshua Gleitze 26 September 2014 в 12:32
  • 2
    он также будет включать USB-накопители ... (например, смонтированные как sdb) – Sylvain Pineau 26 September 2014 в 12:35
  • 3
    Это правильно @JoshuaGleitze, я пробовал очевидное, но он включает в себя USB-накопители – eskhool 27 September 2014 в 14:18

Используйте lsblk:

$ lsblk -o NAME -nl
sda
sda1
sda2
sda4
sda5
sda6
sdb
sdb1
sdb2
sdb5
sdb6
sr0

Это будет включать все, что стоит включать. Вы можете использовать параметр -I вместе с lsblk для фильтрации.

0
ответ дан 24 May 2018 в 03:23
  • 1
    он также будет включать в себя USB-накопители и Cdrom ... (например, смонтированные как sdb / sr0) – Sylvain Pineau 26 September 2014 в 13:03
  • 2
    @SylvainPineau Я знаю. sdb здесь - USB-накопитель, а sr0 - это компакт-диск. Я бы предположил, что типы устройств можно фильтровать. – muru 26 September 2014 в 13:06
  • 3
    Я думаю, вы можете безопасно использовать /sys/block/*/device/block/*/removable – Sylvain Pineau 26 September 2014 в 13:07
  • 4
    @SylvainPineau Нехорошо. Только sr0 был съемным. – muru 26 September 2014 в 13:15

Другие вопросы по тегам:

Похожие вопросы: