Странная проблема с подключением

Сzsh:

set -o extendedglob # best in ~/.zshrc
c_regular_files=(
  ${(0)^"$(locate -0 "${${PWD%/}//(#m)[]\\*?]/\\$MATCH}/*.c")"}(N.)
)
echo there are at least $#c_regular_files regular files whose name ends in.c
  • Нам нужно экранировать [, ?, \и *в $PWD, чтобы locateне интерпретировать их как операторы подстановки (с -rбыло бы еще хуже для регулярных выражений, которые имеют больше операторов, включая ., общие в именах файлов)
  • $PWD== /требует особой обработки; с $PWDвместо ${PWD%/}мы будем запускать locate -0 "//*.c", который ничего не вернет.
  • -0для файлов, которые должны быть NUL -с разделителями (новая строка не будет работать, так как это разрешено в путях к файлам ).
  • .для обычного файла. В отличие от [ -f, это исключает символические ссылки на обычный файл. Если вы хотите, чтобы каждый не -символическая ссылка .cфайл (разрешал любой другой тип файла, такой как каталог, fifo, сокет... ),замените .на ^@.

В любом случае обратите внимание, что locateвозвращает список, основанный на последнем обновлении базы данных locate, что может не отражать текущую реальность.

0
25.03.2020, 11:14
1 ответ

Мой личный VPN переписал мой файл resolv.conf и не вернул его в нормальное состояние.

Я прокомментировал старый контент и добавил в файл два новых DNS-сервера, и все заработало. так выглядит новый файл:

1 # Generated by expressvpn
2 # search expressvpn
3 # nameserver 10.47.0.1
    ^old content^
4 nameserver 8.8.8.8
5 nameserver 8.8.4.4

Большое спасибо A.B. за то, что указал мне правильное направление

1
28.04.2021, 23:19

Теги

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