Я хотел удалить все файлы из каталога кроме того. Я нашел свое решение здесь. Это решение использует команду
shopt -s extglob
Я хотел знать то, что эта команда точно делает, некоторое знание бэкэнда. Я также добавил комментарий к этому ответу, но не сделал получил ответ до настоящего времени. Как новый пользователь к Ubuntu мне любопытно знать то, что делает эта команда.
Проще говоря, globbing относится к сопоставлению с образцом. Bash использует простой globbing как, echo l*
, которые расширяются до списка файлов в текущем каталоге, которые запускаются с буквы l
. Конечно, как можно предположить, это просто и ограничено.
Входят extglob
. Как можно предположить, это обозначает extended globbing
. Эта опция допускает более усовершенствованное сопоставление с образцом. От man bash
:
extglob If set, the extended pattern matching features described
above under Pathname Expansion are enabled.
И немного перед этим:
If the extglob shell option is enabled using the shopt builtin, several
extended pattern matching operators are recognized. In the following
description, a pattern-list is a list of one or more patterns separated
by a |. Composite patterns may be formed using one or more of the
following sub-patterns:
?(pattern-list)
Matches zero or one occurrence of the given patterns
*(pattern-list)
Matches zero or more occurrences of the given patterns
+(pattern-list)
Matches one or more occurrences of the given patterns
@(pattern-list)
Matches one of the given patterns
!(pattern-list)
Matches anything except one of the given patterns
существует множество путей, которыми extglob
может использоваться. Довольно много хороших примеров обеспечиваются в wiki Greg Журнала и Linux.