попробуй
fdisk -l | awk '/Linux/ { s=$(NF-4) ;} END { print s}'
где
/Linux/
выберет строку Linux { s=$(NF-4) ;}
установить 4-е поле из последнего (вы также можете использовать $4
в этом случае. END
в конце (больше не вводить){ print s}
распечатайте его. Редактировать:
ваш код grep..| cut.. | awk^n
можно сократить до
awk '/Linux/ { s=$4/(1024^2) ;} END { printf "%d Gb\n",s}'
обычно имеет размер 512 байт, вам может понадобиться добавить еще один раздел/2
(на 2 ), чтобы получить Гб.
Если вы хотите получить размер диска, вы можете взять значение:
cat /sys/block/sda/size
Чтобы определить основной раздел, я бы сказал, что вы можете сделать что-то вроде этого:
df | grep -E "\/$" | cut -d' ' -f1 | sed 's/[0-9]*//g'
Это даст вам имя смонтированного диска /
в моем случае /dev/sda
.
После того, как вы хотите, чтобы скрипт это.
Старый ответ
В этом случае я бы просто использовал/sys
:
cat /sys/block/sda/subsystem/sda3/size
, который дает количество секторов, и я бы использовал:
cat /sys/block/sda/subsystem/sda3/start
, чтобы получить номер начального сектора.
Это было бы намного проще, чем синтаксический анализ fdisk
, который не всегда одинаков. Было бы легко получить эти значения с помощью простого шаблона:
cat /sys/block/sda/subsystem/sda*/size
Вместо передачи блочного устройства в df вы также можете передать точку монтирования. на самом деле это поведение по умолчанию
# df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 8191416 6002396 2088840 75% /
источник :справочная страница df:
df displays the amount of disk space available on the file system containing each file name argument.