Я желаю сделать команду для редактирования /etc/default/grub
и измените тайм-аут с 10 до 2. Кто-либо мог объяснить, как сделать это?
Можно использовать sed
, perl
и другие инструменты для этого. Вот два примера для sed
и perl
:
sed
:Запустите пробный прогон
sudo sed 's/^GRUB_TIMEOUT=10$/GRUB_TIMEOUT=2/' /etc/default/grub
если это в порядке, то
sudo sed -i 's/^GRUB_TIMEOUT=10$/GRUB_TIMEOUT=2/' /etc/default/grub
от человека sed
:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
Объяснение:
^GRUB_TIMEOUT=10$
(источник: debuggex.com)
^
- утверждайте положение в начале строки
GRUB_TIMEOUT=10
соответствует символам GRUB_TIMEOUT=10
буквально (чувствительный к регистру)
$
- утверждайте положение в конце строки
s
- s-модификатор: одна строка
perl
и более универсальный:Запустите пробный прогон
perl -pe 's/^(GRUB_TIMEOUT=)[0-9]+$/${1}2/' /etc/default/grub
если это в порядке, то
sudo perl -pi -e 's/^(GRUB_TIMEOUT=)[0-9]+$/${1}2/' /etc/default/grub
^(GRUB_TIMEOUT=)[0-9]+$
(источник: debuggex.com)
Вот универсальный:
sudo sed -i.bak 's/^\(GRUB_TIMEOUT=\)[0-9]\+$/\12/' /etc/default/grub
Замена 2
(после того, как \1
) с любым значением Вы хотите поместить.
s/OLD/NEW/
шаблон замены для sed
.
i.bak
отредактирует файл /etc/default/grub
на месте, сохраняя исходный файл сохраненным как /etc/default.grub.bak
. Если Вы не хотите резервное копирование, просто используют -i
.
Мы соответствовали строке, которая запускается с GRUB_TIMEOUT=
(Сохраненный им в группе так, чтобы мы могли обратиться к нему позже) и концы с одной или несколькими цифрами ([0-9]+
).
В заменяющем разделе мы заменили цифры значением, которое мы хотим поместить, сохраняя ранее подобранную часть (обозначенный \1
) как есть