не мог понять вывод grep с регулярным выражением при использовании канала

Насколько я знаю, в то время как использование 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$ 

Я не мог получить причину относительно того, почему это происходит.

1
задан 21 November 2016 в 12:33

1 ответ

Это работает, потому что Ваше выражение test3y* не соответствует никаким именам файлов в каталоге, таким образом, это не расширено ни во что и передается grep буквально создание regex допустимого (y* = y, может произойти нуль или больше раз в том положении).

Вы должны все еще всегда , заключают Ваш regex в кавычки хотя!

2
ответ дан 7 December 2019 в 13:39

Другие вопросы по тегам:

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