zsh scripting - Как НЕ сопоставить шаблон при создании имени файла?

С pv 1.2.0 (декабрь 2010 г.) и выше, с параметром -a :

Здесь и текущее, и среднее значение, по строкам:

$ find / 2> /dev/null | pv -ral > /dev/null
[6.28k/s] [70.1k/s]

В версии 1.3.8 (октябрь 2012 г.) и новее вы также можете использовать -F / - формат с % a :

$ find / 2> /dev/null | pv -lF 'current: %r, average: %a'  > /dev/null
current: [4.66k/s], average: [ 218k/s]

Обратите внимание, что tail -f начинается с выгрузки последних 10 строк файла. Используйте tail -n 0 -f file | pv -la , чтобы избежать такой ошибки при вычислении средней скорости.

2
03.05.2019, 23:19
1 ответ

Для zsh необходимо установить параметры EXTENDED_GLOB.

Чтобы узнать, были ли они установлены, запустите setoptдля отображения установленных параметров:

$ setopt | grep glob
extendedglob

Если он не установлен, запустите setopt extended_glob.

ПРИМЕЧАНИЕ. :это приведет к тому, что ~, ^и #не будут расширены.


Проблема в моем случае заключалась в том, что, хотя я установил эту опцию в оболочке, я запускал цикл for в сценарии. Сценарий запускает собственную оболочку для запуска, поэтому для него не установлен этот параметр.

Чтобы исправить эту конкретную проблему, поместите setopt extendedglobв сам скрипт.

3
27.01.2020, 22:02

Теги

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