Перечислять имена разделов linux только в bash

df на linux перечисляет следующую статистику по разделам.

-bash-4.1 # df
Файловая система 1K-блоков Используется Доступно Использовать% Установлено на
/dev/sda3            1918217320 1473337340 347440136  81% /
tmpfs                 32970328         0  32970328   0% /dev/shm
/dev/sda1               482214    148534    308781  33% /boot
/dev/sdd1            1922860884 1638599284 186585876  90% /disk5
/dev/sdc1            1922858352 1474925416 350257336  81% / диск2
/ dev / sdb1 1922858352 1028783752 796399000 57% / disk4

Если я хочу получить список имен разделов, например: "/dev/sda3 /dev/sda1 /dev/sdc1...", как мне это сделать в bash?

8 ответов

Чтобы вывести список всех разделов, определенных для устройства, от имени пользователя root:

lsblk

ИЛИ ЖЕ

fdisk -l

ИЛИ ЖЕ

cat /proc/partitions

А также, как упомянуто @Giedrius Rekasius

fdisk -l / dev / sda | grep '^ / dev' | cut -d '' -f1

df будут отображаться только смонтированные разделы. Если это то, что вы хотите, чтобы извлечь узлы устройства из df вывести вас grep для строк, начинающихся с "/dev" и cut первый столбец из оставшегося вывода:

df | grep '^/dev' | cut -d' ' -f1 

или перечислить их в одну строку, разделенную пробелами:

df | grep '^/dev' | cut -d' ' -f1 | tr '\n' ' '

Если вы хотите получить список разделов, которые не обязательно смонтированы, то от имени root вы можете запустить fdisk -l и, при необходимости, укажите устройства для сканирования разделов:

fdisk -l [device...]

Если вы не укажете какое-либо устройство, то fdisk будет использовать устройства, упомянутые в /proc/partitions если этот файл существует.

Fdisk выведет информацию в формате, аналогичном df поэтому для извлечения узлов устройства вы можете сделать то же самое, что описано для df:

fdisk -l | grep '^/dev' | cut -d' ' -f1

blkid отображает только реальные хранилища, подключенные к компьютеру с подключенным или без него.

# sudo blkid | awk '{print substr($1, 0, length($1) - 1)}'

/dev/sda1
/dev/sda2
/dev/sdb1
/dev/sdb2
/dev/sr1

Некоторые идеи...

awk '{print $1}' /proc/mounts

df | awk '{print $1}'

df | cut -f1 -d " "

Другой вариант:

df --type ext2 --type ext3 --type ext4 | tail -n +2 | awk '{ print $1 }' | tr '\n' ' '
  • --type <filesystem> позволяет указать, какие файловые системы вас интересуют
  • tail -n +2 начинает печать со второй строки вывода (чтобы строка заголовка не печаталась)
  • awk '{ print $1 }' напечатает самый левый столбец, который содержит информацию о разделе
  • tr '\n' ' ' будет переводить новые строки в пробелы, чтобы информация находилась в одной строке

Как насчет:

df | cut -d" " -f1
  [root@ct01 ~]# ls /dev/sd*[0-9]
  /dev/sda1  /dev/sda2

Эта команда выведет список всех разделов в системе в форму, которую легко перебрать:

tail -n +3 /proc/partitions | awk '{ print $4 }'
Другие вопросы по тегам