Glam Prestige Journal

Bright entertainment trends with youth appeal.

I wanted to delete all the files from a directory except one. I found my solution here. This solution is using this command:

shopt -s extglob

I want to know what this command exactly does, some back end knowledge.

1 Answer

In simple terms, globbing refers to pattern matching. Bash uses simple globbing like, echo l* which expand to list of files in current directory that start with letter l. Of course , as you can guess, it's simple and limited.

Enter extglob. As you can guess, it stands for extended globbing. This option allows for more advanced pattern matching. From man bash:

extglob If set, the extended pattern matching features described above under Pathname Expansion are enabled.

And a little before that:

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

There's multitude of ways in which extglob can be used. Quite a few good examples are provided in Linux Journal and Greg's wiki.

3

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy