murex
dotfiles
Our great sponsors
murex | dotfiles | |
---|---|---|
54 | 3 | |
1,356 | 15 | |
- | - | |
9.7 | 7.4 | |
10 days ago | 3 months ago | |
Go | Shell | |
GNU General Public License v3.0 only | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
murex
- Xonsh: Python-powered, cross-platform, Unix-gazing shell
-
The Bun Shell
I agree. I’ve written about this before but this is what murex (1) does. It reimplements some of coreutils where there are benefits in doing so (eg sed, grep etc -like parsing of lists that are in formats other than flat lines of text. Such as JSON arrays)
Mutex does this by having these utilities named slightly different to their POSIX counterparts. So you can use all of the existing CLI tools completely but additionally have a bunch of new stuff too.
Far too many alt shells these days try to replace coreutils and that just creates friction in my opinion.
-
Jaq – A jq clone focused on correctness, speed, and simplicity
This is exactly what Murex shell does. It has lots of builtin tools for querying structured data (of varying formats) but also supports POSIX pipes for using existing tools like `jq` et al seamlessly too.
-
The Case for Nushell
Stable is a problem because a lot of these shells don’t offer any guarantees for breaking changes.
My own shell, https://github.com/lmorg/murex is committed to backwards compatibility but even here, there are occasional changes made that might break backwards compatibility. Though I do push back on such changes as much as possible, to the extent that most of my scripts from 5 years ago still run unmodified.
- FLaNK Stack Weekly for 20 June 2023
-
Nushell.sh ls – where size > 10mb – –sort-by modified
This is similar to how my shell works. It still just passes bytes around but additionally passes information about how those bytes could be interpreted. A schema if you will. So it works as cleanly with POSIX / GNU / et al tools as it does with fancy JSON, YAML, CSV and other document formats.
It basically sits somewhere between Powershell and Bash: typed pipelines like Powershell but without sacrificing familiarity with all the CLI commands you already use day in and day out.
https://github.com/lmorg/murex
As an aside, I’m about to drop a massive update in the next few days that will make the shell even more intuitive to use.
-
VanadiumOS: Portable, multi-user Unix-like OS
It's possible without any kernel changes. My shell (https://github.com/lmorg/murex) already supports doing that.
The way it works is it uses fd3 to communicate schema information so it can natively support all the existing "dumb" pipes without any modification but any new tools can be written to send objects instead (albeit byte encoded).
It's not as elegant as PowerShell sending .NET objects natively, but then PowerShell doesn't work with existing CLI tools natively (it needs wrapper scripts to convert them into PowerShell commands). Whereas my shell is fully backwards compatible while still supporting a suite of additional functionality too.
-
Shell Script Best Practices, from a decade of scripting things
> getting the shell quoting hell right
Shameless plug coming, it this has been a pain point for me too. I found the issue with quotes (in most languages, but particularly in Bash et al) is that the same character is used to close the quote as is used to open it.m. So in my own shell I added support to use parentheses as quotes in addition to the single and double quotation ASCII symbols. This then allows you to nest quotation marks.
https://murex.rocks/docs/parser/brace-quote.html
You also don’t need to worry about quoting variables as variables are expanded to an argv[] item rather than expanded out to a command line and then any spaces converted into new argv[]s (or in layman’s terms, variables behave like you’d expect variables to behave).
-
Enter a command to see help text for each arg
Some shells have this built in, like Fish and my own one ( https://murex.rocks ) too
- Everything you ever wanted to know about terminals(but were afraid to ask)
dotfiles
-
Ask HN: Can I see your cheatsheet?
Set a huuuuuuuge shell history https://github.com/craigjperry2/dotfiles/blob/aa77ddcbde63bf... then fzf ctrl+r bindings mean you can recall anything right where you need it.
If you’re going to do this then have an escape hatch for commands you don’t want memorised https://github.com/craigjperry2/dotfiles/blob/aa77ddcbde63bf...
-
Command Line Tools for Productive Programmers
https://github.com/craigjperry2/dotfiles/blob/main/dotfiles/...
Although for deeply nested targets where i already know what im after, i’ll just:
vim
The integration is pretty decent in vim, i have it configured to open a window overlay on n (requires neovim) https://github.com/craigjperry2/dotfiles/blob/main/dotfiles/...
That said, i don't find myself using that as much. Usually i'm in the shell when i invoke nnn - i might open a file in vim from nnn though.
In vim, i typically lean on fzf.vim more often - usually i know something about the next file i want to open so it just feels more direct.
What are some alternatives?
elvish - Powerful scripting language & Versatile interactive shell
nushell - A new type of shell
tidy-viewer - 📺(tv) Tidy Viewer is a cross-platform CLI csv pretty printer that uses column styling to maximize viewer enjoyment.
fx - Terminal JSON viewer & processor
xonsh - :shell: Python-powered, cross-platform, Unix-gazing shell.
jc - CLI tool and python library that converts the output of popular command-line tools, file-types, and common strings to JSON, YAML, or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts.
zsh-history-substring-search - 🐠 ZSH port of Fish history search (up arrow)
LIPS - Scheme based powerful lisp interpreter in JavaScript
ShellCheck - ShellCheck, a static analysis tool for shell scripts
oil - Oils is our upgrade path from bash to a better language and runtime. It's also for Python and JavaScript users who avoid shell!
ngs - Next Generation Shell (NGS)
nnn - n³ The unorthodox terminal file manager