Что я сделал, так это отключил диспетчер отображения в терминале, (предполагая, что вы используете Gnome правильно):
systemctl disable gdm.service
reboot
У меня это сработало, а если нет, попробуйте также остановить процесс
systemctl stop gdm.service
и снова перезагрузитесь. Это будет означать, что у вас все еще запущен Gnome, но вы просто взаимодействуете только с командными строками и без среды рабочего стола (, вы всегда можете повторно -включить его, просто заменив disable
на enable
, а затем reboot
снова ).
(Я только вчера установил Arch Linux, поэтому, если я ошибаюсь, прошу меня простить :P.)
Я также только что понял, что вы не можете загрузить терминал. Я также столкнулся с этой проблемой. Я считаю, что не выполнил шаг должным образом, который неправильно устанавливал мой язык (Я не знаю, как я это испортил :)), но используя среду рабочего стола, я просто зашел в настройки и пошел к region & language
и изменил мой язык на английский, что затем решило мою проблему и смогло загрузить терминал. Возможно, у вас также может быть проблема с форматом, который находится прямо под языком, поэтому попробуйте исправить и это.
Удачи
Вы объявили drivevar
массивом, но используете его как единую строку элементов -.
Например, drivevar=$(lsblk...)
назначает вывод первому (нулевому )элементу массива, а echo $drivevar
выводит этот же элемент. Но вы не используете его как массив; вы используете его просто как строку, содержащую список элементов, разделенных пробелами -.
Это означает, что когда вы пытаетесь перебрать его с помощью for i in "${drivevar[@]}"
, все результаты находятся в первом (и только )элементе.
Возможно, вам следует использовать присваивание массива вида var=(element element…)
,
drivevar=( $(lsblk …) ) # Assignment
echo "drivevar=( ${drivevar[@]} )" # Debug line, I assume
О. Вы захотите удалить созданный вами файл, вызвавший исходную ошибку. Имейте в виду, что имя файла содержит символы новой строки, поэтому при использовании ls
или rm
оно может выглядеть странно. Используйте rm -i
, чтобы запросить подтверждение перед удалением :
rm -i /dev/sdb*sdc*sdd*
Кроме того, ваше выражение присваивания может быть упрощено из этого
lsblk | awk {'print $1'} | grep '^sd' | grep -v 'sda\|sdb'
на что-то подобное, что позволяет избежать awk | grep
антипаттерна
lsblk -dn -o NAME | awk '/^sd[^ab]/'