Когда вы можете загрузить Mint через меню grub Kali, вы можете заменить grub, чтобы он указывал на Mint.
Загрузите Linux Mint и выполните следующие команды
Проверьте, работаете ли вы в режиме BIOS или в режиме UEFI. Похоже, Mint был установлен в режиме UEFI, но вы можете проверить с помощью
test -d /sys/firmware/efi && echo efi || echo bios
Проверьте, где у вас grub.cfg
. Обычно он находится в /boot/grub
, что является значением по умолчанию.
find /boot -name 'grub.cfg'
Если это где-то еще, вам нужна возможность указать правильное местоположение. Подробности см. в man grub-install
.
Установите загрузчик grub. См. следующую ссылку,
help.ubuntu.com/community/Grub2/Installing #Переустановка _GRUB _2 _из _a _Рабочая _Система
sudo grub-install /dev/sdX # Example: sudo grub-install /dev/sda
Эта команда работает в режиме BIOS, и теперь я проверил, что она работает и в режиме UEFI (протестировано с Lubuntu 18.04 LTS и Ubuntu 16.04.1 LTS в NUC ).
Затем выполните следующую команду, чтобы Mint увидел Kali (должен быть хотя бы один пункт меню для Kali в меню grub Mint ),
sudo update-grub
Решение(после комментариев и чата)
Выполнение этих команд из Mint не могло перезаписать/удалить файл grubx64.efi
, указывающий на Kali. Но ОП увидел это и сделал это вручную.
-n Добавляйте к каждой строке вывода префикс 1 -на основе номера строки.
-o Печатать только совпадающие части.
[^ATGC] исключить символы.
grep -no '[^ATGC]' file
Если у вас много файлов, и большинство из них валидны, есть действенный способ провести предварительную проверку. Просто посчитайте недопустимые символы :, если их нет, нет смысла делать более точную проверку файла. Мы используем tr
для удаления действительных и wc -c
для подсчета остальных.
Для случая, когда счетчик не равен -нулю, необходимы более точные отчеты.
Я бы предложил использовать awk и определить разделитель полей FS ()как «FS=[^ATGC]+», что означает «любую последовательность символов, кроме A, T, G или C».. Если в строке нет неверных символов, то будет только одно поле.
Если существует более одного поля, мы можем использовать расширение GNU/awk для разделения (), которое предоставляет точный текст каждого разделителя полей.
#! /bin/bash
Awk='
BEGIN { FS = "[^ATGC]+"; }
function Show (tx, Local, f, c, fTxt, fSep) {
split (tx, fTxt, FS, fSep)
for (f = 1; f in fSep; ++f) {
c += length (fTxt[f]);
printf ("File %s Line %d Column %d Has :%s:\n",
FILENAME, FNR, 1 + c, fSep[f]);
c += length (fSep[f]);
}
}
NF > 1 { Show( $0); }
'
for fn in q??; do
cc="$( tr -d 'ATGC\n' < "${fn}" | wc -c )"
(( cc == 0 )) && { echo "$fn is OK"; continue; }
awk "${Awk}" "${fn}"
done
и проверить:
Paul--) head q??
==> q01 <==
TTGTAAGGTAAGTGGATTYTCCGGGRETC
TTVGGATCGTTGACCAGTK
GCCCGGGCCGGTCCTTTGGTGCGTGGGG
CTCTCCCAACCCCCCCACCCTCGACCTGAGCTCAGGCXC
BAACCCCZ
==> q02 <==
GCCCGGGCCGGTCCTTTGGTGCGTGGGG
==> q03 <==
TTGTAAGGTAAGTGGATTYTCCGGGRETC
Paul--)
Paul--)./qFix q01 q02 q03
File q01 Line 1 Column 19 Has :Y:
File q01 Line 1 Column 26 Has :RE:
File q01 Line 2 Column 3 Has :V:
File q01 Line 2 Column 19 Has :K:
File q01 Line 4 Column 38 Has :X:
File q01 Line 5 Column 1 Has :B:
File q01 Line 5 Column 8 Has :Z:
q02 is OK
File q03 Line 1 Column 19 Has :Y:
File q03 Line 1 Column 26 Has :RE:
Paul--)