4 ms·
I expect you mean NUL (ASCII 0) - but that's typically not a good choice, because POSIX decrees it invalid, along with '/'. But anything else is fair game, sure
by to3m 9y ago
I expect you mean NUL (ASCII 0) - but that's typically not a good choice, because POSIX decrees it invalid, along with '/'. But anything else is fair game, sure. Handling every Unicode char might be a pain, but that's the filing system's job, not yours!
Most programming languages manage to get this right. You have a quoting syntax with an escape character that lets you express the quotes, the escape character, and any arbitrary character (as a byte sequence, as a Unicode codepoint in some encoding, etc.) as well. Now you can do everything. Why not do this?
I'm not going to say this won't be a pain if you decide to write out every file name possible, because it will be, inevitably. But you can supply alternative syntaxes by way of more convenient (if limiting) shorthand - Python has its r"""...""" notation, for example, allowing you to express the majority of interesting strings without needing to escape anything.
You might argue that I've just punted the problem on to the text editor and the filing system. You'd be quite right.
- gonvaled 9y agoDepends very much on your programming environment: on Python I don"t care, but when doing bash scripting or makefiles (very often) I very much care. I have recently decided to stop using $ in passwords (defined by me) for that same reason: of course they are valid char, but they are such a big pain to support in usual contexts that it is simply not worth it.
- gonvaled 9y agoAnd regarding slashes: are you bemused that unix does not support them in filenames? (Thanks for correcting the nul reference)
- to3m 9y agoNo, not really - I have no particular opinion about what POSIX chooses to support or not. But I'm going to go back to my original point. What I do have an opinion about is how reasonable it is for tools not to support a character that is valid in file names, when that character is straightforward to support with everyday, well known syntax. And when that character is ' ', the standard English word separator, as straightforwardly supported by approximately ever kind of quoting or escaping syntax ever, my opinion about a lack of support is: it's crap.
- gonvaled 9y agoPlease write a makefile that uses an environment variable as a mysql password to connect to a mysql server and perform an arbitrary administrative task. Now do the same, assuming that the password can have a dollar in it. You can do it. It is not as easy, readable or maintanable. Avoid it if you can.
- ibotty 9y agoNot a problem if you use a my.cnf file...
- gonvaled 9y agoAnd I need that because of ... a dollar! Extra complication to avoid if possible.
- flukus 9y agoWhy do it from a makefile instead of a script called by the makefile? This plays well to the strengths of both.
- gonvaled 9y agoJust because of the dollar? Exactly my point.
- flukus 9y agoNo, not just because of the dollar. Because it's easier to test in isolation and allows you to use things like here docs which are useful for dealing with sql.
- gonvaled 9y ago? Somehow we started with a single dollar in a string, and now I am dealing with sql, here docs, and TDD? There is a place for everything in life: for small helper makefiles, which I write simply to support me in my workflow and even to remember some interesting commands that I need to run for a certain project, I can assure you that making some simple assumptions helps me staying halfway sane.