У меня есть функция fish, которая содержит следующий оператор rm
:
rm ~/path/to/dir/*.log
Этот оператор работает нормально, если в этом пути есть файлы * .log, но не работает, если нет * .logфайлы. Ошибка:
~/.config/fish/functions/myfunc.fish (line 5): No matches for wildcard '~/path/to/dir/*.log'. See `help expand`.
rm ~/path/to/dir/*.log
^
in function 'myfunc'
called on standard input
ZSH имеет то, что называется Glob Qualifiers . Один из них, N
, обрабатывает установку опции NULL_GLOB для текущего шаблона, что по сути делает то, что я хочу:
Если шаблон для генерации имени файла не имеет совпадений, удалите шаблон из аргументасписок вместо сообщения об ошибке.
Я понимаю, что у рыбы нет квалификаторов глобуса в стиле ZSH , но мне неясно, как обрабатывать этот сценарий в моих функциях рыбы. Должен ли я цикл через массив? Это кажется действительно многословным. Или есть более подозрительный способ справиться с этим сценарием?
# A one-liner in ZSH becomes this in fish?
set -l arr ~/path/to/dir/*.log
for f in $arr
rm $f
end