Working with Terminal

· by

Contents

I've just switched from Bash to ZSH because of oh-my-ZSH. I think this is just the right time to explain the words Shell, command line, Terminal, Bash and ZSH.

Terminal is an terminal emulator, sometimes also called a "terminal window". I work in a window environment (MATE) and I want to use command line tools within that environment. So I need a "terminal window":

Terminal Window with ZSH and Bash
Terminal Window with ZSH and Bash

ZSH and Bash are both Unix shells. A shell is a command line interpreter that provides a text-based user interface.

Command line describes the textual way you interact with the computer. When you're in a graphical user interface situation you interact by manipulating windows with your keyboard/mouse. When you're in a text-based user interface situation, you interact by entering commands in a line (hence command line).

Solarized Dark Theme

The Solarized Dark Theme is very good for command line. It can be installed like this as explained here:

$ git clone https://github.com/oz123/solarized-mate-terminal.git
$ cd solarized-mate-terminal
$ ./solarized-mate.sh dark

restart the terminal.

Oh-my-ZSH Installation

Oh-my-ZSH is a plugin for ZSH. I think this plugin is very good and makes a big difference to Bash. So when you look at the screenshots below, keep in mind that this is not a "plain vanilla" zsh.

  • Install "Oh-my-ZSH"
  • Install "powerline fonts" and change your Terminal font to one of them
  • Change your Terminal theme to "agnoster" by setting ZSH_THEME="agnoster" in ~/.zshrc
  • Set your terminal theme to "Solarized Dark" (description)
  • Make ZSH your default Shell in MATE Terminal (description) and eventually sudo chsh -s /usr/bin/zsh username

ZSH and Bash

Here are some differences. On the left side is zsh, on the right is bash:

I like the time command of bash more, but that's it. All other interactions are either almost the same or better in zsh. I especially like that zsh doesn't print everything again when you autocomplete with tab. And it also autocompletes when you make an capitalization error.

I also begin to like the Git-specific prompt indicators:

ZSH 'git add' indicator
ZSH 'git add' indicator

Some usefull tools

ack

You might already know grep. And if you've worked with it, you might already have typed something like the following:

grep --exclude-dir=".svn" "searchterm" *
grep -rI "onlytextSearchterm" .

An alternative to grep is ack (for Ubuntu users: ack-grep). See beyondgrep.com.

Windows

It seems to be possible to get something similar (the same?) for Windows. See OH MY CYGWIN.