Zsh is a shell designed for interactive use, although it is also a powerful scripting language.
Ranked in these QuestionsQuestion Ranking
Pro Powerful community-driven tools through oh-my-zsh
Pro Interactive autocompletion
Because zsh has paid relatively less attention to standards compliancy, it can have more abstruse interactive features one of which is interactive autocompletion.
Pro Autocomplete for options
Zsh intelligently determines if you are trying to complete a file path or an option, and pressing tab after typing
- will reliably bring up a list of options.
Pro Good bash compatibility
Things you've learned using bash will largely apply to zsh. Scripts written in bash will run with little to no modification.
Pro Shared histories
If you spend a lot of time in the terminal, most likely you will have several terminal windows open. Zsh has great support for command line histories. The history is unique and shared through all the different instances.
Pro Great install procedure
Zsh will take you through a procedure which is roughly 30 minutes in length before during install. Through this procedure it asks you to set different options and customize the shell the way you want it to. Most of these settings are also found in other shells, but to customize them you have to go dig configuration files while zsh allows you to do it in the beginning.
Pro Smart escaping
Zsh can determine the context of the command you're typing in and determine if it should escape characters if you're typing in a URI.
Pro Pipe output to a temporary file:
Some programs don't support loading from stdin, but ZSH can store outputs to a temporary file, example:
unzip =(curl http://example.com/someZipFile.zip)
Pro Recursive globbing
ls **/*.log for example is supported by ZSH.
Con Requires a lot of configuration to be used fully
Zsh requires a lot of tinkering with configuration files and downloading plugins in order to be able to do tasks which other shells may be able to do out of the box.
Con Not fully compatible with bash
Zsh is unfortunately not fully compatible with bash and bash scripts. So in order to have access to some features you have to stick with bash for scripting.