With "rm" and other destructive commands, I usually work out a shell command
like this a little at a time so that I'm sure it's gonna do what I want, not
what it wants. In this case I'd do the "ls | grep -v .jpg" and hand-check to
be sure I wasn't left with anything good. Then, and only then, would I do the
whole thing.
Quick story: When employed "many years ago" at a company that has since
moved many times, I used to keep my resume in a directory named .private with
permissions 700 so that, at least in theory I was the only one who could go
in there, and the "." at the front of the name hid it even more so.
One day I was doing some system maintenance (as root via "su -" instead
of the slightly less dangerous "su"). I had just accepted another job
elsewhere but hadn't announced my departure. Anyway, I decided I had better
remove the ~/.private directory and its contents so, in a momentary lapse of
good judgement, I typed "cd ; rm -rf .*" hoping to save myself the trouble of
typing out ".private". Well, the system chugged along for about 30 seconds
before the guy in the next cubicle said to no one in particular, "Is the
system down?" As you may have recognized, ".*" matched ".." which means "go
up one level" and, since I was the root user, my "cd" had taken me to "/root"
and, in the wink of an eye, all the files on the system were gone.
Good thing I had another job already lined up...
Use of the little back-quote characters will put you into the same very
powerful, and very dangerous area as my very bad use of a wildcard. They're
handy little gadgets when used well.
On Tuesday 15 June 2004 17:37, Michael Havens wrote:
> On Tuesday 15 June 2004 17:11, Ed Skinner wrote:
> > rm `ls | grep -v .jpg`
> >
> > Note the back single quotes are on the key next to the "1" character.
> > When you put these around some commands, they are executed and their
> > stdout is captured, and that stdout is then dropped in, in place of the
> > back quoted expression and the outer "rm ..." is then executed.
>
> I don't know why but this command excited me! I even wrote it down as:
> what is in the `` is executed first and becomes the argument for the other
> command.
--
Ed Skinner,
ed@flat5.net,
http://www.flat5.net/
---------------------------------------------------
PLUG-discuss mailing list -
PLUG-discuss@lists.plug.phoenix.az.us
To subscribe, unsubscribe, or to change you mail settings:
http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss