df в Linux выводит следующую статистику по разделам.
-bash-4.1# df Filesystem 1K-blocks Used Available Use% Mounted on /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% /disk2 /dev/sdb1 1922858352 1028783752 796399000 57% /disk4
Если я хочу получить список имен разделов, например: «/ dev / sda3 / dev / sda1 / dev / sdc1 ...», как мне это сделать в bash?
Чтобы вывести список всех разделов, определенных для устройства как root:
lsblk
ИЛИ
fdisk -l
ИЛИ
cat / proc / разделы
А также, как упоминал @Giedrius Rekasius
fdisk -l / dev / sda | grep '^ / dev' | вырезать -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
Некоторые идеи...
awk '{print $1}' /proc/mounts
df | awk '{print $1}'
df | cut -f1 -d " "
blkid
отображает только реальные хранилища, подключенные к компьютеру, с подключением или без него.
# sudo blkid | awk '{print substr($1, 0, length($1) - 1)}'
/dev/sda1
/dev/sda2
/dev/sdb1
/dev/sdb2
/dev/sr1
Что о :
df | cut -d" " -f1
Другой вариант:
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' ' '
переводит символы новой строки в пробелы, так что вся информация находится в одной строке [root@ct01 ~]# ls /dev/sd*[0-9]
/dev/sda1 /dev/sda2
Эта команда выведет список всех разделов в системе в форме, которую легко повторить:
tail -n +3 /proc/partitions | awk '{ print $4 }'