Top Productivity CLI Tools I Use on Linux
Tags: linux, tooling, productivity, cli
Published: 2023-05-30 19:47:38

## Introduction

Are you ready to unlock the power of the Linux command line? As an avid Arch Linux user, I have discovered a treasure trove of exceptional CLI tools that have significantly enhanced my experience. From boosting productivity to streamlining tasks, these top-notch tools have become my trusted companions. Join me as we delve into a hand-picked selection of command-line gems that will revolutionize your Linux journey. Get ready to embark on a path of efficiency, flexibility, and command-line mastery. Welcome to the world of Linux's finest CLI tools!

Although this article geared towards Linux users, most of the tools mentioned here are cross platform and can be used on Windows (WSL2) and MacOS as well. Feel free to try them out and let me know what you think.

## 1. [Bat](https://github.com/sharkdp/bat)

Bat is a cat clone with syntax highlighting and Git integration. It has helped me iimmensely when I want to view the contents of a file. It is a drop in replacement for cat and it has syntax highlighting for a lot of languages. It also has a pager mode which is enabled by default when output is piped to another command. It also has a lot of other features which you can read about in the [documentation](https://github.com/sharkdp/bat). In my case I have aliased it to cat in my .fish config file.

```shell
alias cat bat
```

![bat screenshot](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o1rzl7v06nfelw0r9ycv.png)

## 2. [Fish Shell](https://github.com/fish-shell/fish-shell)

Fish is a acronyn for friendly interactive shell. It is a smart and user friendly shell for Unix-like operating systems like Linux. There are a lot of features that make it stand out from other shells like bash. It has a lot of features like autosuggestions, syntax highlighting, tab completions and a lot more. You can read more about it in the [documentation](https://fishshell.com/). I have been using it for a while now and I it configured to my liking. In terms of plugins I use [fisher](https://github.com/jorgebucaran/fisher) to manage my plugins. I have a couple of plugins that I use on a daily basis. I have listed them below:

- [z](https://github.com/jethrokuan/z)
- [fzf](https://github.com/junegunn/fzf)
- [zoxide](https://github.com/ajeetdsouza/zoxide)
- [exa](https://github.com/ogham/exa)
- [bat](https://github.com/sharkdp/bat)
- [tide theme](https://github.com/IlanCosman/tide)
- [nvm](https://github.com/jorgebucaran/nvm.fish)

## 3. [Fzf](https://github.com/junegunn/fzf)

Fzf is a command line fuzzy finder. It is a general purpose command line fuzzy finder. It can be used for a lot of things like searching for files, searching for processes, searching for git commits and a lot more. It is a very powerful tool and I use it on a daily basis. I have it aliased to ctrl + r in my **.fish** config file.

```shell
alias ctrl + r fzf
```

![FzF screenshot](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o0aeoiavehqvn45bfk8h.png)

## 4. [Zoxide](https://github.com/ajeetdsouza/zoxide)

Zoxide is a blazing fast alternative to [z](). It is a tool that helps you navigate your filesystem faster. It is a tool that I use on a daily basis. It provides a lot of features that make it stand out from other tools. It has a lot of features like autojump, autoenv, z and a lot more. It is a tool that I use on a daily basis. I have it aliased to z in my **.fish** config file.

```shell
alias z zoxide
```

![Zoxide screenshot](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5d2hesm51oziylcjzric.png)

## 5. [Exa](https://github.com/ogham/exa)

Exa, a powerful file management tool, is gaining popularity as a modern replacement for the traditional "ls" command. With its impressive set of features and user-friendly interface, Exa offers a superior file listing experience. It supports colorized output, making it easier to identify file types at a glance. The built-in Git integration feature provides valuable insights into the status of files and directories within a repository. Additionally, Exa boasts a convenient tree view option, allowing users to visualize the directory structure in a hierarchical format.

Excitingly, Exa can be seamlessly integrated into the Fish shell environment by adding an alias to the .fish configuration file. This way, users can enjoy the enhanced functionality of Exa while using the familiar "ls" command in their daily workflow. Discover the potential of Exa and elevate your file management capabilities today. I have it aliased to ls in my **.fish** config file.

```shell
alias ls exa
```

![exa screenshot](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3vycn04i83kqqfcgelcd.png)

## 6. [Tide](https://github.com/IlanCosman/tide)

The Tide theme for the Fish shell is an aesthetically pleasing and highly customizable option that can transform your command-line experience. With its clean and minimalist design, Tide brings a sense of elegance to your terminal. The theme combines a soothing color palette with well-defined prompt elements, enhancing readability and reducing visual clutter.

The Tide theme offers a range of customization options, allowing users to personalize their prompt appearance, such as adjusting colors, adding informative segments, and even incorporating Git status indicators. Whether you prefer a sleek and minimalistic look or want to add a touch of flair to your terminal, the Tide theme for Fish shell delivers a visually appealing and personalized command-line interface. Elevate your Fish shell experience with Tide and enjoy a fresh and stylish approach to your everyday workflow.

To install the Tide theme, simply clone the repository and run the install script. Then, add the theme to your .fish configuration file. I have it configured in my **.fish** config file.

```shell
tide configure
```

![Tide prompt](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ksle1jjnesxqyy5xfxxo.png)

## 7. [Bpytop](https://github.com/aristocratos/bpytop)

Bpytop is a powerful and visually appealing resource monitor for the command-line interface. You can find the [bpytop project on GitHub](https://github.com/aristocratos/bpytop). The repository provides detailed information about bpytop, including installation instructions, usage examples, and documentation.

Bpytop offers a feature-rich and customizable interface for monitoring system resources such as CPU usage, memory usage, network activity, disk I/O, and more. It provides real-time graphs, color-coded statistics, and a user-friendly layout, making it easy to visualize and analyze system performance at a glance. With its intuitive keybindings, you can navigate through different sections and access detailed information about specific processes or system components.

Additionally, bpytop offers a variety of customization options, allowing you to personalize the appearance and behavior of the resource monitor according to your preferences. Whether you are a system administrator, developer, or power user, bpytop is a valuable tool for monitoring and understanding system performance.

![Bpytop](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n0z0q3dzj5p8bg2aijnm.png)

## 8. [Neofetch](https://github.com/dylanaraps/neofetch)

Neofetch is a popular command-line tool that displays system information in a visually appealing and informative manner. With Neofetch, you can quickly retrieve details about your operating system, kernel version, CPU, memory, and other hardware components. It also fetches information about the desktop environment or window manager, providing a comprehensive overview of your system configuration.

Neofetch offers various customization options, allowing you to personalize the displayed information, choose ASCII art logos, and even integrate additional functionality using plugins.

![Neofetch](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uvsteomcjnihnqrm4kud.png)

## 9. [Fd](https://github.com/sharkdp/fd)

Fd, the efficient and user-friendly filesystem search tool that offers a simple and fast alternative to the traditional "find" command. Designed to provide a streamlined search experience, fd prioritizes speed and ease of use while offering sensible defaults for most common use cases. While it may not encompass all the advanced features of "find," fd's optimized approach delivers quick and intuitive file searching. Discover fd on [GitHub](https://github.com/sharkdp/fd) and enhance your filesystem search capabilities with this lightweight and versatile tool that meets the majority of user requirements.

![FD screenshot](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fwylgjrezxphlfvqllsp.png)

## 10. [lazydocker](https://github.com/jesseduffield/lazydocker)

Lazydocker is a terminal UI for the Docker engine that offers a convenient and user-friendly alternative to the Docker CLI. With its intuitive interface and streamlined workflow, lazydocker simplifies the process of managing Docker containers, images, volumes, and networks. It provides a comprehensive overview of your Docker environment, allowing you to monitor and control your containers with ease.

Lazydocker offers a range of features, including the ability to view logs, attach to running containers, and execute commands. Additionally, it provides a built-in terminal emulator, allowing you to run commands directly from the lazydocker interface. Whether you are a Docker beginner or an experienced user, lazydocker is a valuable tool for managing your Docker environment.

![lazydocker screenshot](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d2dra1mdjsjvdmd48xgg.png)

## 11. [act](https://github.com/nektos/act)

Introducing Act, the indispensable command-line tool that empowers you to execute your GitHub Actions locally. Act provides a seamless solution for testing workflows directly on your local machine before deploying them to GitHub. With Act, you can ensure the accuracy and efficiency of your workflows without the need for constant commits and pushes.

Act goes beyond local testing by enabling the execution of workflows on self-hosted runners. This feature proves invaluable when running workflows on machines disconnected from the internet, such as Raspberry Pi devices. With Act, you have the flexibility to effortlessly run your workflows on a variety of environments, improving productivity and expanding the possibilities of your GitHub Actions. Embrace Act and take control of your GitHub Actions workflow development today. Read more about Act on my [blog post](https://dev.to/ken_mwaura1/run-github-actions-on-your-local-machine-bdm).

![Act-run](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ouif54cku69bpj9w20nq.png)

## Honorable Mentions

- [lazygit](https://github.com/jesseduffield/lazygit) - A simple terminal UI for git commands, written in Go with the gocui library.
- [yay](https://github.com/Jguer/yay) is a robust and user-friendly AUR (Arch User Repository) helper for Arch Linux and Arch-based distributions written in Go.
- [ytop](https://github.com/cjbassi/ytop) - A TUI system monitor written in Rust.
- [bottom](https://github.com/ClementTsang/bottom) - A cross-platform graphical process/system monitor with a customizable interface and a multitude of features.
- [Neovim](https://github.com/neovim/neovim): Modern version of the Vim text editor.
- [taskwarrior](https://github.com/GothenburgBitFactory/taskwarrior): Feature-rich command-line task manager.
- [tmux](https://github.com/tmux/tmux): Terminal multiplexer for managing multiple terminal sessions.

![next-time gif](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vpxjwcjqhdax40wmf1x0.gif)