πŸ“š Linux/Unix: Misc. & Learning Resources
Estimated reading: 3 minutes 276 views

Linux/Unix: Advanced Shell Features – Globbing & Brace Expansion Explained

Introduction – Why Learn Shell Expansion Features?

Linux shell features like globbing and brace expansion let you manipulate multiple files or commands at once, saving time and boosting efficiency. These are especially useful for scripting, automation, and advanced command-line usage.

In this guide, you’ll learn:

  • What globbing patterns are and how they match files
  • How brace expansion simplifies repeated commands or filenames
  • Real-world examples of each with outputs

1. Globbing – Wildcard File Matching

What is Globbing?

Globbing refers to the shell’s ability to match file names using wildcard characters. It’s used in most Linux shells (like Bash, Zsh) for pattern matching.


Globbing Patterns

PatternMatches
*Zero or more characters
?Exactly one character
[abc]Any one of the characters a, b, or c
[a-z]Any lowercase letter from a to z
[!0-9]Any character not a digit

Example 1: List all .txt files

ls *.txt

Output:

notes.txt  tasks.txt  hello.txt

Example 2: Match one-character files

ls ?.sh

Matches:

a.sh  b.sh

Example 3: Use character classes

ls file[1-3].log

Matches:

file1.log  file2.log  file3.log

2. Brace Expansion – Generate Repetitive Patterns

What is Brace Expansion?

Brace expansion generates arbitrary strings based on a patternβ€”useful for repeating commands, file creation, and range handling.


Syntax:

command {pattern}

Example 1: Create multiple files

touch file{1..3}.txt

Creates:

file1.txt file2.txt file3.txt

Example 2: Copy multiple files

cp file{1..3}.txt /backup/

Example 3: Alphabetic expansion

echo {a..d}

Output:

a b c d

Example 4: Combine fixed strings

echo {pre,mid,post}-config

Output:

pre-config mid-config post-config

Combine Globbing & Brace Expansion

ls file{1..3}.txt

Combines brace expansion and wildcard listing.

rm temp*.{log,tmp}

Deletes any file starting with temp and ending in .log or .tmp.


Tool Comparison Table

FeaturePurposeSyntax StyleBest For
GlobbingMatch files using wildcards*, ?, [ ]Filtering existing files
Brace ExpansionGenerate multiple strings/patterns{1..5}, {a,b}Repetition and bulk operations

Summary – Recap & Next Steps

Shell expansions like globbing and brace patterns enable smarter file operations and simplify scripting. Learning these features is key for handling large file sets, loops, and batch commands efficiently.

Key Takeaways:

  • Use *, ?, and [ ] to match filenames dynamically.
  • Use {} for generating patterns in file names or commands.
  • Combine them to handle advanced file tasks with fewer keystrokes.

FAQs

What’s the difference between * and {}?
* matches existing files. {} generates new strings before execution.

Can I use brace expansion in loops?
Yes:

for i in {1..5}; do echo "User$i"; done

Does brace expansion check the filesystem?
No. It’s pure string generation, unlike globbing which checks for real files.

How do I prevent globbing from expanding?
Quote the pattern:

echo "*.txt"

Can I use leading zeros in brace ranges?
Yes, but brace expansion will treat them literally:

echo file{01..03}.txt

Output:

file01.txt file02.txt file03.txt

Share Now :
Share

πŸ”΅ Linux/Unix: Advanced Shell Features (globbing, brace expansion)

Or Copy Link

CONTENTS
Scroll to Top