Почему моя SD-карта переключается на только чтение, когда я смонтировал ее как readwrite?

Используйте это:

sed -e '/^DBName=.*/{s/^DBName=.*/DBName=localhost/;:a;n;ba;q}' \
  -e '/^# DBName=.*/{a \DBName=localhost
  :a;n;ba;q}' -e '$a \DBName=localhost' file

Где:

  • Оператор первый -e ищет ^ DBName знак равно* ( ^ означает от начала строки), и если он найден, выполняется часть в скобках {} : это будет искать и заменять строки и по завершении : a устанавливает метку с именем a , n считывает следующую строку в пространстве шаблонов и печатает ее. ba возвращается к метке a . Все это заставляет sed печатать все оставшиеся строки нетронутыми. Теперь sed завершается с помощью команды q на этом этапе, и другие выражения не будут обрабатываться. Так что замена производится только один раз.
  • второе выражение ищет строки, начинающиеся с # DBName =. * , и если найдено , добавляет DBName = localhost к следующая строка. Обратите внимание, что новая строка здесь в команде необходима, потому что после команды a в строке не должно быть ничего. Когда это сложение выполнено, : a; n; ba; q делает то же самое, что и в первом выражении. Если нет ...
  • ... обрабатывается третье выражение. Он добавляет к последней строке файла ( $ ) с помощью команды a строку DBName = localhost .
0
14.01.2018, 05:13
1 ответ

Обратите внимание, что вы указали errors=remount-roв качестве опции. Таким образом, если произойдет ошибка, вы обнаружите, что ваш носитель стал -только для чтения.

Вы можете заменить это на errors=continue, чтобы игнорировать такие ошибки. Вы, наверное, не хотите.

Если вы заметили это достаточно скоро, вы можете проверить dmesgили другие источники регистрации(journalctl? )на «плохой» системе, чтобы увидеть, не возникали ли такие ошибки.

2
28.01.2020, 02:32

Теги

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