Почему делают обновления KDM/KDE не сохраняют изменения в конфигурационных файлах?

Первая отправленная вами команда не может дать результаты, которые вы показываете, потому что у них нет двоеточий в конце; по-видимому, вы их раздели. Сценарий, на который вы ссылаетесь, делает это для выбора путей к каталогам, которые ls -R отображаются с добавленным двоеточием, но ничто не препятствует тому, чтобы имя файла и путь заканчивались двоеточием и давали ложное срабатывание. Это также вводит в заблуждение ваш заголовок; вы хотите сохранить большинство каталогов и исключить только несколько.

Заданный вопрос: Существует несколько различных «разновидностей» (стандартов) регулярных выражений, наиболее похожих, но с важными различиями в деталях. Есть два общих принципа в программном обеспечении Unix и Unix: простое регулярное выражение (BRE) и расширенное регулярное выражение (ERE). В большинстве оболочек (и стандартном поиске) используется еще более простая форма для сопоставления имен файлов (и вариантов регистра) (только? * И [...]), которая даже не называется регулярным выражением, а просто шаблоном. Существует еще более расширенная форма, определенная Perl, но используемая вне ее, называется Perl Compatible Regular Expression (PCRE). См. Почему мое регулярное выражение работает в X, но не в Y? и http://en.wikipedia.org/wiki/Regular_Expression .

Ваш (?! "взгляд вперед" есть только в PCRE, тогда как стандартный grep по умолчанию выполняет BRE или ERE с -E , хотя он кажется версии grep могут выполнять PCRE, или вы можете получить и установить отдельный pcregrep . Но вам это не нужно. Если вам нужны не скрытые дочерние элементы curr dir, просто выполните '^ \ ./ \ w' или '^ \ ./ [^.]' в зависимости от того, насколько строгими вы хотите быть. Но вы говорите, что не хотите скрытый каталог в любом месте пути, что труднее сделать с положительным регулярным выражением и намного проще с отрицательным соответствием, например grep -v '/\.'.

Обратная косая черта является особенной в обоих bash (и большинство, если не все оболочки) и grep (BRE или ERE), поэтому они должны быть либо удвоены \\ , либо заключены в одинарные кавычки; я предпочитаю последнее. Обратите внимание, что двойных кавычек здесь недостаточно.

Лучшие подходы: на самом деле вам нужны только пути к каталогам, поэтому, как предлагают другие ответы find -type d | grep -v / \. - лучший подход. Это не тратит время на перечисление имен обычных файлов, которые вы затем отбрасываете. В качестве альтернативы вы можете просто использовать ls -R | grep: $ без -a ; по умолчанию ls уже пропускает скрытые записи (как обычные файлы, так и каталоги). Как это делает сценарий, на который вы ссылаетесь!

1
27.07.2014, 22:56
1 ответ

Файлы в разделе /usr предназначены для управления менеджером пакетов (за исключением файлов в разделе /usr/local). Конфигурационные файлы, которые системный администратор может изменять в режиме реального времени, находятся в /etc. Это часть традиционной структуры каталогов unix и кодифицировано для Linux в стандарте Filesystem Hierarchy Standard. Рекомендация в Arch Wiki редактировать файлы в разделе /usr - плохая идея; ожидается, что ваши изменения будут перезаписаны при обновлении.

Arch Linux управляет файлами несколько нестандартным способом. Вы можете пометить файл как не подлежащий изменению при обновлении (это документировано в вики), заявив об этом в /etc/pacman. conf:

NoUpgrade = usr/share/config/kdm/Xsetup

/usr/share/config/kdm/Xsetup можно заменить /usr/share/config/kdm/Xsetup на символическую ссылку на файл в разделе /etc (например, /etc/kdm/Xsetup), чтобы было проще отслеживать сделанные вами настройки.

.
1
27.01.2020, 23:52

Теги

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