Аз изпращам тук, защото не съм разбралнещо за изразите на bash globbing. Четох POSIX и определението на този конкретен тип израз (тези с квадратни скоби) и докато тествах, направих този тест:
bash-3.2$ ls
a.out c.cou tab_maker.c
bash-3.2$ ls [!c-t]
ls: [!c-t]: No such file or directory
bash-3.2$ ls [!c-t]*
a.out
bash-3.2$ ls [!c-to]*
a.out
bash-3.2$ ls [!cv-to]*
a.out tab_maker.c
bash-3.2$
Това, което не разбирам, е как башът интерпретира тази команда? Когато го направя ls [!c-t]*
, bash уловът a.out само (което е логично за мен), но защо го хвана tab_maker.c с последния тест? Има ли нещо, което трябва да знам, или просто недефинирано поведение?
Отговори:
1 за отговор № 1Нищо не съвпада [v-t]
, тъй като между тях няма символи v
и t
. [!cv-to]
е следователно еквивалентна на [!co]
.
Опитвам [t-v]
вместо.