On Fri, Jan 08, 2021 at 11:55:38AM -0500, D. Hugh Redelmeier via talk wrote:
| From: Lennart Sorensen via talk <talk@gtalug.org>
| : is special in filenames if it is before the first directory separator | for many programs
That's not UNIX, that's MS-DOS.
I said for many programs, not for unix in general.
In UNIX, special interpretation is done by the shell.
| since it might be host:filepath
The ssh family of commands introduced this, and for that it is documented in those commands.
| evince for example allows ftp://host/file so it clearly cares about : | in the filename before any slash.
Now that I look, it is partially documented in evince(1).
It says that the operand is a filename. But in the description of a filename, it includes a remote filename. It doesn't say what that is, except to give an FTP example "ftp://adobe.com/sample.pdf".
Well it's man page is about typical for a gnu project. Almost useless. :) Unfortunately it doesn't have an info document and the online docs are not much better.
I infer: it can be a filename or a URL. It is assumed to be a URL if it starts with letters and then a colon. If something happens to be a filename that matches that pattern, tough luck.
Yeah that seems to be the state of it. No fall back to plain filename if it fails to be a known http or ftp protocol. Maybe they figure that since you can't use : in a filename on windows, no one would do it anywhere.
Since, in practice, URLs seem to always contain "/", and filenames do not, that would be a better way to distinguish them.
somewhere/myfile.txt sure looks like it has a / in it.
| That's why using ./ in front works. Otherwise you have to escape the : | with a \ or perhaps even two of them depending who strips it.
No, \ does not work for that purpose (my experiments are in this thread).
Maybe \\ so the shell can steal one and evince get the other? Hmm, nope tried and doesn't work. ./ on the other hand does seem to work. -- Len Sorensen