Насколько я знаю, в то время как использование regex с grep одинарными кавычками должно использоваться иначе оболочка interpretet это как шарик (подстановочный знак) символы и выполняет расширение имени файла, но в ниже примера, оболочка берет его в качестве regex даже при том, что строка поиска не находится в кавычках.
sh-4.3$ ls
main.sh test1 test2 test3.sh test34 test3a
sh-4.3$ ls | grep test3y*
test3.sh
test34
test3a
sh-4.3$
Я не мог получить причину относительно того, почему это происходит.
Это работает, потому что Ваше выражение test3y*
не соответствует никаким именам файлов в каталоге, таким образом, это не расширено ни во что и передается grep
буквально создание regex допустимого (y*
= y
, может произойти нуль или больше раз в том положении).
Вы должны все еще всегда , заключают Ваш regex в кавычки хотя!