POSIXly:
while [ "$#" -gt 1 ]; do
shift
done
printf '%s\n' "$1"
(Этот подход также работает в старом Bourne shell)
С другими стандартными инструментами:
awk 'BEGIN{print ARGV[ARGC-1]}' "$@"
(Это не будет работать со старым awk
, который не имел ARGV
)
С помощью parted
используйте print free
, чтобы увидеть все свободные сегменты или промежутки в вашем разделе, как начало/конец/размер, которые вы можете использовать в своих последующих командах mkpart
.
(parted) unit mib # or s, b, whatever you prefer
(parted) print free
Model: (file)
Disk /dev/shm/foobar.img: 7629395MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
0.02MiB 1.00MiB 0.98MiB Free Space
1 1.00MiB 953674MiB 953673MiB root
953674MiB 2861023MiB 1907349MiB Free Space
3 2861023MiB 7629394MiB 4768371MiB data
7629394MiB 7629395MiB 0.52MiB Free Space
Таким образом, в этом примере имеется свободное место 953674МиБ -2861023МиБ.
Создайте раздел, и он должен быть правильно заполнен.
(parted) mkpart home 953674MiB 2861023MiB
(parted) print free
Model: (file)
Disk /dev/shm/foobar.img: 7629395MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
0.02MiB 1.00MiB 0.98MiB Free Space
1 1.00MiB 953674MiB 953673MiB root
2 953674MiB 2861023MiB 1907349MiB home
3 2861023MiB 7629394MiB 4768371MiB data
7629394MiB 7629395MiB 0.52MiB Free Space
with proper alignment taken into account?
Как уже говорилось в комментариях, выравнивание зависит от правильного конечного сектора предыдущего раздела. Лучше вручную проверить правильность выравнивания MiB.
Если раздел имеет неправильный размер, обычно (, но не всегда )можно соответственно увеличить конечный сектор предыдущего раздела с помощью команды resizepart
. Оставлять промежутки в разбиении никоим образом не вредно, так что не беспокойтесь об этом слишком сильно.