Я новичок в написании сценариев bash. Я хочу создать сценарий bash для автоматической установки и установки компонентов на моем компьютере с Linux.
Предположим, я хочу редактировать
/etc/yum.repos.d/epel.repo
скриптом bash
То, что я хочу сделать, заключается в следующем
- Открыть файл /etc/yum.repos.d/epel.repo
- Найти раздел [epel]
- Добавьте приоритет линии = 10 сразу после включения линии = 1 в разделе epel
Для первой части я добавил
yum install nano
nano /etc/yum.repos.d/epel.repo
Мой вопрос заключается в том, как сделать 2 и 3 часть с помощью bash-скрипта, используя nano (если возможно, если это невозможно, покажите мне с помощью sed)
Также в некоторые моменты мне придется изменять переменные в файлах. Например,
- enable = 0 для включения = 1
- Testing = "1" to Testing = "0"
- Добавить текст в строке. functions = to function = "text1", "text2"
- Добавьте текст в файл и сохраните его (с помощью nano)
Я знаю, что это требовательно, но мне нужно создать это для друга, который noob в управлении сервером. К сожалению, у меня нет времени изучать сценарии bash с самого начала, так как мои экзамены уже близко. Я буду использовать ваши примеры для написания сценария.
Ребята, спасибо за все ответы, которые я успешно выполнил большую часть сценария bash
Однако у меня есть другая проблема Давайте предположим , что я хочу изменить nginx.conf с использованием СЭД Мы будем иметь дело с worker_processes
Теперь я хочу использовать СЭД сделать следующее 1.Find на первое вхождение в worker_processes
в этой конф и замена текстаworker_processes 4;
Специальное примечание здесь: это всего лишь пример. Может случиться так, что conf содержит worker_processes 1; , Это сложная часть. Мне нужна команда sed, которая находит ПЕРВЫЙ случай совпадения WHOLE слова worker_processes , удаляет строку текста, где слово найдено, и вставляет worker_processes 4;
туда, а затем сохраняет файл. Это самый надежный метод при редактировании файлов (без риска разрыва
Последнее предложение: я использовал sed -i 's / enabled = 0 / enabled = 1 / g' /etc/yum.repos.d/remi.repo, чтобы изменить enabled = 0 на enabled = 1 в разделе [remi] в remi .repo. Однако у меня есть ощущение, что он может изменить все enabled = 0 в этом файле, что приведет к повреждению сервера. Может кто-нибудь предложить лучший код.
Еще одна вещь, в которой я не уверен: PI хочет отредактировать файл, который имеет это как Text Testing = "0" (Да, у него есть кавычки, и мне нужно его сохранить). Его следует изменить с Testing = "0" на Testing = " 1 "(с кавычками)
Также мне нужно добавить текст с кавычками в конце файла с помощью sed. Как, например, "Спасибо Quanta" (с цитатой). Для php вы ставите \ с повторяющимися кавычками, не знаю, как это делается для bash.
Еще одна вещь,
мне нужно изменить строку в Conf, но я не помню, что весь текст заменить
Как его слушать = что-то; Я хочу изменить его, чтобы слушать = /tmp/php5-fpm.sock;
Большие пальцы вверх для квантов
Спасибо за отличную поддержку, ребята
-i
не является стандартным вариантом дляsed
.ed
однако предлагает совместимый со стандартами способ редактирования файлов с синтаксисом, очень похожим на синтаксис sed.Как сказал ptman, Augeas может спасти вас от использования
sed
/awk
:установит приоритет
epel
хранилища на 10. Еслиpriority
ключ уже существует, он установит его значение, в противном случае он добавитpriority
запись после последней записи в разделе.То же самое касается других значений, которые вы можете изменить.
Если вы хотите изменить несколько значений, вы даже можете использовать их
augtool
в качестве интерпретатора:Если вы хотите сохранить его в своем скрипте bash, вы можете передать команды в
augtool
:Смотрите
man augtool
больше вариантов.Есть несколько преимуществ использования Augeas vs
sed
/awk
:yum.repo
синтаксис). Вы не рискуете нарушить синтаксис файла, если ваше регулярное выражение неверно;yum.repo
разделах, поэтому вы знаете, что редактируете правильный раздел;источник
Вы также можете попробовать Augeas , инструмент для программного изменения конфигурационных файлов. Он очень мощный в сочетании с Puppet (система управления конфигурацией), но также может использоваться сам по себе.
источник