this post was submitted on 15 Sep 2025
355 points (98.4% liked)

Linux

59134 readers
643 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 6 years ago
MODERATORS
 

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?

you are viewing a single comment's thread
view the rest of the comments
[–] bastion@feddit.nl 10 points 1 month ago* (last edited 1 month ago) (8 children)

I like nushell, but I love xonsh. Xonsh is the bastard love child of Python and Bash.

it can be thought of as:

  • try this statement in Python
  • if there's an exception, try it in bash.

Now, that's not a very accurate description, because the reality is more nuanced, but it allows for things like:

for file in !(find | grep -i '[.]mp3^'):
    file = Path(file.strip())
    if file != Path('.') and file != file.with_suffix('.mp3'):
    mv @(file) @(file.with_suffix('.mp3'))

Now, there are things in there I wouldn't bother with normally - like, rather than using mv, I'd just use file.rename(), but the snippet shows a couple of the tools for interaction between xonsh and sh.

  • !(foo) - if writing python, execute foo, and return lines
  • @(foo) - if writing sh, substitute with the value of the foo variable.

But, either a line is treated in a pyhony way, or in a shelly way - and if a line is shelly, you can reference Python variables or expressions via @(), and if it's Pythony, you can execute shell code with !() or $(), returning the lines or the exact value, respectively.

Granted, I love python and like shell well enough, and chimeras are my jam, so go figure.

[–] priapus@piefed.social 1 points 1 month ago (1 children)

Xonsh is also a really cool option. If I used Python more regularly and was more comfortable using it without having to look stuff up, I'd probably use it over Nushell.

[–] bastion@feddit.nl 1 points 1 month ago

Yeah, I think if I wasn't familiar with Python, it'd be nushell all the way.

load more comments (6 replies)