#!/usr/bin/env bash ENABLED=yes [ "$ENABLED" != "yes" ] && exit 0 SELF_NAME="grub-functions" PATH_GRUB="/memory/data/from/0/boot/grub/" exec_get_all_menuentry(){ ## Показать все варианты загрузки из grub_*.cfg grub_*_addon.cfg grub_*_boothdd.cfg FILE_OSRELEASE="/etc/os-release" NAME_DISTRIB=$(sed -En "/VARIANT=/{s/VARIANT=\"(.*)\"/\1/p}" ${FILE_OSRELEASE}) VER_DISTRIB=$(sed -En "/VERSION_ID=/{s/VERSION_ID=(.*)/\1/p}" ${FILE_OSRELEASE}) FILE_GRUB_MAIN="${PATH_GRUB}/ublinux/grub_${LANG%_*}.cfg" sed -En "/menuentry/{ /(ISO|Install|Установка)/!{ s/^[ \t]*// s/\\$\{NAME_DISTRIB\}/${NAME_DISTRIB}/ s/\\$\{VER_DISTRIB\}/${VER_DISTRIB}/ s/menuentry \"(.*${NAME_DISTRIB}.*${VER_DISTRIB}.*)\" .*/\1/p } }" ${FILE_GRUB_MAIN} FILE_GRUB_ADDON="${PATH_GRUB}/ublinux/grub_${LANG%_*}_addon.cfg" NAME_MENU_GRUB_ADDON=$(sed -En "/${FILE_GRUB_ADDON##*/}/{x;{s/menuentry \"(.*)\" .*/\1/p};d;}; x" ${FILE_GRUB_MAIN}) sed -En "/menuentry/{ /(ISO|Install|Установка)/!{ s/^[ \t]*/${NAME_MENU_GRUB_ADDON}>/ s/\\$\{NAME_DISTRIB\}/${NAME_DISTRIB}/ s/\\$\{VER_DISTRIB\}/${VER_DISTRIB}/ s/menuentry \"(.*${NAME_DISTRIB}.*${VER_DISTRIB}.*)\" .*/\1/p } }" ${FILE_GRUB_ADDON} FILE_GRUB_BOOTHDD="${PATH_GRUB}/ublinux/grub_${LANG%_*}_boothdd.cfg" NAME_MENU_GRUB_BOOTHDD=$(sed -En "/${FILE_GRUB_BOOTHDD##*/}/{x;{s/menuentry \"(.*)\" .*/\1/p};d;}; x" ${FILE_GRUB_MAIN}) sed -En "/menuentry/{ /(Back|Возврат)/!{ s/^[ \t]*/${NAME_MENU_GRUB_BOOTHDD}>/ s/\\$\{VER_DISTRIB\}/${VER_DISTRIB}/ s/menuentry \"(.*)\" .*/\1/p } }" ${FILE_GRUB_BOOTHDD} } exec_get_last_menuentry(){ ## Показать последний выбранный вариант загрузки FILE_GRUBENV="${PATH_GRUB}/grubenv" sed -En "/saved_entry=/{s/saved_entry=(.*)/\1/p}" ${FILE_GRUBENV} } ################ ##### MAIN ##### ################ # Возможность подключить как source из любого скрипта и вызов встроенных функций if [[ ${0##*/} == ${SELF_NAME} ]]; then while [[ $# -gt 0 ]]; do declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" && shift || { FUNCTION+=" ${1}" && shift; } done eval ${FUNCTION#*; } else true fi