Wildcards are really nothing new if you have used Unix at all before.
It is not necessarily obvious how they are useful in shell scripts though.
This section is really just to get the old grey cells thinking how things
look when you're in a shell script - predicting what the effect of
using different syntaxes are. This will be used later on, particularly
in the Loops section.
Think first how you would copy all the files from /tmp/a
into /tmp/b
. All the .txt files? All the .html files?
Hopefully you will have come up with:
$ cp /tmp/a/* /tmp/b/Now how would you list the files in
$ cp /tmp/a/*.txt /tmp/b/
$ cp /tmp/a/*.html /tmp/b/
/tmp/a/
without using
ls /tmp/a/
?
echo /tmp/a/*
? What are the two key differences
between this and the ls
output? How can this be useful?
Or a hinderance?
$ mv *.txt *.bak
will not have the desired effect; think about how this gets expanded by
the shell before it is passed to mv
. Try this using echo
instead of mv
if this helps.
We will look into this further later on, as it uses a few concepts
not yet covered.
My Shell Scripting books, available in Paperback and eBook formats. This tutorial is more of a general introduction to Shell Scripting, the longer Shell Scripting: Expert Recipes for Linux, Bash and more book covers every aspect of Bash in detail.
![]() Shell Scripting Tutorial is this tutorial, in 88-page Paperback and eBook formats. Convenient to read on the go, and in paperback format good to keep by your desk as an ever-present companion. Also available in PDF form from Gumroad:Get this tutorial as a PDF | ![]() Shell Scripting: Expert Recipes for Linux, Bash and more is my 564-page book on Shell Scripting. The first half covers all of the features of the shell in every detail; the second half has real-world shell scripts, organised by topic, along with detailed discussion of each script. |