Re: kfdialog.h
Thanks for that little tid-bit. I've used the find command for about two
years and never discovered this before except when the wild card is in
front it caused a problem and I'd use quotes. I don't think I've ever
searched for a file from a directory that contained one matching the
pattern before. I never knew it expanded the wild card before it
searched. Gotta be the old DOS mentality.
Thanks again.
On Thu, 8 May 1997, Craig Sanders wrote:
>
> On Thu, 8 May 1997, Rick Jones wrote:
>
> > panther# cd ../kdm*
> > panther# pwd
> > /usr/src/kde/kdm-0.4.4
> > panther# find /usr -iname kfdial*
> > /usr/src/kde/kdm-0.4.4/kgreeter/kfdialog.cpp
> > /usr/src/kde/kdm-0.4.4/kfdialog.cpp
>
> try putting quotes around kfdial*.
>
> e.g.
> find /usr -iname "kfdial*"
>
> Without the quotes, the kfdial* argument MATCHES the file kfdialog.cpp
> in the current directory (/usr/src/kde/kdm-0.4.4), and that is what is
> passed to find as an argument.
>
> You're even taking advantage of this behaviour when you issue commands
> like "cd ../kdm*"
>
>
> > [...deleted...]
> >
> > Now why can't "find" see the kfdialog.h/.moc files from the kdm directory
> > but it sees them from kdelibs directory?
> >
> > I am not happy about this. Does anybody have a clue?
>
> it's not a problem with find, it's a problem with the user :-)
>
> if you don't put quotes around wildcard characters (like "*" and "?")
> then your shell will attempt to expand the wildcard BEFORE passing the
> arguments to the program. If any files in the current directory match the
> wildcard then they get passed as arguments, otherwise the wildcard itself
> is passed.
>
> e.g. if you execute the command "foo *.c" there are two possible sets of
> arguments passed to program foo:
>
> 1. in a directory with NO .c files, foo gets "*.c"
> 2. in a directory with fred.c, joe.c, etc.c, foo gets "fred.c joe.c etc.c"
>
> correct quoting and escaping of characters with ", ', and \ is very
> important in any shell, and also in many scripting languages like
> sed, awk, perl, and others. it is definitely a good use of any unix
> user/admin's time to learn how it works.
>
> a quick summary:
>
> use \ to escape a single character. e.g. \*, \?
>
> use " to quote an entire string, allowing $ substitution.
> e.g. "s/$SEARCH/$REPLACE/"
>
> use ' to quote an entire string. e.g 's/ */ /g'
>
> you can use combinations of the above too. e.g. you can include a quote
> within a quoted string like so: '\'hello\'' is 'hello'
>
>
> I don't know if it's still in print, but a good basic book for
> explaining how the shell works is "The UNIX System" by S.R. Bourne
> (the same Steve Bourne for whom bash is named). Published 1983 by
> Addison-Wesley.
>
> Similar information can be found in the various Unix FAQs, and probably
> in some of the Linux Doc Project stuff.
>
> IMO, the best way of learning this stuff is to play with it
> interactively.
>
> craig
>
Have a good one,
--Rick
rickya@siservices.net
--
TO UNSUBSCRIBE FROM THIS MAILING LIST: e-mail the word "unsubscribe" to
debian-user-request@lists.debian.org .
Trouble? e-mail to templin@bucknell.edu .
Reply to: