Проигнорируйте все соответствия к отрицаемому extglob шаблону в рекурсивном ls

По-видимому, моя установка не работает с известными 1.0.14 из code.google.com, я использовал 1.0.12 версии как таковых:

  • перейдите к eID быстрой странице установки
  • загрузите их новый .deb (содержит дополнение Firefox eID 1.0.12),
  • закройте все экземпляры Firefox
  • подключите читателя USB к компьютеру
  • вставьте eID карту в читателя
  • запустите браузер
  • проигнорируйте сообщение, что eID дополнение не могло правильно настроить Вашу карту (с их троянцем)
  • проверьте, что дополнение работает путем попытки редактировать-> предпочтения-> усовершенствованный-> шифрование-> сертификаты представления-> сертификаты
  • необходимо видеть 2 загруженные сертификата (от eID карты)

Если Вы добираетесь настолько далеко (и см. сертификаты и следовательно исключите проблемы между картой, картридером, eIDaddon, и Firefox), но все еще не может отождествить с правительственными сайтами, то удостоверьтесь, что Вы сделали, чтобы правильное правительство базировалось сертификат (перейдите к Certipost), и включите эти 3 флажка (может всегда изменяться в редактировании-> предпочтения-> усовершенствованный-> шифрование-> сертификаты представления-> полномочия),

Если Вы все еще не можете соединиться с ними должна быть [безопасная] проблема протокола связи (который не имел место со мной): возможно, правительственный сервер не адгезивен, возможно, Ваш браузер не.

Сообщение об ошибке выше (ssl_cert_handshake_fell_down) возможно, был заменен сообщением об ошибке, говоря "eID, не мог правильно (вероятно), установить руткит"

1
14.02.2013, 00:02
2 ответа

Что относительно того, чтобы добавить globstar опция оболочки и -d флаг к ls к не автоматически перечисляют содержание каталога?

shopt -s extglob
shopt -s globstar
ls -d  **/!(*.c)
3
27.01.2020, 23:17
  • 1
    Большое предложение, я не знал, что они добавили globstar. Однако, так как я надеюсь соответствовать входному набору (который не был ясен, зафиксировал это), не опускают его, я думаю, что должен использовать ls -dAR **/*.c. –  samebertz 14.02.2013, 00:01
  • 2
    Отметьте это вопреки zsh (где та порожденная функция) и ksh93 (где bash скопированный это с), bash ** переходит по символьным ссылкам при убывании дерева каталогов, которое может иметь серьезные нежелательные эффекты. Так используют с осторожностью или использованием find или другие оболочки, если существует риск что там быть символьными ссылками в каталоге. –  Stéphane Chazelas 14.02.2013, 00:10
  • 3
    @choroba, -A и -R опции не имеют смысла в сочетании с -d и может быть удален (оболочка составляет список файлов здесь, нет ls, ls в этом случае просто производит список, так мог быть заменен printf '%s\n'). Кроме того, Вам нужно -- отметить конец опций или записать это ls -dAR ./**/!(*.c) избегать проблем с именами файлов, запускающимися с -. Кроме того, если нет никакого c файла и если существует названный каталог ** и названный файл !(*.c) в нем, ls сообщит это даже при том, что это не a c файл. Можно хотеть добавить failglob опция. –  Stéphane Chazelas 14.02.2013, 00:34
  • 4
    Проблема символьной ссылки была теперь устранена в bash-4.3 –  Stéphane Chazelas 18.03.2014, 15:45

GNU ls --ignore опция берет стандартные шаблоны имени файла, не a ksh расширенный один (что bashbash только, нет ls) распознает с extglob)

Таким образом, можно сделать:

ls -AR --ignore='*.[ch]' --ignore='*.cpp'

Но Вы не можете сделать:

ls -AR --ignore='!(*.[ch]|*.cpp)'

Который просто проигнорировал бы файлы, названные как: !(foo.c|bar.cpp).

В ls -AR --ignore=!(*.c), так как шаблон не заключается в кавычки, bash попытался бы развернуть его прежде, чем передать его ls. Таким образом, это посмотрело бы в текущем каталоге для файлов, имя которых запускается с "--ignore=" и не заканчивается в ".c". Например, если было два файла, один названный --ignore=foo и один названный --ignore=bar, это работало бы ls с теми четырьмя аргументами: "ls", "-AR", "--ignore=bar", "--ignore=foo".

Можно сделать (с GNU, находят).

find . -regextype posix-extended -regex '.*\.([ch]|cpp)' -ls

Или с любым POSIX find:

find . \( -name '*.[ch]' -o -name '*.cpp' \) -exec ls -ld {} +

Или принятие там не является никакими символьными ссылками на каталоги:

shopt -s extglob globstar dotglob failglob
ls -ld -- **/*.@([ch]|cpp)

На этот раз, bash действительно разворачивает globbing шаблон и передает список файлов к ls.

2
27.01.2020, 23:17
  • 1
    Спасибо за дополнительную информацию, которая объясняет extglob приятно. –  samebertz 14.02.2013, 00:07

Теги

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