Intereting Posts
Использование SSD на Qubes OS Скопируйте скобки в PS1 Как иметь дело с утилитами с таким же именем, но вести себя по-разному между вариантами Unix? локальный репозиторий yum с неработающим списком групп OpenWRT – Невозможно заблокировать порт DNS (53) из направления WAN-LAN Таймер systemd должен запускать ExecStop при выключении / перезагрузке Как клонировать сервер CentOS для виртуальной машины? Как logctl подписывает журналы, если «ключ проверки должен храниться извне»?? Как время автономной работы на ноутбуке сравнивается между GNOME 2 и GNOME 3 (GNOME Shell)? cp все файлы и подкаталоги в каталоге ksh Предоставление одному пользователю доступа к папкам нескольких пользователей, но ограничение этих пользователей в их собственном домашнем каталоге Bash: что такое присвоение `a =` определено? Удалите несколько последовательных имен файлов, но игнорируйте часть первого Как предоставить доступ для чтения ко всем домашним каталогам членов группы? Команда bash выполнить команду для аргументов X за раз

Глобус не работает в zsh, но работает в bash

У меня есть псевдоним в bash, который я пытаюсь передать в zsh. Я думал, что это, возможно, был сам псевдоним, но теперь кажется, что это просто глотание.

grep -irl --exclude=\*.{log,class,fuegoclass,dat}* --exclude-dir={build,system,lib} data 

Каков правильный способ исключить эти расширения и каталоги файлов в zsh?

В:

 grep -irl --exclude=\*.{log,class,fuegoclass,dat}* --exclude-dir={build,system,lib} data 

В обоих zsh и bash , --exclude=\*.{log,class,fuegoclass,dat}* сначала расширяется до --exclude=\*.log* --exclude=\*.class* --exclude=\*.fuegoclass* --exclude=\*.dat* а затем, из-за некорректного * , каждый из них рассматривается как шаблон для выполнения globbing on.

Например, --exclude=\*.log* будет расширяться до списка файлов в текущем каталоге, имя которого начинается с --exclude=*.log .

Если какой-либо из глобусов не соответствует, в zsh команда будет прервана. В bash , глобусы будут расширяться для себя.

Здесь вы не хотите глобализации, поэтому вы должны процитировать все символы подстановки (как в zsh и в bash , zsh достаточно любезен, чтобы указать на вашу ошибку).

 grep -irl --exclude=\*.{log,class,fuegoclass,dat}\* --exclude-dir={build,system,lib} data