Сначала найдите все файлы, содержащие Linux.Secret =
в начале строки:
find. -type f -exec grep -q '^Linux.Secret =' {} ';'
Обратите внимание, что grep -q
ничего не выводит, он просто завершает работу со статусом, зависящим от того, совпало выражение или нет.
Затем, для всех файлов, прошедших эти тесты, (является обычным файлом и содержит этот текст ), мы запускаем простую (команду GNU)sed
:
find. -type f -exec grep -q '^Linux.Secret =' {} ';' \
-exec sed -i "s/^Linux.Secret =.*/Linux.Secret = 'NewSecret'/" {} +
Это вносит изменение в -место в файлах, заменяя всю строку строкой, которую мы хотели бы иметь. Мы обрабатываем одинарные кавычки, используя двойные кавычки вокруг выражений, которые этого требуют.
Если вам нужно быть более осторожным с сопоставлением и сопоставлять только Linux.Secrets =
, за которым следует что-то в одинарных кавычках:
find. -type f -exec grep -E -q "^Linux.Secret = '[^']+'" {} ';' \
-exec sed -E -i "s/^Linux.Secret = '[^']+'.*/Linux.Secret = 'NEWSECRET'/" {} +
Связанные:
Проблема возникла из-за того, что не был создан раздел подкачки, а был создан только файл подкачки.
Создал раздел подкачки с помощью инструмента «GParted», отформатировал его с типом «linux -swap», активировал «Swap on».
Выдал UUID этого раздела в /etc/fstab и /etc/default/grub. Это решило проблему.