Меню для выбора linux

Конструкция Select в Bash (Создание меню)

В этом руководстве мы рассмотрим основы конструкции select в Bash.

Конструкция select позволяет вам создавать меню.

Bash select Construct

Конструкция select создает меню из списка элементов. Он имеет почти тот же синтаксис, что и цикл for :

[LIST] может быть серией строк, разделенных пробелами, диапазоном чисел, выводом команды, массивом и т. Д. Пользовательское приглашение для конструкции select может быть установлено с помощью переменной среды PS3 .

Когда вызывается конструкция select , каждый элемент из списка печатается на экране (стандартная ошибка), ему предшествует номер.

Если пользователь вводит число, соответствующее номеру одного из отображаемых элементов, то значение [ITEM] устанавливается на этот элемент. Значение выбранного элемента сохраняется в переменной REPLY . В противном случае, если пользовательский ввод пуст, подсказка и список меню отображаются снова.

Цикл select будет продолжать работать и запрашивать ввод данных пользователем, пока не будет выполнена команда break .

Чтобы продемонстрировать, как работает конструкция select , давайте взглянем на следующий простой пример:

Скрипт отобразит меню, состоящее из элементов списка с соответствующим номером и подсказкой PS3 . Когда пользователь вводит число, скрипт печатает выбранный символ и число:

Bash select Пример

Обычно select используется в сочетании с операторами case if .

Давайте посмотрим на более практичный пример. Это простой калькулятор, который предлагает пользователю ввести данные и выполняет основные арифметические операции, такие как сложение, вычитание, умножение и деление.

Когда сценарий выполняется, он отображает меню и подсказку PS3 . Пользователю предлагается выбрать операцию, а затем ввести два числа. В зависимости от ввода пользователя скрипт распечатает результат. Пользователю будет предложено выполнить новую операцию после каждого выбора, пока не будет выполнена команда break .

Недостатком этого сценария является то, что он может работать только с целыми числами.

Вот немного более продвинутая версия. Мы используем инструмент bc , который поддерживает числа с плавающей запятой для выполнения математических вычислений. Кроме того, повторяющийся код сгруппирован внутри функции .

Выводы

Конструкция select позволяет легко создавать меню. Это особенно полезно при написании сценариев оболочки, требующих ввода данных пользователем.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

Как изменить порядок загрузки операционных систем (Linux, Windows) в GRUB

Всем привет! Сегодня я расскажу о простом способе изменения порядка загрузки операционных систем (Linux, Windows) в загрузчике GRUB, который не требует правки различных конфигурационных файлов, все будет выполняться в удобном графическом интерфейсе.

Данная процедура будет Вам полезна, если у Вас на компьютере установлено несколько операционных систем Linux и Windows, например, Linux Ubuntu и Windows 10. О том, как установить себе на компьютер Linux Ubuntu второй системой рядом с Windows 10 с учётом особенностей UEFI, я подробно рассказывал в отдельной статье – Установка Linux Ubuntu рядом с Windows 10 на компьютере с UEFI.

Читайте также:  Grub4dos при установке windows

Но в такой конфигурации по умолчанию будет загружаться Linux Ubuntu, однако многим хочется изменить данный порядок, например, чтобы по умолчанию загружалась Windows 10 или любая другая система, иными словами, отсортировать порядок так, как им хочется. Как я уже об этом говорил ранее, это можно сделать, и сейчас я подробно расскажу о том, как это делается, т.е. как изменить порядок загрузки операционных систем в загрузчике GRUB.

Введение

Итак, на текущий момент у Вас при включении компьютера появляется меню загрузчика GRUB, в котором первым пунктом идет операционная система Linux Ubuntu (или другой дистрибутив Linux, в моем случае именно Ubuntu). Выглядит это меню следующим образом.

  • Ubuntu – это как раз операционная система Linux Ubuntu;
  • Windows Boot Manager (на /dev/sda2) – это Windows 10.

Если ничего не выбрать, то через несколько секунд, по умолчанию, будет загружаться Ubuntu.

У нас стоит задача изменить порядок загрузки операционных систем таким образом, чтобы первым пунктом стояла Windows 10 и, соответственно, загружалась также первой. Дополнительно, для удобства и ясности, мы хотим присвоить пункту Windows Boot Manager более удачное имя, например – Windows 10.

