Хотя по умолчанию zsh выдает ошибку, это управляется параметром nomatch
. Вы можете отключить опцию, чтобы оставить *
на месте, как это делают bash и тире:
setopt -o nonomatch
Хотя эта команда не будет работать ни в одной из других команд, вы можете просто игнорировать ее:
setopt -o nonomatch 2>/dev/null || true ; set *
Это запускает setopt
на zsh и подавляет вывод ошибки(2>/dev/null
)и код возврата(|| true
)неудачной команды на остальных.
Как написано, это проблематично, если есть файл, например, -e
:, тогда вы запустите set -e
и измените параметры оболочки, чтобы завершить работу при сбое команды; есть худшие результаты, если вы творческий. set -- *
будет безопаснее и предотвратит изменение параметров.
Нужно проверить, появляется ли слово «Соединение» в стандартной ошибке nc. Вы можете перенаправить stderr в именованный канал и выполнить поиск по этому каналу:
mkfifo nc-stderr
nc -lnvp $PORT 2>nc-stderr
В другом приглашении командной строки:
grep -q 'Connection.*accepted' nc-stderr && notify-send "a connection was accepted"