Odpowiedzi:
grep -r foo *nie wyszukuje dopasowań w ukrytych plikach lub katalogach, *jest również rozszerzany przez powłokę, więc możesz skończyć z zbyt długim błędem listy argumentów, gdy w bieżącym katalogu jest dużo wpisów, lub innymi błędami lub złym zachowaniem, jeśli nazwa niektórych plików lub katalogów zaczyna się od myślnika.
Inwokacja grep -r foo .nie ma powyższych wad
Zaktualizowano:
Kolejna różnica: strona man grep (@ fedora17) mówi:
-r, --recursive
Read all files under each directory, recursively, following symbolic links only if they
are on the command line. ...
Różnica wystąpi także po wykonaniu tego polecenia w pustym katalogu:
$ grep -r foo *; echo $?
grep: *: No such file or directory
2
$ grep -r foo .; echo $?
1
$
Jeśli używasz gwiazdki, nie możesz dopasować plików w katalogach, których nazwa zaczyna się od kropki, np .cache.
Aktualizacja:
Wynika to z faktu, że *jest on rozszerzany przez powłokę przed wywołaniem grep, więc otrzymuje listę nazw zamiast pojedynczej nazwy katalogu (dla bieżącego .). Sposobem powłoki rozwinąć wzór może być dostosowany za pomocą parametru powłoki (jak nullglob, nocasegloblub inne bashopcje) lub być zmienne środowiska (np LANGlub LC_ALL)