Как вернуть экран GRUB

Оболочка bash(и ряд других оболочек )имеют нестандартный -оператор проверки -nt. Этот оператор проверяет, является ли время модификации одного файла более новым, чем время модификации другого.

В bash,оператор -ntимеет временное разрешение в одну секунду. В ksh93можно использовать тот же оператор с разрешением менее -секунды. Приведенный ниже код совместим с ksh93, за исключением того, что shopt -s globstarнеобходимо изменить на set -o globstar, где используется этот параметр.


Использование оператора проверки -ntдля файлов, соответствующих *.txtв текущем каталоге, для поиска самого нового обычного файла:

unset newest
for filename in./*.txt; do
    if [ -f "$filename" ] && [ "$filename" -nt "$newest" ]; then
        newest=$filename
    fi
done

или, немного короче,

unset newest
for filename in./*.txt; do
    [ -f "$filename" ] && [ "$filename" -nt "$newest" ] && newest=$filename
done

В конце цикла значение "$newest"будет именем последнего модифицированного обычного файла в текущем каталоге, который имеет суффикс имени файла .txt, при условии, что такие файлы вообще существовали (иначе переменная newestбыла бы не установлена ​​).

Оболочке dash, если она используется, потребуется отдельная проверка существования файла $newest, так как ее оператор -ntимеет несколько иную семантику, чем bashи ksh93:

.
unset newest
for filename in./*.txt; do
    if [ -f "$filename" ]; then
        if [ ! -f "$newest" ] || [ "$filename" -nt "$newest" ]; then
            newest=$filename
        fi
    fi
done

Чтобы сделать это рекурсивно с помощью bash, установите параметр оболочки globstarи используйте **для подстановки имен файлов:

shopt -s globstar
unset newest
for pathname in./**/*.txt; do
    if [ -f "$pathname" ] && [ "$pathname" -nt "$newest" ]; then
        newest=$pathname
    fi
done

Шаблон **соответствует точно так же, как *, но допускает сопоставление через /в путях.

Оболочка dashне поддерживает это.


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

shopt -s globstar
unset newest
for pathname in./**/*.txt; do
    if [ -f "$pathname" ]; then
        for (( i=0; i < 5; ++i )); do
            if [ "$pathname" -nt "${newest[$i]}" ]; then
                newest=( "${newest[@]:0:i}" "$pathname" "${newest[@]:i:4}" )
                break
            fi
        done
    fi
done

Единственная дополнительная вещь здесь состоит в том, что newestтеперь является массивом bash, и что мы, для каждого пути, который мы рассматриваем, должны просмотреть пять последних найденных «самых новых файлов», чтобы увидеть, где в массив, в который может поместиться этот новый файл.

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

После завершения цикла массив newestбудет содержать пути пяти последних измененных обычных файлов, имеющих суффикс .txtимен файлов.Массив будет отсортирован по времени модификации с последним измененным файлом как ${newest[0]}.

0
05.08.2020, 22:48
1 ответ

Похоже, что Windows перезаписала что-то в вашем разделе EFI, или просто NVRAM (параметры загрузки и порядок загрузки)-могут быть как-то связаны с недавней уязвимостью безопасной загрузки .

Первое, что нужно сделать, это перейти к экрану ручного выбора загрузки UEFI/BIOS для вашего ноутбука/рабочего стола. Обычно это одна из функциональных клавиш (F12, F11, F2 распространены, но между производителями нет единого стандарта ). Проверьте руководство или онлайн-документацию для вашего оборудования.

  1. Во время загрузки компьютера несколько раз нажмите клавишу «Меню загрузки». Если вы видите загрузчик, заставку или запуск ОС,значит вы слишком долго ждали или нажали не ту клавишу -попробуйте еще раз!
  2. Если вам повезет, в меню загрузки UEFI/BIOS вы увидите вариант загрузки Mint, Grub или что-то, что вы можете распознать как связанное с вашей установкой Mint (, если вы этого не сделаете, перейдите к " Ремонт загрузки" ).
  3. Выберите вариант загрузки с вашего экземпляра Mint, но... продолжайте читать, вы еще не дома!
  4. Откройте терминал и запустите sudo update-grub, чтобы обновить файл grub. В зависимости от того, что привело вас к этому состоянию, этого может быть достаточно, но если нет, вам может потребоваться запустить что-то вроде grub-install..., чтобы убедиться, что ваш EFI правильно настроен для двойной загрузки -и ваш порядок загрузки указывает на Grub сначала.

Если вышеперечисленное не помогло вам разобраться, вам следует следовать документации Ubuntu по этому вопросу, поскольку Mint основан на Ubuntu, в этом случае процесс исправления вашего grub такой же.

Если ничего не помогло, зайдите на специальные форумы Mint или Ubuntu и попросите там спасательный круг.

0
18.03.2021, 23:14

Теги

Похожие вопросы