Редактирование конфига из коммандной строки (хочу написать скрипт типа postinstall)
Модераторы: /dev/random, Модераторы разделов
Редактирование конфига из коммандной строки
Необходимо уметь править параметры конфигов из коммандной строки (точнее из скрипта)
Например хочу подправить конфиг /etc/default/grub
изменить
GRUB_TIMEOUT=5 на GRUB_TIMEOUT=0
Пишу sed -i -e 's/GRUB_TIMEOUT=5/GRUB_TIMEOUT=0/g' /etc/default/grub
и нифига. Все остается по прежнему
Например хочу подправить конфиг /etc/default/grub
изменить
GRUB_TIMEOUT=5 на GRUB_TIMEOUT=0
Пишу sed -i -e 's/GRUB_TIMEOUT=5/GRUB_TIMEOUT=0/g' /etc/default/grub
и нифига. Все остается по прежнему
- /dev/random
- Администратор
- Сообщения: 5289
- ОС: Gentoo
Re: Редактирование конфига из коммандной строки
Права на редактирование есть?
Re: Редактирование конфига из коммандной строки
Да, конечно. Я все такие эксперименты из под рута обычно провожу.
Я наверняка неправильно пишу комманду. Мне бы примеры где нибудь найти, где люди так правили конфиги.
Я наверняка неправильно пишу комманду. Мне бы примеры где нибудь найти, где люди так правили конфиги.
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Редактирование конфига из коммандной строки
Если речь об экспериментах, то лучше их проводить от обычного пользователя на копии файла.
Сама команда правильная (если разве что где-то вместо латинской буквы кириллическая не затесалась). Покажите, что у Вас в /etc/default/grub.
P. S. Регулярку я бы использовал не такую, конечно.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Редактирование конфига из коммандной строки
Да, действительно, она работает. Я ее из скрипта запускал и там она почему то не работала. А мне как раз нужно из скрипта. Ну и вообще тема как то не очень развита, плохо ищется что то полезное (и понятное) по ней. Хочется примеров хороших, чтобы править конфиги.
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Редактирование конфига из коммандной строки
Ну покажите скрипт.
Вообще я очень не люблю править конфиги скриптами. Лучше генерировать конфиг полностью, это страхует от возможных ошибок. Но такой вариант удобен только когда программа умеет читать много конфигурационных файлов из каталога, или когда в конфигурационном файле очень мало параметров.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Редактирование конфига из коммандной строки
Разобрался. В скрипте было написано GRUB_TEMEOUT, а не GRUB_TIMEOUT
это ужасно
Bizdelnick
Подскажи пожалуйста правильные строчки, чтобы:
Найти параметр по тому, что слева и изменить его значение (то, что справа)
Добавить новую строку
Согласен. Короткие скрипты лучше просто свои целиком копировать и все, но такие как grub так нельзя.
это ужасно
Bizdelnick
Подскажи пожалуйста правильные строчки, чтобы:
Найти параметр по тому, что слева и изменить его значение (то, что справа)
Добавить новую строку
Bizdelnick писал(а): ↑01.03.2015 13:38ообще я очень не люблю править конфиги скриптами. Лучше генерировать конфиг полностью
Согласен. Короткие скрипты лучше просто свои целиком копировать и все, но такие как grub так нельзя.
Re: Редактирование конфига из коммандной строки
Код: Выделить всё
'/GRUB_TIMEOUT/aNEW_LINE=VALUE'
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Редактирование конфига из коммандной строки
я-бы так написал:
Код: Выделить всё
sed -ri*~ 's/^(\s*GRUB_TIMEOUT=)[0-9]\s*$/&0/' filename
Код: Выделить всё
s/.*/&\nNEW_LINE/
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Редактирование конфига из коммандной строки
Осталось учесть случай, когда такой строчки вообще нет или она закомментирована.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Редактирование конфига из коммандной строки
Bizdelnick писал(а): ↑01.03.2015 18:56Осталось учесть случай, когда такой строчки вообще нет или она закомментирована.
Код: Выделить всё
sed -ri*~ 's/^(\s*GRUB_TIMEOUT=)[0-9]\s*$/&0/;Tl;h;:l;$!b;x;/.+/bm;x;s/.*/&\nGRUB_TIMEOUT=0/;b;:m;x' filename
что-то типа этого.
Re: Редактирование конфига из коммандной строки
Супер. Спасибо! Только почему то 50 получается. Как сделать, чтоб 0 выходило ?
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Редактирование конфига из коммандной строки
дайте пример данных.
Re: Редактирование конфига из коммандной строки
Ну изначально в файле написано GRUB_TIMEOUT=5
делаю копипасту приведенных строчек и жму ентер
получается скрытая копия оригинального файла и собственно файл grub внутри которого GRUB_TIMEOUT=50
делаю копипасту приведенных строчек и жму ентер
получается скрытая копия оригинального файла и собственно файл grub внутри которого GRUB_TIMEOUT=50
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Редактирование конфига из коммандной строки
drBatty писал(а): ↑01.03.2015 19:04Код: Выделить всё
sed -ri*~ 's/^(\s*GRUB_TIMEOUT=)[0-9]+\s*$/&0/;Tl;h;:l;$!b;x;/.+/bm;x;s/.*/&\nGRUB_TIMEOUT=0/;b;:m;x' filename
я плюс забыл после [0-9]
а мозг включить? Если-бы я вам однострок на перле кинул?
Re: Редактирование конфига из коммандной строки
Все равно 50 получается.
Я читаю твой учебник по sed, но это не для нормальных людей. Вот например:
Ещё раз повторю: «*» означает - любое число повторений. В том числе и ноль. Т.е. под регулярное выражение /E*/ попадают и пустые строки тоже, и любые строки, в которых есть пустые строки. К примеру строка "ABC" - в ней регулярное выражение /E*/ можно найти ЧЕТЫРЕ раза:
$ echo "ABC" | sed 's/E*/z/g'
zAzBzCz
Как видите, найдено ровно 4 совпадения, при этом, в данной строке вообще нет символа «E».
Всё потому-что, как я уже ранее писал - совпадение, это место между символами. В строке «ABC» имеется 3 символа, и четыре места между символами, именно на эти 4 места и меняется RE /E*/.
Не знаю кто этот язык сочинил, но он 100% был маньяком. Следовательно знать как это работает не нужно (чтобы не сломать себе мозг), нужно тупо иметь набор примеров, типа задача - решение, например для того, чтобы править конфиги.
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Редактирование конфига из коммандной строки
Ага. Он ещё и Unix сочинил. Стопудово маньяк.
Вывод неправильный. Правильный был бы - не нужно это использовать. Вообще не нужно использовать что бы то ни было, не зная, как оно работает.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: Редактирование конфига из коммандной строки
Вообще, Клини ничуть не сочинял UNIX, как и Томсон - регулярный язык. =)
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Редактирование конфига из коммандной строки
Если под языком понимать форму записи, то она в том виде, в каком используется в sed, впервые была придумана Томпсоном. А про эти ваши конечные автоматы я знать ничего не знаю.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Редактирование конфига из коммандной строки
спасибо за критику.
Стивен Клини скорее всего был математиком ИМХО. И именно он придумал звёздочку Клини, про которую я вам попытался рассказать. Сравните моё описание, с описанием в википедии. Нет, я не прав, не точен, и всё такое, но я писал для программистов-практиков, а не для математиков-теоретиков.