Если вы дадите оболочке текстовую строку для выполнения, она сможет это сделать, если окажется, что она соответствует команде, например "ls"
("ls -l"
не является именем команды).
Ваш первый пример работает, потому что echo
при выполнении команды выполняется вызывающей оболочкой, генерируя bash -c "ls | wc -l"
. Затем конвейер выполняется с помощью bash -c
, что нормально.
Второй, третий и четвертый примеры не работают, поскольку для сгенерированной текстовой строки ls | wc -l
. eval
сделает это за вас.
Причина, по которой "ls -l"
или "ls | wc -l"
не работает, заключается в том, что удаление кавычек происходит после разделения слов в вычислении. командной строки.
Причина, по которой $(echo 'ls | wc -l')
не работает, заключается в том, что подстановка команд также происходит после разделения слов.
Вы можете вручную проверить меню загрузки для загрузки в Kali. Или. Если это не сработает, всегда можно использовать Supergrub2 :). Попробуйте загрузить Kali с загрузочного устройства Supergrub2 и обновить grub.
Если у вас двойная загрузка и какой-либо из вышеперечисленных шагов не работает, это может вам пригодиться.
Получите установочный DVD-диск с ОС Windows, одолжите его у друга или кого-либо еще. (Не приобретайте DVD с Windows XP или Vista.)
Запустите его на своем ПК и запустите программу установки.
Это можно сделать, выбрав загрузочный носитель либо нажав F12, либо установив порядок загрузки в загрузчике.
Доступ к нему можно получить, нажав F2 или Del., или любую клавишу, предложенную производителем.
Обычно этот параметр появляется в нижней части диалогового окна после выбора нескольких параметров.
Если будет предложено выбрать ОС, затем в опции восстановления системы выберите командную строку.
Теперь введите эти команды одну за другой:
bootrec /fixboot
bootrec /fixmbr
Выйдите из программы установки и перезагрузите ПК/ноутбук. Загрузка Windows восстановлена и переопределяет GRUB.
Тем не менее, ваш дистрибутив Linux присутствует там. Только GRUB переопределен.
Вы можете снова получить его, следуя:
[например,. sudo grub -install --root -directory=/mnt --boot -directory=/mnt/boot /dev/sda]
Вы должны заменить /dev/sda правильным разделом или диском.
Теперь обновите grub, набрав:
sudo update-grub.
Это может занять некоторое время, так что подождите.
После успешного обновления перезагрузка
Проблема решена.