4 ms·
I like the ideas of Dune and Nu, which I think were trailblazed by powershell to a degree. The problems of pure *NIX pipe philosophy with text as the lingua fra
by hi-v-rocknroll 2y ago
I like the ideas of Dune and Nu, which I think were trailblazed by powershell to a degree. The problems of pure *NIX pipe philosophy with text as the lingua franca were persistent parsing problems and escaping. However, the problems of going to far in the way powershell went was it was too radical having to reimagine/replace/relearn almost everything, and generally more difficult to accomplish simple text manipulation. Nu at least maintains most of the *NIX shell UX. Maybe at some point in the future, we will reach parity to where there will fusion of the main DSLs, shells, and programming languages into a runtime interaction system that is somewhere between psql, Erlang shell, nu, and Squeak where there is programming language-OS parity obliterating the distinctions between programming languages, command shells, and DBMS shells. One can dream of a future where perhaps it will be possible to write a function, library, or program in any language one chooses and call it from any other shell or language without swig or ceremony.
- wodenokoto 2y ago> too radical having to reimagine/replace/relearn almost everything I switched to zsh because at the time I thought it had better autocomplete, but honestly I use it as I would bash. And I don't think it was worth it to change a little bit. To change shell I think the change _should_ be radical.
- idunnoman1222 2y agoBut it is bash…
- MrDrMcCoy 2y agoNot quite. It has some incompatible default settings, and is missing a small percentage of obscure bash features that I sometimes like to rely on. I'm sure I could do it all with zsh just fine, but it would be more work for me mentally.
- idunnoman1222 2y agoIncompatible with what? Which obscure features? I can’t actually name them either
- MrDrMcCoy 2y agoIt's been several years since I've dug into it and implemented the features I cared about for my personal shell in bash, but I recall that implementing a function to determine if an item exists in an array is significantly shorter and easier in bash 5 due to a feature that is not present in zsh. Probably too obscure for most people to care about, but at the time I was maintaining some rather preposterous bash glue code that relied on that, and compensating for zsh on some people's machines was tedious.
- abhinavk 2y agoTry fish or xonsh.
- kitd 2y agoA day or so there was this: https://news.ycombinator.com/item?id=41558081 https://news.ycombinator.com/item?id=41558081 Imagine your shell's model not being a command line console but a spreadsheet!
- actionfromafar 2y agoShades of Q, APL and other array languages, but visual by default. Maybe an APL spreadsheet-shell would fit the bill? :-D
- ghayes 2y agoI wonder if there's a good middle ground where unix commands could opt into a structured output, and until they exist, you could shim via `ls -la | shim "ls -la" |> ".modified_time"`. Then one day it could be `ls -la |> ".modified_time"` when structured data is supported natively by the program or command. I feel every project ends up dying since it needs to support every command all at once to be useful.
- actionfromafar 2y agoTo me the silly hang-up for PowerShell is none of that, but the strange syntax. I'd taken (even!) JavaScript-ish syntax over that.
- packetlost 2y ago> One can dream of a future where perhaps it will be possible to write a function, library, or program in any language one chooses and call it from any other shell or language without swig or ceremony I mean, there's a reason text was selected, it's the lowest common denominator. What you're asking for is universal FFI, which we already have that for the most part: C. The problem ultimately turns into runtime and resource management issues when crossing language boundaries, that is, unless you use OS primatives (pipes, sockets, shared memory, processes, etc.) and use message passing/pipelines exclusively. Then we're back to plaintext. There's a ton of non-printable characters in ASCII that are useful as delimiters for non-keyboard interactive programs that are largely vestigial. One could at least consider reusing them for delimiters and special control sequences for message passing, but without some sort of standardization it's limited in practical use.
- Brian_K_White 2y agoThe problem with those ascii values is editors don't display them and there are no keyboard keys to type them. The reason csv exists is because you can actually see and type all parts of it, on anything, any platform, any hardware, any software, any age, even a mechanical typewriter, even a pencil. That is not merely nice, it's essntially priceless, infinitely, incalculably valuable. The utility outweighs the problems as big as they absolutely are. Actually the same is true for json, yaml, xml...
- packetlost 2y ago> The problem with those ascii values is editors don't display them and there are no keyboard keys to type them. Did you read my post? Like, every word of it? Being able to type a control sequence is not particularly useful for ephemeral data in a message-passing between programs context. It's absolutely important for persistent, editable data. It seems like more of a feature to me to use these special characters for special contexts and not have escaping typeable characters be load-bearing. Further, my editor seems to print control characters just fine, though entering them would be a bit of a pain and the behavior is likely configurable.
- WorldMaker 2y ago
- chrisweekly 2y agoInteresting thought experiment. Reminds me of my cousin's project Xonsh https://xon.sh/ https://xon.sh/
- BeetleB 2y agoHappily been using xonsh for the last 6 years. Strongly recommend.
- Brian_K_White 2y agoThe problem of powershell is not merely thet it's new and different, and not merely that you have to learn a new and different way to get a given task done. Powershell makes some things possible or easier that weren't possible or easy, but only at the expense of making other things either impossible or at least vastly less practical, and all in all it's a bad trade off and a wrong set of priorities for the job it claims to fill, or at least for the job bash currently fills. It's not that bash is a gold standard, just that it's not fundamentally wrong.
- xelamonster 2y agoIt's also just absurdly verbose for a language intended mainly for manual input. I get annoyed having to type out `sudo systemctl` multiple times in a row, in Powershell every single command is at minimum that long. Which makes it way more difficult to memorize the commands too.
- Vegenoid 2y agoIMO, getting comfortable with and tuning autocomplete makes this a non-issue, and the benefit of the verbose commands is that they are very discoverable.
- rustyminnow 2y agoAny tips or links for tuning? zsh has a powerful engine and lots of great work out there, but when I've tried cooking my own it's all just too dense to get "comfortable" for long.
- WorldMaker 2y agoFor VS Code there is a good first-party PowerShell extension which helps a lot at writing scripts in the verbose style. There's experimental new IntelliSense available in the VS Code terminal: https://code.visualstudio.com/docs/terminal/shell-integration#_experimental-intellisense-for-powershell https://code.visualstudio.com/docs/terminal/shell-integratio...
- hnlmorg 2y agoThere are shells out there that sit between PowerShell / Nu and the old guards like Bash / Zsh. Ones that support data structures out-of-the-box (like any et al) but also work perfectly fine with existing UNIX commands (like Bash).
- sea-gold 2y agoHere is a nice list: https://github.com/oils-for-unix/oils/wiki/Alternative-Shells https://github.com/oils-for-unix/oils/wiki/Alternative-Shell...
- brazzledazzle 2y agoPowerShell seems to work fine calling a nix executable, unless I'm missing something: > ls -t *.js | head -n 10 | foreach { echo $_ ; Get-ChildItem $_ | fl Name, Length } product_original.js Name : product_original.js Length : 3353 gulpfile.js Name : gulpfile.js Length : 382
- Aurelius108 2y agoI was scripting on a windows machine which didn’t have WSL setup and decided to learn PowerShell. After a week or so of scripting with PowerShell and seeing how intuitive and robust the syntax is, something changed in my brain and I decided I never again wanted to deal with bash and its endless quirks and brittleness. It’s unnatural to have to wrap every variable access with “${}”, that unnatural key sequence always caused a break in my flow. Anyway I reach for Python sooner and really hunger for a clean, robust nix shell. I hope powershell has instilled this in many people and it drives adoption of something better
- dgan 2y agoI have tried to do the same, but i have opposite experience. I just can't grok the syntax, it always seems like a magician pulling out another "Haha! I bet you haven't seen this one coming !" Like, i can't even construct the abstract model of how it's supposed to work
- plaguuuuuu 2y agoI'm even a windows .NET developer and I also find Powershell extremely weird. I'm not sure what it is.
- brazzledazzle 2y agoWould you be able to provide an example? I'm not doubting your experience, just incredibly curious since I had the opposite experience.
- dgan 2y agoSure thing : $env::Path (the semicolon? so Path is not quoted here? But when I assign a value it's quoted?) Dir -r | %($_.Name.ToLower) ( what is this? statement dreamed by utterly deranged) They took us for absolute fools
- brazzledazzle 2y agoI mean you don't need to use the convenience aliases, or use even use it exactly that way. Here's it without any aliases: Get-ChildItem -Recurse | ForEach-Object { $PSItem.Name.ToLower() } This might be a better mix of both worlds: gci -r | foreach { $PSItem.Name.ToLower() }
- solidsnack9000 2y agoMaybe tabular data is a credible intermediate step. Many shell tools already export data in a tabular format.
- 082349872349872 2y ago> One can dream of a future where perhaps it will be possible to write a function, library, or program in any language one chooses and call it from any other shell or language without swig or ceremony. Was that not VMS?
- MrDrMcCoy 2y ago> One can dream of a future where perhaps it will be possible to write a function, library, or program in any language one chooses and call it from any other shell or language without swig or ceremony. That's a neat idea, and sounds like something that could be built on graalvm.