We've seen earlier posts of this. It's a shell that works on the premise that data is tabular. It's pretty neat. I'm not sure I can ever leave the traditional Unix shells behind though. I'm much more interested in a shell integrated with jq or something like that, but the reality is that Unix commands' input and output data types are not very well described or strongly typed, and that makes anything much better than the shell's we've got difficult to deal with.<p>I wonder if we could have a standard by which a command could indicate what input and output data types it consumes/produces for a given command-line, as well as what sorts of side-effects a command-line might have... Then we could have shells implement some type system. Where you expect XML you can use XPath, where you expect JSON you can use jq, and so on, and the shell could display tabulated output where possible, and not where not.
I've been using nu as my main shell for... a month now? Happy to answer any questions.<p>I am not a heavy shell user, (I do almost everything in a terminal or a web browser, I just don't use shell-specific features a ton) and there's been some adjustment, but I like it!
I've been meaning to learn Nushell. Its key selling point, for me, is that it has ONE way of sorting / filtering columns, instead of different ways for <i>ls</i> versus <i>cp</i> versus <i>du</i>, etc.
This place is as good a place for this link as any: <a href="https://tkatchev.bitbucket.io/tab/" rel="nofollow">https://tkatchev.bitbucket.io/tab/</a><p>Enjoy. :)<p>P.S., Not spam, I'm the author.
One thing I think the nushell guys should include in their "about" page is an answer to the question, "how is this different from PowerShell?"<p>The analogy to PowerShell is unavoidable -- they even make it themselves in the docs. I'm totally willing to believe there are important differences, but I wish they'd highlight them straight off the bat.
It looks like this is trying to do what powershell does pretty well. Pushing tabular data through pipes and filtering on columns and rows and such. It helps that all the commands in powershell outputs tabular data. Has anyone tried using powershell on linux?
This looks good in theory, but in practice many of its examples are cheating: `ps`, `ls`, etc. are something like shell builtins, so your memorized `ps` arguments won't work with this, for example.
I’ve been thinking about what I’d want in a new shell for a little while. Suffice it to say: not this.<p>This decides that the problem is mostly the unix commands not working together the way the author would like but I’m already pretty happy with the way unix commands work, I know how to use awk and I have a bunch of tools for different kinds of structured data.<p>So instead I will go off topic and describe the new shell that I would actually like to see:<p>A shell is (at least as far as I’m concerned) a program for running other programs, and connecting them together. I would not constrain myself to running inside a fixed grid character terminal if I could help it.<p>The thing I would focus on is interactivity and modifiability of commands. Most of my time at a command line is doing one of two things:<p>1. Typing simple commands to e.g. start systems or query their state or otherwise poke them. Here command has a more traditional meaning than “invocation of a program which may do arbitrary things”.<p>2. Piecing together pipelines to extract some data and do things with it (first I write a command to get some data and probably pipe it into less, then I try writing a bit of sed on the end and piping that into less, then some awk, and so on until I have the pipeline I want)<p>For 1, I would want things to mostly work like bash.<p>For 2, I would want something more. Instead of using regular pipes, add an intermediate program (or use the shell). At first it can just hold onto the input as well as sending it to the output. That would make it easy to inspect what is going into a pipe. I guess it may eventually want to stop building memory usage so maybe it could have a large ring buffer instead. I would also like to be able to get some pv like behaviour to see progress. This could also be switched into something with lower overhead. I think it would all be reasonably cheap with splice, tee, and vmsplice (I’m not interested in support for non Linux platforms).<p>I’d want the ability to e.g. write my command with a trailing pipe, see some output, and then interactively add more stages to the pipeline<p>Ideally, I’d like an interactive awk-like tool where I can see the effect of my partly-written command as I write it.<p>I’d want ssh to be treated in a first-class reasonably transparent way where I don’t need to think about complicated quoting rules. But maybe somehow efficiently trying to avoid too much bandwidth or remote computation.<p>I think I would want it to mostly run inside emacs but able to spawn a fast terminal emulator automatically as necessary for large files or long lines (you may be surprised to know that a shell in emacs tends to give you much lower typing latency than typical terminal emulators because Mac’s handles its own rendering and line editing whereas a terminal emulator must send the key to bash through a pty which then sends back some terminal control codes which must be interpreted before the display may be rendered.