Noel: Thanks for the heads-up on glob. It didn't occur to me to look in
manual section 8.
On Tue, Oct 6, 2020 at 7:11 PM George Michaelson <ggm(a)algebras.org> wrote:
globbing was the application of specific syntax markers to concepts,
Certainly. But I think the specific meanings of "*" to mean "any number
of
any characters" and "?" to mean "any character" do not go back
further than
1964.
Multics had support for * and ?, but I don't know when that was added or if
it was there from the beginning. Multics filenames, unlike DEC ones, allow
multiple dots, which are treated specially by these characters: neither ?
nor * can match a dot, but ** can. So perhaps they got into Unix from
Multics after all. Stratus VOS is another direct descendant of Multics,
but I don't know if it has globs.
Windows avoids quotation by blocking any of < > " : | ? * from appearing in
pathnames (/ and \ mean the same thing to the kernel, but not to the shell
or to the GUI file picker). In addition, non-disk device names cannot
appear as part of a filename either before or after the dot: nul.c and
c.nul, for example, are illegal because nul: is a device name, and you can
use \dev\nul to reference the null device even though \dev does not exist.
I think set noglob; <do things>; set glob is often under-appreciated.
I found the absence of set nullglob (which causes *.foo to expand to
nothing if it matches no files) on Solaris 8 very irritating. It's still
not part of Posix sh, though bash has it. I wrote some wrappers around cp
and mv that looked for * and ? in the arguments (indicating no files) and
removed those arguments; if no arguments were left after that, they exited
with 0. Thus "safecp *.bak ../backup" would silently succeed if there were
no .bak files.
John Cowan
http://vrici.lojban.org/~cowan cowan(a)ccil.org
I come from under the hill, and under the hills and over the hills my paths
led. And through the air. I am he that walks unseen. I am the clue-finder,
the web-cutter, the stinging fly. I was chosen for the lucky number.
--Bilbo