Проверка наличия строки в файле с cat | grep

apt-get и dpkg вызывают ldconfig для восстановления кэша.

Я предполагаю, что это делается в конце каждой массовой операции, но точно не знаю.

Я не думаю, что есть способ удалить определенные данные из кеша, он просто перестроен, например:

rm /etc/ld.so.cache
ldconfig

Вы можете использовать ldconfig -p для проверки содержимого кеша.

В моей системе ldconfig вызывается при каждой перезагрузке, но если для кэша используется /etc/, то он не создается каждый раз с нуля; вам придется перестроить его самостоятельно, если вы хотите этого.

Если вы удалите некоторые библиотеки вручную, вам придется их пересобрать.

0
03.10.2016, 12:08
1 ответ

grep можно использовать как команду условия. Она возвращает true при совпадении шаблона. Здесь вам нужен поиск по фиксированной строке (-F) и, возможно, по всей строке (-x):

if sudo cat /etc/sudoers |
  grep -xqFe "$USER ALL=(ALL) NOPASSWD:ALL"
then
  echo found
else
  echo not found
fi

Или если конфигурация sudoers позволяет запускать команду grep в дополнение к cat:

if sudo grep -xqFe "$USER ALL=(ALL) NOPASSWD:ALL" /etc/sudoers
then
  echo found
else
  echo not found
fi

-q говорит grep быть тихим, просто возвращать статус true/false через статус выхода, но не выводить ничего на stdout.

Обратите внимание, что конфигурация sudoers может включать другие конфигурационные файлы, которые этот подход не будет учитывать. То же самое для разрешений, предоставленных группам, в которых состоит пользователь.

Вместо этого вы можете использовать sudo -lU "$USER".

9
28.01.2020, 02:13

Теги

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