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?
bash
ls
wildcards
command-substitution
Gabriel Perdue
źródło
źródło
[[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.Odpowiedzi:
Masz alias (lub funkcję),
ls
który koloryzuje dane wyjściowe. Cotype -a ls
ci daje Zamiast tego użyjJednak: nie analizuj
ls
Próbować
źródło
ls -Fh', and on the Linux box it is = ls is aliased to
przypomnienia , na moim komputerze Mac wpisz -a ls = ls jest aliasowany do ls -F --color ')alias ls='ls -F --color=auto'
.