I’ve been trying nushell and words fail me. It’s like it was made for actual humans to use! 🤯 🤯 🤯
It even repeats the column headers at the end of the table if the output takes more than your screen…
Trying to think of how to do the same thing with awk/grep/sort/whatever is giving me a headache. Actually just thinking about awk is giving me a headache. I think I might be allergic.
I’m really curious, what’s your favorite shell? Have you tried other shells than your distro’s default one? Are you an awk wizard or do you run away very fast whenever it’s mentioned?
I’ve been using fish (with starship for prompt) for like a year I think, after having had a self-built zsh setup for … I don’t know how long.
I’m capable of using
awkbut in a very simple way; I generally prefer being able to usejq. IMO both awk and perl are sort of remnants of the age before JSON became the standard text-based structured data format. We used to have to write a lot of dinky little regex-based parsers in Perl to extract data. These days we likely get JSON and can operate on actual data structures.I tried
nuvery briefly but I’m just too used to POSIX-ish shells to bother switching to another model. For scripting I’ll usewithset -eou pipefailbut very quickly switch to Python if it looks like it’s going to have any sort of serious logic.My impression is that there’s likely more of us that’d like a less wibbly-wobbly, better shell language for scripting purposes, but that efforts into designing such a language very quickly goes in the direction of nu and oil and whatnot.
That’s interesting I hadn’t thought about the JSON angle! Do you mean that you can actually use
jqon regular command outputs likels -l?Oil is an interesting project and the backward compatibility with bash is very neat! I don’t see myself using it though, since it’s syntax is very close to bash on purpose I’d probably get oil syntax and bash syntax all mixed up in my head and forget which is which… So I went with nushell because it doesn’t look anything like bash. If you know python what do you think about xonsh? I
That’s interesting I hadn’t thought about the JSON angle! Do you mean that you can actually use
jqon regular command outputs likels -l?No, you need to be using a tool which has json output as an option. These are becoming more common, but I think still rare among the GNU coreutils.
lsoutput especially is unparseable, as in, there are tons of resources telling people not to do it because it’s pretty much guaranteed to break.
I prefer getting comfortable with bash, because it’s everywhere and I need it for work anyway (no fancy shells in remote VMs). But you can customize bash a lot to give more colored feedback or even customize the shortcuts with readline. Another one is pwsh (powershell) because it’s by default in Windows machines that (sadly) I sometimes have to use as VMs too. But you can also install it in linux since it’s now open source.
But if I wanted to experiment personally I’d go for xonsh, it’s a python-based one. So you have all the tools and power of python with terminal convenience.
Yeah if you need to work on machines with bash it makes sense to stick with it. Sorry you have to work on Windows… how is powershell compared to bash?
I don’t know python but xonsh seems really cool, especially since like nushell it works on both linux and windows so you don’t have to bother about OS specific syntax
powershell, in concept, is pretty powerful since it’s integrated with C# and allows dealing with complex data structures as objects too, similar to nushell (though it does not “pretty-print” everything the way nushell does, at least by default).
But in practice, since I don’t use it as much I never really get used to it and I’m constantly checking how to do things… I’m too used to posix tools and I often end up bringing over a portable subset of msys2, cygwin or similar whenever possible, just so I can use grep, sed, sort, uniq, curl, etc in Windows ^^U …however, for scripts where you have to deal with structured data it’s superior since it has builtin methods for that.
Fish is great.
Sorry I am vegan
Vegans can use fish, as long as they don’t bash
Nushell looks cool but I prefer to stick with the POSIXes so that I know my scripts will always work and syntax always does what I expect it to. I use zsh as a daily driver, and put up with various bashes, ashes, dashes, that come pre-installed with systems I won’t be using loads (e.g. temporary vms).
Always confuses me when people say this. You can use multiple different shells / scripting languages, just as you can use multiple programming languages.
I know that. I just don’t have a use case for alternative shells. Zsh works fine for me and I know how it works. I don’t have problems that need fixing, so I don’t need to take the time to learn a new, incompatible shell.
If you want your scripts to “always work” you’ll need to go with the most common/standard language, because the environments you work on might not be able to use all of those languages.
I mean if all your scripts are fully general purpose. That just seems really weird to me. I don’t need to run my yt-dlp scripts on the computational clusters I work on.
Moreover, none of this applies to the interactive use of the shell.
It’s not only clusters… I have my shell configuration even in my Android phone, where I often connect to by ssh. And also in my Kobo, and in my small portable console running Knulli.
In my case, my shell configuration is structured in some folders where I can add config specific to each location while still sharing the same base.
Maybe not everything is general, but the things that are general and useful become ingrained in a way that it becomes annoying when you don’t have them. Like specific shortcuts for backwards history search, or even some readline movement shortcuts that apparently are not standard everywhere… or jumping to most ‘frecent’ directory based on a pattern like z does.
If you don’t mind that those scripts not always work and you have the time to maintain 2 separate sets of configuration and initialization scripts, and aliases, etc. then it’s fine.
those scripts not always work
This feels like ragebait. I have multiple devices, use fish whenever that can be installed and zsh/bash when not, and have none of these issues.
EDIT:
or some methods to jump to most recent directory like z.
Manually downloading the same shell scripts on every machine is just doing what the package manager is supposed to do for you. I did this once to get some rust utils like eza to get them to work without sudo. It’s terrible.
Manually downloading the same shell scripts on every machine is just doing what the package manager is supposed to do for you
If you have a package manager available, and what you need is available there, sure. My Synology NAS, my Knulli, my cygwin installs in Windows, my Android device… they are not so easy to have custom shells in (does fish even have a Windows port?).
I rarely have to manually copy, in many of those environments you can at least
git clone, or use existing syncing mechanisms. In the ones that don’t even have that… well, at least copying the config works, I just scp it, not a big deal, it’s not like I have to do that so often… I could even script it to make it automatic if it ever became a problem.Also, note that I do not just use things like
zstraight away… my custom configuration automatically callszas a fallback when I mistype a directory withcd(or when I intentionally usecdwhile in a far/wrong location just so I can reach faster/easier)… I have a lot of things customized, the package install would only be the first step.So you’re willing to do a lot of manual package managing, in general put a lot of work into optimizing your workflow, adjusting to different package availability, adjusting to different operating systems…
…but not writing two different configs?
That is your prerogative but you’re not convincing me. Though I don’t think I’ll be convincing you either.
I have separate configs/aliases/etc for most of my machines just because, well, they are different machines with different hardware, software, data, operating systems and purposes. Even for those (most) that I can easily install fish on.
I don’t really mind having a non-POSIX shell since it doesn’t prevent bash scripts from working, but I get that if you want portability bash is still best since it’ll work mostly anywhere.
I love NuShell but it is annoying when using LLMs to generate troubleshooting code.
I used nushell for a good 6 months, it was nice having structured data, but the syntax difference to bash which I use for my day job was just too jarring to stick with.
Fish was (for me) the right balance of nice syntactic sugar and being able to reasonably expect a bash idiom will work.
I’m an absolute Linux tard, so it’s hilarious to me trying to read and understand most of these comments
Everyone was a newbie at one point
(…) 'cause it was quarter part eleven
on a Saturday in 1999
🎶🎶
To answer your questions, I work on the Bash, because it’s what’s largely used at work and I don’t have the nerve to constantly make the switch in my head. I have tried nushell for a few minutes a few months ago, and I think it might actually be great as a human interface, but maybe not so much for scripting, idk.
Until you discover nushell’s (lack of) quoting rules
Can you elaborate?
Last I checked, there was no rigorous system for how quoting worked, such as how to escape a quote inside a string.
Nushell is great, I should use it again. Gave up on it after I wrote a thing for converting fish completions to their autocomplete system for it and their internal autocomplete didn’t perform anywhere nearly adequately.
deleted by creator
I’ve used nushell for several months, and it really is an amazing shell
It feels more like an actual language than arcane runes, and I can easily makes chains and pipelines and things that would be difficult in bash
Additionally, it makes a pretty good scripting language
So you drive daily with nushell and then script in bash for portability?
Sounds not bad actually…
deleted by creator
Formatting doesn’t like my input for some reason so I am just going to shorten it to
ls -ltc | grep '>'.deleted by creator








