Как использовать nc для последовательной отправки сообщений в секунду

Шаблоны подстановки имен файлов и регулярные выражения в некоторой степени перекрывают синтаксис, но работают принципиально по-разному.

Регулярное выражение eбудет соответствовать (в )строке hello, а шаблон подстановки имени файла e— нет. Шаблоны подстановки неявно привязаны, поэтому шаблон подстановки eбудет эквивалентен регулярному выражению, выглядящему примерно как ^e$, но их применение может быть другим (регулярное выражение будет соответствовать полной строке в тексте, тогда как шаблон глобуса обычно соответствует одному имени файла ).

Шаблоны подстановки имен файлов также не содержат никаких специальных символов, уточняющих предыдущее выражение, таких как *или ?в регулярном выражении, или каких-либо средств для группировки частей выражений, как это делает (...)в регулярном выражении. выражения или чередовать возможные вложенные шаблоны -, как это делает |в регулярном выражении. Некоторые оболочки, очевидно, добавляют что-то из этого, как, например, bashс включенным shopt -s extglob.

Подстановочные шаблоны используются не так, как регулярные выражения.Регулярные выражения в основном используются для выбора/сопоставления строк из текстов, тогда как шаблоны подстановки имен файлов в основном (, но не исключительно )используются для сопоставления имен файлов или создания списков существующих имен из каталога.. Шаблоны подстановки используются для сопоставления строк , например. case... esac, но оболочка POSIX никогда не использует регулярные выражения для создания списков имен из каталога, если не расширена с этой возможностью.

Оба типа шаблонов определены стандартом POSIX:

Что касается шаблонов подстановки, стандарт начинается со слов

The pattern matching notation described in this section is used to specify patterns for matching strings in the shell. Historically, pattern matching notation is related to, but slightly different from, the regular expression notation described in XBD Regular Expressions. For this reason, the description of the rules for this pattern matching notation are based on the description of regular expression notation, modified to account for the differences.

Существует несколько «диалектов» регулярных выражений, таких как упомянутый вами PCRE, но нельзя сказать, что шаблоны подстановки имен файлов являются одним из них.

Существует несколько языков шаблонов, похожих на шаблоны подстановки имен файлов в оболочке, например шаблоны, используемые в SQL-запросах с LIKE. Все они довольно просты и обычно предоставляются как удобный способ сопоставления битов строк. Регулярные выражения, по сравнению с ними, намного сложнее.


Вы упоминаете "bashрегулярные выражения". Оболочка bashподдерживает регулярные выражения, но не для сопоставления имен файлов. В [[... ]]оператор =~выполняет сопоставление регулярного выражения строки в левой части с регулярным выражением в правой части. Тип регулярных выражений, который оболочка bashподдерживает таким образом, представляет собой стандартный расширенный набор регулярных выражений.Дополнительную информацию об этом см. в руководстве bashк вашей системе.

0
27.04.2020, 14:41
1 ответ

Вставьте всю петлю вnc:

while true; do
    echo 'lol'
    sleep 1
done | nc -l 9000

Запустится один экземпляр nc, прослушивающий соединения на порту 9000 и отправляющий ему «lol» раз в секунду.

Обратите внимание, что сообщения «lol» будут накапливаться до тех пор, пока соединение не будет открыто, поэтому вы можете увидеть некоторое количество сообщений «lol», отправляемых сразу при подключении. Вы можете добавить задержку в начале:

(sleep 5
 while true; do
     echo 'lol'
     sleep 1
 done) | nc -l 9000
3
19.03.2021, 02:25

Теги

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