Как дописать в конец файла строку с проверкой, нет ли там уже этой строки?

Автор SerW, 04 августа 2025, 13:15:41

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

SerW

sudo nano /etc/dnf/dnf.conf #exclude=openh264* # https://discussion.fedoraproject.org/t/openh264-update-issue/117380/9В общем, в файл `/etc/dnf/dnf.conf` нужно дописать строку «exclude=openh264* # https://discussion.fedoraproject.org/t/openh264-update-issue/117380/9».
И хотелось бы, чтобы строка дописывалась не безоговорочно, а если ее такой еще нет в файле.
Сергей Швайко » DragonSerW
Мое Авито, рейтинг = 4,8 * 43: «on-topic.ru»

dzhoser

Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

SerW

Сергей Швайко » DragonSerW
Мое Авито, рейтинг = 4,8 * 43: «on-topic.ru»

dzhoser

Пояснение:
grep -q "exclude=openh264\*" /etc/dnf/dnf.conf — проверяет, есть ли уже строка exclude=openh264* в файле (флаг -q делает поиск "тихим", без вывода результата).

|| — выполняет следующую команду только если grep не нашёл строку (т.е. вернул ненулевой код выхода).

echo "exclude=openh264* ..." | sudo tee -a /etc/dnf/dnf.conf — добавляет (-a) строку в конец файла с правами sudo.

Альтернатива (с проверкой полного содержимого строки):
Если нужно проверить точное совпадение всей строки (включая комментарий), можно использовать:

bash
if ! grep -qF "exclude=openh264* # https://discussion.fedoraproject.org/t/openh264-update-issue/117380/9" /etc/dnf/dnf.conf; then
    echo "exclude=openh264* # https://discussion.fedoraproject.org/t/openh264-update-issue/117380/9" | sudo tee -a /etc/dnf/dnf.conf
fi
Здесь:

-F — интерпретировать строку как фиксированную (не как регулярное выражение).

if ! grep ... — проверяет отсутствие строки перед добавлением.
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков