Using Linux for development at first can be daunting, but with the right tools and applications, you can become more productive. Here are few tools and utilities(in no particular order) I use day to day.

tldr

If you are newcomer, you will love tldr.

From their website:

The TLDR pages are a community effort to simplify the beloved man pages with practical examples.

Chances are, you used the man command to read user manual about certain commands. These manuals are also lengthy; they provide a lot of information we don’t need at the moment. Finding solution by reading manual can also be complicated or cumbersome.

This is where tldr comes in. It simplifies command usage and gives us clear examples and info on certain command.

For example, if we ran tldr ls, we would get the output:


ls

  List directory contents.

  - List files one per line:
    ls -1

  - List all files, including hidden files:
    ls -a

  - Long format list (permissions, ownership, size and modification date) of all files:
    ls -la

  - Long format list with size displayed using human readable units (KB, MB, GB):
    ls -lh

  - Long format list sorted by size (descending):
    ls -lS

  - Long format list of all files, sorted by modification date (oldest first):
    ls -ltr

We can see clear usage of ls command. To install tldr, refer to their installation section.


Rule of thumb: If you are in a hurry, use tldr. If you look for something very specific in some command, use man.

StormSSH

StormSSH is a command line tool to manage your SSH connections. You can use it to add, delete or edit hosts you want to connect to. All configurations are written in current user SSH config file.

Usage:


Add a host(port is optional, defaults to 22):
  $ storm add my_vps1 dev@192.168.12.1:22
  - Success  my_vps1 added to your ssh config. you can connect it by typing "ssh my_vps1".
  - storm add my_vps2 root@192.168.12.2
  - Success  my_vps2 added to your ssh config. you can connect it by typing "ssh my_vps2".

List all hosts added by storm:
  $ storm list
  - Listing entries:
     my_vps1 -> dev@192.168.12.1:22
     my_vps2 -> root@192.168.12.2
     
Delete a host:
  $ storm delete my_vps1
  - Success  hostname "my_vps1" deleted successfully.

The thing I like the most about storm is that it provides web interface(written in Flask) to add, delete and modify hosts. To use it, execute:

$ storm web

Read more about StormSSH usage at here.

Bat

You can use Bat as alternative to cat command for more fancy output. If content can’t fit on screen, it will use pager (e.g. less) which you can use to navigate through content of a file.

So if you use bat main.dart to output content of a file, you will see file with Syntax Highlighting applied as below:

Bat output with Dart code

Short tip: Set alias cat="bat" for unobstructed work.

Exa

As in previous example, Exa acts as modern replacement for ls command. I have multiple aliases set for exa as:

alias l="exa --long --header --all"
alias ls="exa --long --header"
alias tree="exa --tree --level=2"

Example output when I run ls:

Exa output of mock_data directory

Z

Z is a utility for “jumping around”.

From description:

Tracks your most used directories, based on ‘frecency’. After a short learning phase, z will take you to the most ‘frecent’ directory that matches ALL of the regexes given on the command line, in order.

When you install it or enable it (I have this one enabled as ZSH plugin in ~/.zshrc), everytime you use cd to change directory, it will build it’s own db of visited directories. Then, using z project will take you to most frecent dir matching “project”, which can be located deeply as /path/to/nested/project.