Расширение оболочки не происходит

Почему эти две команды эквивалентны (или, как кажется, основываются на результатах, которые я возвращаю)? Я понял, что первая команда не будет работать, потому что * будет рассматриваться как оператор glob, но вместо этого он передается в grep просто отлично и интерпретируется как шаблон регулярного выражения.

 git diff master | grep \\+.*TODO git diff master | grep \\+.\*TODO 

One Solution collect form web for “Расширение оболочки не происходит”

Имя файла glob будет расширено только в том случае, если в текущем каталоге есть соответствующий файл – иначе (запрет любых failglob оболочки nullglob или failglob ) он будет передан как есть. Так:

 $ echo \\+.*TODO \+.*TODO $ printf '+foo\n+TODO\n+bar' | grep \\+.*TODO +TODO 

но

 $ touch '\+.abcTODO' $ echo \\+.*TODO \+.abcTODO $ printf '+foo\n+TODO\n+bar' | grep \\+.*TODO $ printf '+foo\n+TODO\n+bar' | grep \\+.\*TODO +TODO 
  • Как grep файл для отметки времени? Я ищу цифры часа
  • Как сохранить символ возврата каретки (\ n) при выходе вывода команды в переменную
  • Как выполнить эхо-команду и включить возврат строки?
  • Как я могу сказать echo / printf в Bash, чтобы проглотить коды эвакуации, основываясь на условии?
  • Как добавить строку с пробелами в конце вывода команды
  • Как я рекурсивно проверяю разрешения в обратном порядке?
  • Bash конвертирует имена путей для sed, чтобы они избегали
  • список истории в bash всегда усечен до 5000 строк при новом входе в систему
  • Команда Bash, которая использует подстановочный знак вместо папки для копирования содержимого содержимого нескольких файлов в один каталог?
  • Любой лучший метод, чем это для сортировки файлов по дате создания?
  • Как я могу воспроизвести команды, запущенные на одной машине на другой машине?
  • Linux и Unix - лучшая ОС в мире.