(OLDER) <- More Stuff -> (NEWER) (NEWEST)
Printer Friendly Version


book graphic unix and linux troubleshooting guide

My Troubleshooting E-Book will show you how to solve tough problems on Linux and Unix systems!







Bash Brace Expansion


2008/04/20

The new tricks Bash has picked up in 3.0 are exciting and useful, but simple brace expansion has been available for some time now, and yet we seldom see it used. I suppose that's because the need doesn't come up too often. The classic example from the Bash man page is:



mkdir /usr/local/src/bash/{old,new,dist,bugs}



Hate these ads?

which expands to



mkdir /usr/local/src/bash/old /usr/local/src/bash/new /usr/local/src/bash/dist /usr/local/src/bash/bugs


The man page also gives a more complex example showing nested braces:



chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}


That's a little harder to follow, but if you replace "chown root" with "echo" you can see it:



$ echo  /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
/usr/ucb/ex /usr/ucb/edit /usr/lib/ex?.?* /usr/lib/how_ex


There are other possibities beyond nesting:








$ echo foo{1,2}{a,b}
foo1a foo1b foo2a foo2b


And did you know that you can leave out the arguments? As long as you have the comma, this works:



$ echo foo{,}{,}
foo foo foo foo


And so does this:



$ echo foo{,,,}
foo foo foo foo


Braces can get pretty complex:



$ echo foo{1,2,3,4}bar{7,8{foo,bar}}
foo1bar7 foo1bar8foo foo1bar8bar foo2bar7 foo2bar8foo foo2bar8bar foo3bar7 
foo3bar8foo foo3bar8bar foo4bar7 foo4bar8foo foo4bar8bar
# with 3.0 bash the "foo{1,2,3.4}" can be "foo{1..4}"


But when would you ever need anything like that?




Comments


Mon Apr 21 22:38:23 2008: Subject:   KenGregg


Cool. I guess that'll teach me to not RTFM cover to cover.

Back in my early days I worked with an os where the shell would expand what they referred to as an @list. Create a list of file names in a file and it would be expanded to the list with @filename syntax.

I have often wished I could do something like that in bash. I'll have to play with this.

Mon Apr 21 22:40:45 2008: Subject:   TonyLawrence


If you read everything cover to cover you'll never get anything else done :-)

Tue Apr 22 01:02:57 2008: Subject: bash   badanov
http://www.freefirezone.org

Works in sh as well. Maybe bash got this working from the sh shell?

Tue Apr 22 13:05:11 2008: Subject:   BigDumbDinosaur
http://bcstechnology.net

mkdir -p <path> produces the (more or less) equivalent to bash's braces. However, a separate <path> has to be specified for each subdirectory that is desired, so there's a bit more typing involved.

Click here to add your comments

cartoon
Need eyes on the ground at your customer's site?
Installation and light training Boston and New England
Reliable and experienced, punctual and professional.


Enter your email address for automatic notification of new posts here
(be sure to whitelist 'feedburner.com' if you use spam filtering)

Or use any RSS reader

Delivered by FeedBurner





Views for this page
Today This Week This Month This Year  Overall
381515 1,520

numly esn 54794-080420-465080-25
numly barcode

Have you tried Searching this site?

Unix/Linux/Mac OS X support by phone, email or on-site: Support Rates

This is a Unix/Linux resource website. It contains technical articles about Unix, Linux and general computing related subjects, opinion, news, help files, how-to's, tutorials and more. We appreciate comments and article submissions.

Publishing your articles here

pavatar.jpg
More:
       - Linux
       - Unix
       - MacOSX
       - Shell
       - Basics




Unix/Linux Consultants


larryi@ccamedical.com SCO OS5, Debian Linux, RedHat Linux, MySQL, Apache, AJAX development using dXport/dL4/Unibasic, Windows Connectivity, Sharing Resouces, Automation, Shell Scripting


http://thatitguy.com Business networking servers, Linux and Unix experts. In business since 1997! Windows and Exchange to Samba and Scalix migration experts.


http://www.schewanick.com SCO Unix, Solaris, Linx (various), PHP, MySQL, Apache, uniBasic, dL4, Perl, System Administration and more....



Twitter
o When an email ends with "God Bless America", the rest is almost always ignorant, reactionary junk. Not that I need to read to the end. 7:35 AM Apr 16th 2008







My Favorites

Change Congress