Все этом можно реализовать с помощью одной программы – Grub Customizer, которую можно использовать в Linux Ubuntu.

Таким образом, сейчас я покажу, как установить Grub Customizer в Linux Ubuntu, и изменить порядок загрузки операционных систем в загрузчике Grub, используя эту программу.

На заметку! Начинающим пользователям Linux рекомендую почитать мою книгу « Linux для обычных пользователей » – в ней я максимально подробно рассказываю про Linux и о том, как пользоваться этой операционной системой без командной строки

Обзор программы Grub Customizer

Grub Customizer – это программа с графическим интерфейсом для редактирования настроек загрузчика GRUB.

Основные возможности Grub Customizer:

  • Добавление и удаление операционных систем в меню GRUB, которое появляется во время загрузки компьютера;
  • Изменение порядка загрузки ОС;
  • Изменение времени ожидания перед загрузкой;
  • Изменение оформления загрузчика GRUB (шрифт, цвет шрифта, фон и так далее).

Установка Grub Customizer в Ubuntu

Установить Grub Customizer в Ubuntu не составит труда, в Ubuntu 19.04 это можно сделать с помощью менеджера приложений (в предыдущих версиях Ubuntu возможно потребуется устанавливать PPA репозиторий).

Шаг 1 – Запускаем менеджер приложений

Сначала запускаем менеджер приложений, и для того чтобы найти нужный пакет в поиск, вводим grub сustomizer.

Шаг 2 – Запускаем установку Grub Customizer

Затем щелкаем по найденному пункту. После того как откроется окно с описанием программы, нажимаем «Установить».

Далее потребуется ввести пароль, так как процесс установки программ в Ubuntu требует дополнительных привилегий.

Шаг 3 – Запускаем программу Grub Customizer

Когда появится кнопка «Запустить», установка будет завершена. Мы можем нажать на данную кнопку, чтобы сразу запустить Grub Customizer. Также программу можно запустить и из меню приложений.

Для запуска программы снова потребуется ввести пароль, так как изменение порядка загрузки операционных систем в GRUB также требует дополнительных прав.

Читайте также:  Как продолжить обновление windows

После запуска программы у Вас отобразится интерфейс Grub Customizer.

Изменение порядка загрузки операционных систем

Для того чтобы изменить порядок загрузки ОС, выберите нужный пункт, и нажмите кнопку перемещения вверх или вниз на панели инструментов, в зависимости от выбранного пункта.

Я для примера выберу Windows Boot Manager, и перемещу его в самый верх.

Переименование пунктов загрузочного меню

Теперь давайте переименуем пункт Windows Boot Manager в Windows 10. Для этого достаточно щёлкнуть двойным кликом по пункту и ввести новое имя.

Сохранение настроек, загрузка и проверка порядка ОС

После ввода всех настроек необходимо нажать кнопку «Сохранить», для того чтобы все введенные параметры сохранились.

В случае необходимости Вы можете перейти на дополнительные вкладки: «Основные настройки» и «Настройки оформления». Например, для того чтобы изменить шрифт меню загрузчика или цвет шрифта.

После ввода и сохранения всех настроек выключаем компьютер, и включаем его заново и смотрим, изменилось ли меню загрузчика.

В моем случае все настройки были применены и теперь по умолчанию у меня загружается Windows 10.

Видео-инструкция

У меня все, надеюсь, материал был Вам полезен, пока!

Источник

Локализация своих скриптов на BASH

Создание меню на BASH — задача сама по себе не сложная: «case тебе в руки и echo в спину». Решая её в очередной раз, мне захотелось добавить возможность отображать текст на других языках. Осталось решить, как сделать сам процесс локализации меню более удобным. Если оно большое, то решение «в лоб» превратит его в громоздкую копипасту. Здесь я хотел бы поделиться тем, как решил эту проблему для себя. Надеюсь, для кого то это будет небезынтересным.

Чтобы статья не вылилась в скучную простыню с излишком кода, решил разбить её на две части. В первой рассмотрим создание и добавление дополнительных языков. Во второй — создание многоуровнего меню и сохранение настроек

Я вполне понимаю и принимаю, что существуют и другие языки программирования. Как когда-то кто-то сказал здесь на Хабре — если при написании скрипта на BASH возникает необходимость хоть в одной функции, то лучше взять нормальный язык. Я с этим согласен, но иногда, как говорится, хочется, потому что хочется.

