15 Command-Line Tools to Make You Better at Shell & CLI
Tags: beginners, productivity, linux, bash
Published: 2020-08-05 09:41:50

Shell is the **essential tool** for every programmer. The more familiar you become with the available tools, the more efficient you can be with using your computer. Here's a list of command-line tools that aim to provide modern, often much faster, alternatives to the existing shell commands. These tools will boost your skill at shell.

# `bat`

`bat` is a `cat` clone with syntax highlighting and Git integration that works on Windows, MacOS and Linux. It provides syntax highlighting for many file extensions by default.

![bat](https://dev-to-uploads.s3.amazonaws.com/i/k2q75cfqe8cao9o2p6qq.png)

[GitHub](https://github.com/sharkdp/bat)

# `exa`

`exa` is a modern replacement for `ls`, the default command-line program in Unix/Linux for listing directory contents. exa supports icons with the `--icons` flag.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/vo0khex1f140d0mio6r4.png)

[GitHub](https://github.com/ogham/exa)

# `fd`

`fd` is a fast and user-friendly alternative to `find`, the built-in command-line program in Unix/Linux for walking a file hierarchy. `fd` provides opinionated defaults for the most common use cases. To find a specific file by name, you write `fd PATTERN` instead of `find -iname ‘*PATTERN*’`. `fd` is also extremely fast and it comes with a ton of options like ignoring hidden directories, files and patterns from `.gitignore` by default.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ibk896y0i4910axemtqy.png)

[GitHub](https://github.com/sharkdp/fd)

# `procs`

`procs` is a modern replacement for `ps`, the default command-line program in Unix/Linux for getting information about processes. It provides convenient, human-readable (and colored) output format by default.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/8mhfxfrquad3od0wunne.png)

[GitHub](https://github.com/dalance/procs)

# `sd`

`sd` is an intuitive find & replace command-line tool, it is an alternative to `sed`, the built-in command-line program in Unix/Linux for parsing and transforming text. `sd` has simpler syntax for replacing all occurrences and it uses the convenient regex syntax that you already know from JavaScript and Python. `sd` is also 2x-11x faster than sed.

`sed` is a programmable text editor, with search and replace being a common use case. In that light, sd is more like `tr`, but on steroids. (thanks /u/oleid for the suggestion).

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/357o78kmw1eil7j8ghvr.png)

[GitHub](https://github.com/chmln/sd)

# `dust`

`dust` is a more intuitive version of `du`, the built-in command-line program in Unix/Linux for displaying disk usage statistics. By default `dust` sorts the directories by size.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/pe5swoggez4gj6xcx68l.png)

[GitHub](https://github.com/bootandy/dust)

# `starship`

The minimal, blazing-fast, and infinitely customizable prompt for any shell.

[Website](https://starship.rs/guide/)

# `ripgrep`

`ripgrep` is an extremely fast alternative to `grep`, the built-in command-line program in Unix/Linux for searching files by pattern. `ripgrep` is a line-oriented search tool that recursively searches your current directory for a regex pattern. By default, `ripgrep` respects `.gitignore` and automatically skips hidden files, directories and binary files.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/0p65wdk6exwvly3kgtp0.gif)

[GitHub](https://github.com/BurntSushi/ripgrep)

# `tokei`

`tokei` is a program that displays statistics about your code. It shows the number of files, total lines within those files and code, comments, and blanks grouped by language.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/7jh31eo1kf7c54hd1nkb.png)

[GitHub](https://github.com/XAMPPRocky/tokei)

# `hyperfine`

`hyperfine` is a command-line benchmarking tool. Among many features, it provides statistical analysis across multiple runs, support for arbitrary shell commands, constant feedback about the benchmark progress and current estimates and more.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/lq87fs5nywkr9fx9yulx.gif)

[GitHub](https://github.com/sharkdp/hyperfine)

# `ytop`

`ytop` is an alternative to `top`, the built-in command-line program in Unix/Linux for displaying information about processes.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/kgszbiklhijcxi5q71wi.gif)

[GitHub](https://github.com/cjbassi/ytop)

# `tealdeer`

`tealdeer` is a very fast implementation of `tldr`, a command-line program for displaying simplified, example based and community-driven man pages.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/d01d9qxds4z5flac4yyk.gif)

[GitHub](https://github.com/dbrgn/tealdeer)

# `bandwhich`

`bandwhich` is a CLI utility for displaying current network utilization by process, connection and remote IP or hostname.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/mojjzznm0r2922b3157h.gif)

GitHub

# grex

`grex` is a command-line tool and library for generating regular expressions from user-provided test cases.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/2xk08h8rcyj7amh024iu.gif)

[GitHub](https://github.com/pemistahl/grex)

# `zoxide`

`zoxide` is a blazing fast autojumper, intended to completely replace the `cd` command. It allows you to change directories without typing out the entire path name.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/otxcy79ookz4greormoi.gif)

[GitHub](https://github.com/ajeetdsouza/zoxide)

# Bonus: `nushell`

`nushell` is a new type of shell, written in Rust. Its goal is to create a modern shell alternative that's still based on the Unix philosophy, but adapted to the current era. It supports piping and filtering in a way similar to awk and sed with a column view so that you can combine operations like in SQL. (thanks /u/matu3ba for the suggestion).

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/g50chlb147posveueewa.gif)

[GitHub](https://github.com/nushell/nushell)

Have I missed an interesting command-line tool? Let me know [on Twitter](https://twitter.com/zaiste).