У меня нет под рукой команды lshw
, поэтому я сфальсифицировал ее следующим образом:
size: 4200KiB (4200KB)
size: 420MiB (420MB)
size: 42GiB (42GB)
size: 4TiB (4TB)
size: 2PiB (2PB)
(Я нашел пример в Интернете и просто скопировал строки «размер :» и составил несколько размеров ).
Я использовал awk здесь, потому что, как только вы обнаружите, что grep
пинг и cut
тинг и sed
инг, зачастую проще объединить всю эту логику в awk
.
Приведенный ниже awk-скрипт устанавливает разделители полей(FS
)так, чтобы они открывали -и закрывали -круглые скобки, чтобы было более естественным извлекать желаемое значение. Он также (избыточно )инициализирует промежуточный общий размер (в Гб )нулем.
Каждый раз, когда awk видит строку ввода, соответствующую (простому )регулярному выражению, size:
он начинает реальную работу внутри фигурных скобок. Значение внутри круглых скобок заканчивается в поле #2, поэтому мы просим awk сопоставить цифры в этом поле. Мы ожидаем, что они начнутся с позиции 1 для некоторого количества символов. Затем значение извлекается на основе этой длины, а суффикс представляет собой оставшуюся часть строки.
Затем мы просматриваем список возможных суффиксов (расширяем по мере необходимости )и умножаем текущий размер на соответствующий коэффициент (, упомянутый Стефаном в комментарии к -удаленному ответу. на 1000 -базовых единиц ).
После того, как все входные данные будут израсходованы, awk выводит общий размер в ГБ.
Сохраните скрипт в файл и запустите его, как
lshw -class disk -class storage | awk -f /path/to/script
Скрипт:
BEGIN {
FS="[()]"
sizegb=0
}
/size: / {
match($2, "[0-9]+")
value=substr($2, RSTART, RLENGTH)
suffix=substr($2, RLENGTH+1)
if (suffix == "KB")
sizegb += value / (1000*1000)
else if (suffix == "MB")
sizegb += value / 1000
else if (suffix == "GB")
sizegb += value
else if (suffix == "TB")
sizegb += value * 1000
else if (suffix == "PB")
sizegb += value * 1000 * 1000
}
END {
printf "Total size: %.2f GB\n", sizegb
}
Вам нужен пакет dhcpcd. Это часть среды установки, и я предполагаю, что она работала, когда вы устанавливали. Чтобы установить dhcpcd в вашей системе, выполните следующие действия
sudo pacman -Syu
sudo pacman -S dhcpcd
Кроме того, на вики-сайте Arch есть статья, в которой описывается, как установить пакет в tar-шар, здесьhttps://wiki.archlinux.org/index.php/offline_installation_of_packages
Удачи