5 ms·
Version? Not sure what you mean. Some other way to interact with the kernel, besides a "shell"? Quicker, shorter, terser sounds good to me, whatever it is.
by a3d6g2f7 14y ago
Version? Not sure what you mean. Some other way to interact with the kernel, besides a "shell"?
Quicker, shorter, terser sounds good to me, whatever it is.
Or maybe you mean if he wrote his own shell?
- excuse-me 14y ago< humor explain=verbose > The parent post said that Linus' writing was extremely terse and "to the point" and what would happen if Linux wrote the userspace. The joke was that Unix's typical user interface, the shell, isn't exactly overflowing with unecessary verbose "fluff"
- comex 14y agoanti-humor mode: It's terse, but not necessarily to the point. Things like "| awk '{print $1}'" or "find . -exec sh -c 'fds' \;" or ""$(echo "$x" | sed 's/a/b/')"" are a lot of characters for their respective purposes; a modern shell adhering to similar principles could do better.
- a3d6g2f7 14y agoI was tempted to say something similar. But this is a thread about Linus. As for your use of find, I rarely ever use find for anything more than printing a recursive dir listing. I always gravitate toward different approaches for doing the other things it can do. Syntax is probably one of the reasons. I'm just not motivated to learn find's idiosyncratic syntax. Why not just make find use C-like syntax as does awk? If I was to redesign UNIX, every utility would, where possible, use a C-like syntax. Because then the user would naturally be learning a little bit about C right from the start. Have you ever tried the k language? If you like terse, it is a pleasure to use. Generally, I like sed as an example of a terse, compact language (and sed seems a logical extension of ed, not something wildly and arbitrarily different), except when it's necessary to use -e to separate commands. Being able to use semicolons to separate commands allows more density. I have always posited the verbosity (and the complexity) of the shell comes from the need for quoting and escaping. If you could avoid those two necessities, the command line could be more concise, and readable.
- comex 14y agoI don't like C-like syntax in Unix tools, as the shell isn't C-like, and it's not clear that it's possible to make it C-like without sacrificing writing speed (lots of parentheses are hard to wrangle interactively); and awk is nice and efficient for some things the shell can't easily do, but it's its own world with a different set of variables and overlapping functionality, and you can't easily stick a pipe in the middle of an awk program. My ideal redesign would take the shell, make the syntax for iteration, pattern matching, arrays, etc. much simpler (integrating the functionality of awk), and (most importantly?) unify the ways various commands expect to receive data and take arguments representing parts of that data (fields, lines)... while still being the shell. Dunno about sed - once I wrote a Brainfuck interpreter in it for fun, but I see it as a Turing tarpit - for things more complicated than "/a/s/a/b/" I prefer awk, though I wish awk had the succinct "s/a/b/", and I wish either of them had a quick way to extract a capture group from a match. (vi was a teenager when I was born, so I personally don't care about adhering to ed.) I've never tried any APL-like languages and am therefore somewhat scared of them... but most of the programs I write outside of the interactive shell are non-throwaway and/or the kind of glue code that uses lots of random system functions, which decreases the value of extreme terseness. (But I prefer anything over Java and dislike the inflexibility of languages without macros, so perhaps it's only logical for me to go ahead and learn an array language.)
- a3d6g2f7 14y agoI too write mostly throwaway stuff. Obviously, terse languages are better suited for that than others. Java makes me cringe. But my understanding is Java programmers use IDE's with autocomplete. They don't do much typing. As for your pipe comment, are you a whiz with passing file descriptors? What do you think about chaining programs together in this way? Would that solve your pipe needs? Maybe you could accomplish what you want using lex? The general paradigm is pattern-action, just like awk. Lots of flexibility in what you can create. You could create your own interpreter. I like writing simple filters. I guess I have succombed to the UNIX voodoo. I think of everything as a stream of text. I'd be interested to take a crack at your "capture group" problem, if you can give me an example of what it looks like.