То, что ((i=1;i<=3;i=i+1))
является синтаксисом ksh93 (, теперь также поддерживается bash
и zsh
(, хотя вам нужны пробелы между for
и ((
вzsh
)).
В ksh93
и последних версияхbash
(4.3, 2014 или выше )вы можете сделать:
a1="one"
a2="two"
a3="three"
for ((i=1;i<=3;i=i+1));do
typeset -n name="a$i"
printf '%s\n' "$name"
done
В zsh
вы можете использовать синтаксис косвенной переменной:${(e)code}
(с мая 1996 г. ),${(P)name}
(с 1999 г.)
a1="one"
a2="two"
a3="three"
for ((i=1;i<=3;i=i+1));do
name=a$i
printf '%s\n' "${(P)name}"
# or
code="\$a$i"
printf '%s\n' "${(e)code}"
# or combined:
printf '%s\n' "${(e):-\$a$i}" "${(P)${:-a$i}}"
done
bash
также добавил свою собственную функцию косвенного обращения к переменной, но с использованием другого синтаксиса (в версии 2.0 в декабре 1996 года ), который означает почти противоположное тому, что используется в ksh93 :
a1="one"
a2="two"
a3="three"
for ((i=1;i<=3;i=i+1));do
name=a$i
printf '%s\n' "${!name}"
done
В любой оболочке POSIX, (включая, помимо прочего, ksh93, bash или zsh ), вы всегда можете:
a1="one"
a2="two"
a3="three"
i=1; while [ "$i" -le 3 ]; do
name=a$i
eval "value=\${$name}"
printf '%s\n' "$value"
i=$((i + 1))
done
Ваш большой раздел диска /dev/nvme0n1p3
содержит зашифрованный контейнер LUKS /dev/mapper/nvme0n1p3_crypt
.
Предположительно, это, в свою очередь, содержит группу томов с именем ubuntu-vg
, и вы можете подтвердить это с помощью pvs
. Причина этого предположения заключается в том, что вы показали нам два логических тома с именами root
и swap
, принадлежащие VG с именем ubuntu-vg
.
Странно то, что размер корневого LV составляет около 840 ГиБ, но он содержит только файловую систему размером около 98 ГБ.
Обычно нет особого смысла создавать LV, который намного больше, чем содержащаяся в нем файловая система, и я бы рекомендовал уменьшить его до 120 ГБ или около того. Это позволит вам вырастить его снова по мере необходимости или даже создать новый LV, если он вам понадобится.
Вам не нужно сжимать LV, но вот как это сделать. В общем, НЕ СЖИМАЙТЕ ЛОГИЧЕСКИЙ ТОМ, если файловая система, которую он содержит, уже не достаточно мала, чтобы соответствовать целевому размеру. Сделайте это неправильно, и вы уничтожите свою файловую систему.
Сделайте резервную копию ваших файлов, прежде чем пытаться это сделать. Одолжите диск, если нужно, но сделайте резервную копию. Действительно.
В вашем случае файловая система составляет всего 98 ГБ, поэтому мы можем безопасно уменьшить LV до 120 ГБ. (Это легко допускает неправильное преобразование между ГБ и ГиБ. )В то же время мы увеличиваем размер файловой системы, чтобы соответствовать.
lvresize --size 120G --resizefs /dev/mapper/ubuntu--vg-root
После этого вы можете постепенно увеличивать размер файловой системы, например, до 200 ГБ
lvresize --size 200G --resizefs /dev/mapper/ubuntu--vg-root
Если вы действительно не хотите изменять размер корневого контейнера LV объемом 840 ГБ, вы можете просто и безопасно изменить размер файловой системы внутри него. Это увеличивает его размер до 120 ГБ
.resize2fs /dev/mapper/ubuntu--vg-root 120GB
Опустите размер, чтобы файловая система полностью заполнила LV (все его 840 ГБ ). Я не рекомендую это, однако.