Pracuję nad projektem na dwóch różnych komputerach - jednym z systemem Mac OSX 10.8.3 i jednym z systemem Red Hat Enterprise Linux. Na komputerze Mac mogę to zrobić:
vim $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
i wszystko działa dobrze. W systemie Linux nie działa. Wszystkie działają dokładnie tak, jak się spodziewam:
ls -R */*.@(h|cpp) */*/*.@(h|cpp)
echo $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
export myfilelist=$(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
echo $myfilelist
Ale
vim $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
tworzy zestaw zniekształconych nazw plików, np
^[[00m^[[00mevent_builder/include/eb_service.h^[[00m" [New DIRECTORY]
lub
:ls
1 %a "^[[00m^[[00mevent_builder/include/eb_service.h^[[00m" line 1
2 "^[[00mevent_builder/include/EventBuilder.h^[[00m" line 0
Czy ktoś wie dlaczego?
[[00m
tu o sekwencje ansi używane do kolorowania wydruków na terminalu kompatybilnym z ansi.ls --color=never
może pomóc, zobacz stronę podręcznika man.