this post was submitted on 16 Jul 2023
183 points (97.4% liked)

linuxmasterrace

2166 readers
1 users here now

A community for Linux enthusiasts.

May your htop stats be low and your beard grow long

Welcome to [email protected] former r/linuxmasterrace members and existing Lemmyverse citizens: Feel free to join the newly created [email protected] community.

Let’s make the full transition to the decentralized Fediverse!

founded 2 years ago
MODERATORS
 

I’m moving my posts from Reddit to Lemmy before delete them.

This post is from 2020-09-03.

top 50 comments
sorted by: hot top controversial new old
[–] [email protected] 21 points 2 years ago (6 children)

Okay, you guys get the once in a liftetime chance to convince me that Bash is not the way to go. I'll eagerly await your proposals.

[–] [email protected] 27 points 2 years ago* (last edited 2 years ago) (5 children)

Zsh, an extended version of the Bourne Shell (sh), offers a plethora of compelling reasons why it surpasses Bash in terms of functionality and customization.

  • Plugin and theme support: Zsh boasts a wide range of plugin frameworks and themes, allowing users to enhance their shell experience and tailor it to their specific needs. The popular Oh-My-Zsh framework is a testament to the vibrant plugin ecosystem available for Zsh.

  • Automatic cd: Zsh simplifies directory navigation by enabling users to change directories simply by typing the name of the desired directory. This feature eliminates the need to type the "cd" command explicitly, saving time and keystrokes.

  • Recursive path expansion: Zsh offers the convenience of shorthand path expansion, allowing users to expand a partial path to its full form recursively. This feature proves particularly useful when dealing with nested directory structures.

  • Spelling correction and approximate completion: Zsh's intelligent auto-correction feature automatically fixes minor typos in directory names, ensuring smooth and error-free command execution. Additionally, Zsh's approximate completion feature suggests potential completions based on the entered command, further streamlining the workflow.

  • Syntax highlighting: Zsh goes beyond mere text display by providing syntax highlighting for command lines, making complex commands more readable and easier to comprehend. This feature enhances code visibility and reduces the likelihood of syntax errors.

  • Advanced scripting capabilities: Zsh offers a more powerful scripting language compared to Bash, enabling users to create intricate and sophisticated shell scripts. This flexibility opens up possibilities for automation and complex task execution.

  • Enhanced customization: Zsh provides users with extensive customization options, allowing them to personalize their shell environment to suit their preferences. From prompt customization to theme selection, Zsh empowers users to create a shell experience that aligns with their workflow and aesthetic choices.

While Zsh undeniably offers a wealth of advantages, it is worth noting that it has a steeper learning curve compared to Bash, especially for users unfamiliar with advanced shell features. Additionally, Zsh consumes more memory due to its more complex data structures and advanced functionality.

[–] [email protected] 5 points 2 years ago (3 children)

Automatic cd: Zsh simplifies directory navigation by enabling users to change directories simply by typing the name of the desired directory. This feature eliminates the need to type the “cd” command explicitly, saving time and keystrokes.

What if there happens to be a command with the same name?

[–] [email protected] 6 points 2 years ago (1 children)

command goes first

order is shell built in > path > autocd

[–] [email protected] 9 points 2 years ago (2 children)

Then you're likely to enter a command by accident. I would consider that a dangerous misfeature and look to turn it off.

[–] [email protected] 4 points 2 years ago (1 children)

not really tab complete puts a / at the end of autocd directories

[–] [email protected] 4 points 2 years ago (1 children)

Can you not type in the name of the hazardous folder yourself? I'm envisioning trying to autocd into a folder named reboot or something.

[–] [email protected] 1 points 2 years ago (1 children)

then you would type reboot/

[–] [email protected] 1 points 2 years ago* (last edited 2 years ago) (1 children)

Does autocd not work without a slash at the end?

[–] [email protected] 2 points 2 years ago

it does but if you had a file called reboot tab complete would complete the reboot command and not put the slash thwre, adding the slash specifies that it's a directory

[–] [email protected] 3 points 2 years ago

I've got syntax highlighting enabked, so I always notice the different color when I type a commnand.

[–] [email protected] 3 points 2 years ago (1 children)

Don't name your directories "rm" or "fdisk" problems solved

[–] [email protected] 2 points 2 years ago

Until I forget about some command or another, and accidentally give a folder the same name.

[–] [email protected] 2 points 2 years ago

Don't name your directories "rm" or "fdisk" problems solved

[–] [email protected] 4 points 2 years ago

Some of those options exist in Bash too, but need to be enabled in your profile: https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html. Bash is also more like to be available on random machines that you have access to. Lastly, if you’re working a lot with Bash scripts in your (work) environment you might feel more at home using Bash in interactive mode too.

