sh scripting question
freebsd at edvax.de
Fri Oct 16 13:19:56 UTC 2020
On Fri, 16 Oct 2020 06:32:11 +0200, Ralf Mardorf wrote:
> On Thu, 15 Oct 2020 23:14:13 -0400, Kurt Hackenberg wrote:
> >On 2020-10-15 23:05, Bob Proulx wrote:
> >> Oh you are tormenting us now. :-) There are some subtle issues
> >> here.
> >Maybe a shell is the wrong tool.
> Exactly! Scripts are useful to handle tasks, such as dealing with
> reasonable file names.
There is a significant problem with this statement (even though
I can understand its intention): At what point does a filename
become "not reasonable"?
Stupid people do stupid things. Stupidly programmed programs
do stupid things to filenames, too. Scripts usually do not
care. They typically (!) are not limited to a subset of valid
filenames, they work on _all_ filenames.
Just imagine you want to copy or delete a file, but the program
in question complains that you cannot do it with _this_ file
because its name is not reasonable... that would be a really
> A script should work around reasonable tricky
> file names, but at some point bothering with really freakish file names
> isn't worth the effort.
Depends. If your scope involves processing 1000+ files delivered
by your stupid coworkers, you will surely develop a script that
fights all the freakish things you will encounter by iterating
over those filenames. As I mentioned in my first reply, this is
absolutely possible, but not _trivial_ anymore. In my opinion,
the goal defines the amount of work you will put into it.
> Actually file names should be compatible with
> shell, if they are intended to be used with shell scripts.
There is a problem. Filenames are subject to restrictions.
The first level of restrictions is imposed by the filesystem.
It defines a maximum length as well as reserved characters,
such as "/" for the directory separator, and "." and ".." which
are handled in a specific way.
The second level of restrictions comes from the shell. It
includes, but is not limited to, using " " (space) as the
command and options separator, "-" as the options prefix,
and may contain many more, such as "*" or "?". While all
of them are valid within a filename, they probably _should_
not be in a filename.
If a file should have a name valid on other filesystems
which are not as generous as UFS, a third level of restrictions
will apply, originating from the limitations of the foreign
filesystem, and can even include "forbidden filenames"
such as "COM1:". :-)
> To some
> extent we could use shell scripts, to write little programs, that
> probably better should be written in a programming language. At some
> extent a programming language is required, a shell script can't do the
> job at all or at best it could do the job, but not with reasonable
Fully correct, but also suffers from the lack of a definition
of "reasonable" that works everywhere every time. :-)
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...
More information about the freebsd-questions