Grub запускается в командной строке после обновления BIOS и не может загрузить ни одну ОС

Вы можете сделать это с помощью zshвстроенных операторов glob. Это имело бы несколько преимуществ:

  • легко решить эту проблему
  • работать с путями, содержащими символы новой строки
  • упростить выделение паттерна только в базовом имени
  • работать с подстановочными знаками (в вашем подходе, findи grepинтерпретировать шаблон по-разному)
  • получить отсортированный список
  • работают даже на не -системах GNU (-printf, -iname, --colorне являются -стандартными расширениями ).

Может быть, что-то вроде:

#! /bin/zsh -
pattern="(#i)${1?Please specify a pattern}"

set -o extendedglob

typeset -A find_file_color
find_file_color=(
  dirname  $'\e[0;33;49m'
  basename $'\e[1;34;49m'
  match    $'\e[1;33;44m'
  reset    $'\e[m'
)

colorize_file() {
  local file=${1-$REPLY}
  case $file in
    (*/*)
      REPLY=$find_file_color[dirname]$file:h$find_file_color[reset]/;;
    (*)
      REPLY=
  esac
  REPLY+=$find_file_color[basename]${${file:t}//(#m)$~pattern/$find_file_color[match]$MATCH$find_file_color[basename]}$find_file_color[reset]
}

print -rC1 -- **/*$~pattern*(ND.+colorize_file)

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

#! /bin/zsh -
pattern="(#i)${1?Please specify a pattern}"

set -o extendedglob

typeset -A find_file_color
find_file_color=(
  dirname  $'\e[0;33;49m'
  basename $'\e[1;34;49m'
  match    $'\e[1;33;44m'
  reset    $'\e[m'
)

colorize_file() {
  local file=${1-$REPLY}
  case $file in
    (*/*)
      REPLY=$find_file_color[dirname]$file:h$find_file_color[reset]/;;
    (*)
      REPLY=
  esac
  REPLY+=$find_file_color[basename]${${file:t}//(#m)$~pattern/$find_file_color[match]$MATCH$find_file_color[basename]}$find_file_color[reset]
  print -r -- $REPLY
  false # don't bother adding the file to the glob expansion
}

: **/*$~pattern*(ND.+colorize_file)
0
22.03.2021, 12:07
1 ответ

Итак, в конце концов мне удалось решить мою проблему, используя загрузку -восстановление по просьбе @psusi. Как только я это сделал, мой ноутбук мог загружаться только в Ubuntu, и у меня не было возможности выбрать какую-либо другую ОС, потому что меню Grub даже не отображалось. Я решил открыть grub -настройщик , чтобы увидеть текущую конфигурацию, и она извлекла мою предыдущую конфигурацию. Я решил обновить grub с сохраненной конфигурацией, и теперь все работает как обычно. Когда я загружаю свой компьютер, я больше не вижу оболочку Grub, и она напрямую переходит в меню Grub, из которого я могу загрузить Ubuntu или Windows. Спасибо, что так быстро оказали помощь. Я отмечу этот вопрос как решенный.

0
28.04.2021, 22:57

Теги

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