Those are just some counter arguments for the sake of completeness. I think zsh is great, even though I personally don’t use it (yet).

[–] [email protected] 3 points 2 years ago (1 children)

OK GPT, now give me 7 reasons why Bash is better than zsh, please!

[–] [email protected] 2 points 2 years ago

Yeah, from the first line

Zsh, an extended version of the Bourne Shell (sh)

This screams AI-generated.

load more comments (1 replies)
[–] [email protected] 6 points 2 years ago* (last edited 2 years ago) (1 children)

There are two massive points no one has mentioned yet.

  • Quoting every expansion isn't necessary in Zsh. Parameters don't split or glob by default.
  • $array actually expands to every element in an array.

Compare this between Bash and Zsh:

a=('/* hello */' 'world!' '  ')
printf '"%s" ' $a
[–] [email protected] 4 points 2 years ago* (last edited 2 years ago) (1 children)

$array actually expands to every element in an array.

Very convenient. But ~every shell script is written in bash or POSIX(y) sh. When I need to write shell scripts I begin with busybox sh compability. If it turns out to be too complex, I'll convert to bash. This is because if I ever would publish the script it would have better changes to be accepted as a PR for example. Yes. Bash is a mess. I don't even like it that much. It's okay. But it's more standard then zsh. Although I've seen the tides turn on some occasions, like macOS.

Maybe some day I'll give zsh a second chance.

[–] [email protected] 2 points 2 years ago (1 children)

I used to write Bash more than anything, but now the things I write are either simple enough to keep POSIX or complex enough that I miss the extra niceties Zsh provides.

[–] [email protected] 1 points 2 years ago

but now the things I write are either simple enough to keep POSIX or complex enough that I miss the extra niceties Zsh provides.

Well said!

[–] [email protected] 4 points 2 years ago

Bash is the way, zsh if you are lazy.

[–] [email protected] 1 points 2 years ago

This is me but for fish shell.

load more comments (2 replies)
[–] [email protected] 13 points 2 years ago (8 children)

Try fish with the tide plugin and the fzf plugin. I can never go back to anything else.

[–] [email protected] 2 points 2 years ago (1 children)

I love fish, only it annoys me, if I want to run a bash script.

[–] [email protected] 2 points 2 years ago (1 children)

Why is that? You can still use bash to interpret your bash scripts. Where does it annoy you?

[–] [email protected] 1 points 2 years ago (1 children)

I have to switch to bash first, and wonder days later, why I can't find it (obviously) in my fish history.

[–] [email protected] 6 points 2 years ago* (last edited 2 years ago) (2 children)

I mean, doesn’t the script have a hash bang pointing to the bash interpreter?

#!/usr/bin/bash

Or you can just run it like:

bash script.sh
[–] [email protected] 5 points 2 years ago (1 children)

#!/usr/bin/env bash for compability. 😉

For example on my system bash is in /bin.

[–] [email protected] 5 points 2 years ago

Right, of course. I already do that with Python scripts, but with bash old habits die hard, I guess. :)

[–] [email protected] 2 points 2 years ago (1 children)

I know, well the lazyness is strong in me. Copy and paste.

[–] [email protected] 5 points 2 years ago* (last edited 2 years ago)

Huh. It’s the first thing I write in any script. :) It actually saves me time.

[–] [email protected] 1 points 2 years ago

Haven't tried fish yet but fzf is a godsend.

load more comments (6 replies)
[–] [email protected] 7 points 2 years ago (4 children)

Which distro ships with zsh?

[–] [email protected] 1 points 2 years ago

I believe it was Manjaro Bspwm which doesn't exist for quite some time.

[–] [email protected] 1 points 2 years ago
[–] [email protected] 1 points 2 years ago

Not a distro but macOS does ship zsh but default nowdays.

[–] [email protected] 4 points 2 years ago

i prefer fish

[–] [email protected] 2 points 2 years ago (1 children)

So what exactly is so great about it?

[–] [email protected] 3 points 2 years ago

From my point of view, it's great because I'm lazy.

[–] UntouchedWagons 1 points 2 years ago (1 children)

I wish that oh-my-zsh could be installed at the host level rather than in ~/

[–] [email protected] 1 points 2 years ago

On my zsh is bloat! Embrace source /path/to/plugin

[–] [email protected] 1 points 2 years ago (1 children)

What tool are u using for transferring your posts from reddit? Or is this done manual?

[–] [email protected] 7 points 2 years ago

Automation can get you blocked from posting apparently, also I didn't have that many posts so I handpicked them.

load more comments
view more: next ›