Мне не хотелось бы разбивать скрипт на несколько частей и хранить локализацию в отдельных файлах. Скрипт тем и удобен, что его проще использовать одним файлом. Поэтому тексты будем хранить в массивах.

Реализация будет состоять из:

  • буквенного кода языка
  • массива слов
  • преобразователя косвенных ссылок для обращения к массиву
  • обращения к элементам массива
  • создания меню

Теперь рассмотрим подробнее

Зададим язык, добавив короткий буквенный код языка (ru, en), для начала английский:

Добавим массивы слов и предложений (по количеству языков):

Создадим косвенную ссылку и сформируем из неё новый массив в переменной lng:

То есть здесь для переменной lng создаётся значение, состоящее из части имени массива со словами и кода заданного языка из переменной langset. Далее создаётся массив, который при langset=en будет равен language_en, а при langset=ru будет равен language_ru.
Если языков будет много, то такой подход позволит избавиться от многочисленных if-elif или case. Чтобы изменить язык, достаточно будет добавить массив с переводом и установить язык в переменной langset.

Запустим всё это в консоли:

Читайте также:  Видеоредактор для mac os big sur

Таким образом, указывая в начале скрипта двухбуквенный код языка, можно задавать вывод одних и тех же слов или фраз на разных языках.

Построение меню

А теперь попробуем создать скрипт.
Для примера я взял меню управления командами Git через CLI (command line interface). Это немного надуманно, но хорошо подходит для примера, так как в Git много команд и как раз можно построить единое по своей задаче меню с множеством параметров.

Для начала задаем язык и массив с пунктами меню как это уже делали выше. Ради удобства, я разделил массив на две части: первая — это непосредственно меню, вторая — информационные сообщения и приглашения командной строки, которые необходимо будет вывести по ходу работы.

Пройдемся по массивам и создадим новые для lng и msg, которые и будут использоваться:

Чтобы при необходимости иметь возможность применять языковые настройки (это пригодится в следующей статье), заключим всё в функцию и тут же вызовем её.

Небольшое отступление: я уверен, почти всем встречались наполовину переведённые приложения. Особенно этим грешат кастомные прошивки для телефонов. Мне никогда это не нравилось, но в данном случае я всё же решил предусмотреть такую возможность неполного перевода. Это позволит при добавлении нового языка не дублировать все элементы массива, а добавить только те, которые пользователю хотелось бы перевести.

Для этого в цикле сравним созданный массив с англоязычным (английский считаем языком по умолчанию): если записи не существует (либо элемент массива пуст), дополним англоязычным вариантом.

Теперь, когда с языками разобрались, приступим к построению меню. Тут всё стандартно: бесконечный цикл, внутри него цикл для вывода элементов на экран и выбор вариантов через case.

Формируем массив для вывода на экран. Только те пункты, которые нам нужны:

Здесь делаем индексацию с 1, чтобы выводить индекс как соответствующий пункт меню.

Добавляем шапку, пробегаемся по индексам через $ и выводим на экран:

Далее предложим пользователю выбрать необходимый пункт. Будем ожидать нажатие цифровой клавиши через read -s -n1 -p. Где -s — не отображать введённые данные (чаще используется для ввода паролей). Мы же потом сами отобразим введеный текст в более удобном формате. -p — строка приглашения для вывода подсказки. -n1 — параметр, считывающий число симмволов ввода. Здесь мы заранее знаем, что пунктов меню будет не более 9 (то есть числа из одной цифры), поэтому при нажатии одного любого символа программа продолжит работу дальше. Не надо будет нажимать Enter для ввода. Немного непривычно, поэтому можно убрать.

Ну и заключительный оператор выбора case с обработкой введенного значения:

Здесь case сделан упрощенным, только для примера. В следующей статье я буду использовать его в более универсальном варианте.

Это первая статья из двух. В следующей рассмотрим создание многоуровнего меню, разукрасим вывод (как же без этого), а также попробуем сохранить настройки, то есть задать код языка прямо из меню, не открывая Shell-скрипт в текстовом редакторе.

Спасибо, что дочитали до конца. Надеюсь, было не скучно.

Источник

Оцените статью