Get In Touch
Wuse 2, Abuja,

Ph: +234.706.699.8070
Work Inquiries
[email protected]
Ph: +234.706.699.8070
Back

Essential Command-Line Tools Every Developer Should Know

Command-line tools are essential to developers and those with engineering responsibilities are fond of calling the terminal their home. Anyone with a Unix system has to frequently interact with the Terminal in one way or another. And customization has always been a big part of how the terminal can be used to improve productivity, create unique experiences, and manage the system to improve the workflow.

I’m always up for quirky and innovative tools that help me become more productive as a developer. So no matter how you prefer to work, taking frequent breaks, relying on a lengthy task list, GTD methodology, with your favorite music playing in the background, you can make all of that and more happen from right within the Terminal with command line tools.

These Command-line tools are scripts, programs, and libraries that have been developed with a specific goal in mind, usually to address a developer’s challenge.

This article will cover a number of cool and useful open-source command line tools that will not necessarily make you a 10x programmer but will make you feel like a 10x programmer.

Essential Command-Line Tools

essential command-line tools for a developer

You need to arm yourself with the bare minimum of command-line developer tools if you want to become a console dweller. An interactive shell (go for something modern with convenient tab completion) and a text editor are two things you absolutely cannot live without.

I’ll now bring up the UNIX philosophy, which frequently serves as the basis for design choices made by the tool’s creators, whether intentionally or unintentionally. The following list summarizes some of the major points:

● Treat everything as a file.

● Do only one thing, but do it well.

● Read from standard input, write to standard output, and communicate errors to a standard error stream.

● When succeeded, return code 0. A non-zero value means an error (which can be specified by the exact return code).

● Allow for command chaining and scripting.

Shell

A shell is the first thing you see when you open a terminal. It is through this component that user-machine interaction is made possible. All shell commands you give it are interpreted, broken up into program names and arguments, and then they are all executed.

TCSH (C Shell) and different Bourne Shell implementations were among the most widely used. Zsh is the default shell on Mac OS X, but bash is the preferred shell for many Linux distributions. The Korn Shell was created by extending the Bournes Shell, and supporters continue to use it.

Other options exist, although they are much less common than Microsoft PowerShell on Windows computers. Both the.NET runtime and interactive UNIX shells like zsh served as inspiration for PowerShell. It enables object-oriented handling of data rather than treating everything as text, which is a typical idea in the UNIX environment.

Many UNIX-based applications (most notably Git, Autotools, or Make) favor Bourne Shell or a variant of it. MSys is the best option if you want a Linux-like experience on Windows. Cygwin is the solution if you need something in the middle, such as a UNIX API that has been compiled as a Windows executable.

Editor

There are numerous options, and editors are among the most essential tools for each developer. Choosing the right editor is a personal choice, but there are likely just as many different viewpoints on which is best.

Simple text editors and programmable text editors are two of the most commonly used text editors, but which is best for you depends on how you want to use them. Simple text editors can be used for writing code, while programmable ones give you the option to shape and adjust the editor to meet your requirements. Here I will be citing different types of editors.

  1. BASIC TEXT EDITORS

Among the simple text editors, GNU Nano is the most widespread. Actually, it is a clone of the pico Editor, so if one is not available on your system, you can try the other. Another, more modern, alternative to both is the micro editor. If you want something simple and extensible at the same time, this is a good place to start.

 

  1. PROGRAMMABLE TEXT EDITORS

Many developers rely on programmable editors from different camps, such as Vim and GNU Emacs. Both provide built-in programming languages in addition to an API(application programming interface), with Vim focusing on LISP(LIST processor) and accelerated text editing and emacs focused on text manipulation.

A more recent approach to Vim, called Neovim, is also worth mentioning, as it is starting to get a serious following.

Although it could be confusing, the editor vi is a forerunner of Vim (which, incidentally, stands for “Vi improved”). It is much easier to use than Vim, but if you are comfortable writing in Vim, using Vi shouldn’t provide you with any difficulties.

Feel free to use whichever editor you choose on your personal device – this guide will help you decide which is best for you.

  1. DEFAULT SYSTEM EDITOR

In Bourne-compatible shells (sh, bash, KSH, and zsh), you may examine the value of the $EDITOR environment variable. This environment variable points to the default editor on your system. Adding export EDITOR=my-awesome-editor to your shell’s configuration will allow you to change the value if it differs from your personal preference.

When longer text input is required by other programs, such as version control systems and mail clients, this editor is used.

Multiplexer

You will run into the restriction of only being able to have one application open at a time as soon as you begin using the command-line interface (CLI) for programming. List the logs to view what is recorded when you send a request to the server in order to find bugs.

GNU Screen was the first widespread tool of its kind and is still very popular today. Its modern replacement is “tmux”, which, unsurprisingly, stands for “terminal multiplexer.” Multiplexers let you have more than one window open in a given terminal session and switch between them freely.

For most use cases, GNU Screen or tmux should be great for you, but if for some reason you would consider them heavy on resources, there are also lighter alternatives. There’s dtach/atach and there’s abduco. They are limited in scope on purpose but can perform their respective duties well.

Package Manager

You can occasionally receive a self-contained binary, or what is known as a “binary package” This is typically an executable compressed with some metadata and includes some metadata.

Linuxbrew is a Homebrew port for various platforms and may make the final of the aforementioned systems, Homebrew. If you want a similar user experience on Microsoft Windows, it even works on WSL (Windows Subsystem for Linux ). Red Hat-based distributions prefer Yum or DNF (Dandified YUM), and other Linux distros prefer APT (Advanced package tool).

The Shiny Stuff

Certainly, what we’ve already talked about is applicable to the workplace. However, some programs might make life more comfortable even if they are not required. Even if you don’t need them, it’s still beneficial to be aware of them.

Interactive Filter

It can be time-consuming to search the command line tool’s history. The Ctrl+R keybinding is available in both bash and zsh, but only one substitution is displayed at once. Additionally, you must enter the precise text that you entered previously. Once you begin using the command line, this procedure appears to be a good candidate for improvement because it is quite common.

You can filter long lines of text with the use of interactive filters like fzy, percol, peco, or fzf. The basic concept is to first show you all the lines that are accessible before using fuzzy-finding techniques to filter out anything that doesn’t match.

For instance, assigning Ctrl+R to fxf displays a list of the most recent commands, which you can scroll through using the arrow keys. This feature certainly grabs your attention.

Interactive Navigator

When I was mostly dealing with C++ projects, Facebook PathPicker was a huge help. Finding the true pathways inside the compiler’s error log was a productivity booster because the error log it produces can grow to be rather large and unpleasant.

When used with tmux, FPP filters everything but the file paths in any given text file or content of your screen. It then displays a user interface (UI) from which you may choose one or more of those paths and issue a command. The default step is to open the files in an editor, which is the most frequent answer.

Git UI

Git is probably used as a version control system for at least one of the projects you work on. Despite its complete capabilities, the Git Command-Line Interface does not offer the best possible user experience. I advise you to check out tig rather than spending your valuable time reading through every option in the Git help.

Fix All Conflicts, sometimes known as “FAC”, is a utility that tries to assist git users. As you could have predicted, it is useful when performing merges or rebasing operations and you have disputes. It serves as a substitute for other merge tools, such as vimdiff.

File Manager

In the 1990s, everyone yearned for a two-pane file manager at one point. With Norton Commander, the trend first emerged. Midnight Commander is the one that still has a consistent user base among many others who took the same route.

It supports the FTP (File Transfer Protocol) and FISH(Files transferred over Shell protocol ) protocols, so you can view the local system in one pane and the remote file system in the other.

Further Explorations

Some of the command-line tools listed in this article may already be familiar to you. While reading it, you might have discovered something new and beneficial. My goal wasn’t to provide in-depth analysis and comparison of all available tools, but rather to highlight a few key ones that I use frequently in my work.

There are a lot more intriguing command-line tools available, so if you’re looking for more, I suggest looking at the Awesome Shell-curated list of some of the top command-line tools currently on the market.

Most GUI(graphical user interface) applications have terminal equivalents as well. Web browsers, email programs, chat programs (IRC, Slack, XMPP), PIM programs, and spreadsheets are examples of this. Please indicate any excellent programs you are aware of that I haven’t listed in the comments.

Essential Command-Line Tools Every Developer Should Know

essential command-line tools for a developer

Developers and those with engineering responsibilities are fond of calling the terminal their home. Anyone with a Unix system has to frequently interact with the Terminal in one way or another. And customization has always been a big part of how the terminal can be used to improve productivity, create unique experiences, and manage the system to improve the workflow.

I’m always up for quirky and innovative tools that help me become more productive as a developer. So no matter how you prefer to work, taking frequent breaks, relying on a lengthy task list, GTD methodology, with your favorite music playing in the background, you can make all of that and more happen from right within the Terminal with command line tools.

These Command-line tools are scripts, programs, and libraries that have been developed with a specific goal in mind, usually to address a challenge that the tool’s developer has encountered.

This article will cover a number of cool and useful open-source command line tools that will not necessarily make you a 10x programmer but will make you feel like a 10x programmer.

Essential Command-Line Tools

essential command-line tools for a developer

You need to arm yourself with the bare minimum of command-line developer tools if you want to become a console dweller. An interactive shell (go for something modern with convenient tab completion) and a text editor are two things you absolutely cannot live without.

I’ll now bring up the UNIX philosophy, which frequently serves as the basis for design choices made by the tool’s creators, whether intentionally or unintentionally. The following list summarizes some of the major points:

● Treat everything as a file.

● Do only one thing, but do it well.

● Read from standard input, write to standard output, and communicate errors to a standard error stream.

● When succeeded, return code 0. A non-zero value means an error (which can be specified by the exact return code).

● Allow for command chaining and scripting.

Shell

A shell is the first thing you see when you open a terminal. It is through this component that user-machine interaction is made possible. All shell commands you give it are interpreted, broken up into program names and arguments, and then they are all executed.

TCSH (C Shell) and different Bourne Shell implementations were among the most widely used. Zsh is the default shell on Mac OS X, but bash is the preferred shell for many Linux distributions. The Korn Shell was created by extending the Bournes Shell, and supporters continue to use it.

Other options exist, although they are much less common than Microsoft PowerShell on Windows computers. Both the.NET runtime and interactive UNIX shells like zsh served as inspiration for PowerShell. It enables object-oriented handling of data rather than treating everything as text, which is a typical idea in the UNIX environment.

Many UNIX-based applications (most notably Git, Autotools, or Make) favor Bourne Shell or a variant of it. MSys is the best option if you want a Linux-like experience on Windows. Cygwin is the solution if you need something in the middle, such as a UNIX API that has been compiled as a Windows executable.

Editor

There are numerous options, and editors are among the most essential tools for each developer. Choosing the right editor is a personal choice, but there are likely just as many different viewpoints on which is best.

Simple text editors and programmable text editors are two of the most commonly used text editors, but which is best for you depends on how you want to use them. Simple text editors can be used for writing code, while programmable ones give you the option to shape and adjust the editor to meet your requirements. Here I will be citing different types of editors.

  1. BASIC TEXT EDITORS

Among the simple text editors, GNU Nano is the most widespread. Actually, it is a clone of the pico Editor, so if one is not available on your system, you can try the other. Another, more modern, alternative to both is the micro editor. If you want something simple and extensible at the same time, this is a good place to start.

 

  1. PROGRAMMABLE TEXT EDITORS

Many developers rely on programmable editors from different camps, such as Vim and GNU Emacs. Both provide built-in programming languages in addition to an API(application programming interface), with Vim focusing on LISP(LIST processor) and accelerated text editing and emacs focused on text manipulation.

A more recent approach to Vim, called Neovim, is also worth mentioning, as it is starting to get a serious following.

Although it could be confusing, the editor vi is a forerunner of Vim (which, incidentally, stands for “Vi improved”). It is much easier to use than Vim, but if you are comfortable writing in Vim, using Vi shouldn’t provide you with any difficulties.

Feel free to use whichever editor you choose on your personal device – this guide will help you decide which is best for you.

  1. DEFAULT SYSTEM EDITOR

In Bourne-compatible shells (sh, bash, KSH, and zsh), you may examine the value of the $EDITOR environment variable. This environment variable points to the default editor on your system. Adding export EDITOR=my-awesome-editor to your shell’s configuration will allow you to change the value if it differs from your personal preference.

When longer text input is required by other programs, such as version control systems and mail clients, this editor is used.

Multiplexer

You will run into the restriction of only being able to have one application open at a time as soon as you begin using the command-line interface (CLI) for programming. List the logs to view what is recorded when you send a request to the server in order to find bugs.

GNU Screen was the first widespread tool of its kind and is still very popular today. Its modern replacement is “tmux”, which, unsurprisingly, stands for “terminal multiplexer.” Multiplexers let you have more than one window open in a given terminal session and switch between them freely.

For most use cases, GNU Screen or tmux should be great for you, but if for some reason you would consider them heavy on resources, there are also lighter alternatives. There’s dtach/atach and there’s abduco. They are limited in scope on purpose but can perform their respective duties well.

Package Manager

You can occasionally receive a self-contained binary, or what is known as a “binary package” This is typically an executable compressed with some metadata and includes some metadata.

Linuxbrew is a Homebrew port for various platforms and may make the final of the aforementioned systems, Homebrew. If you want a similar user experience on Microsoft Windows, it even works on WSL (Windows Subsystem for Linux ). Red Hat-based distributions prefer Yum or DNF (Dandified YUM), and other Linux distros prefer APT (Advanced package tool).

The Shiny Stuff

Certainly, what we’ve already talked about is applicable to the workplace. However, some programs might make life more comfortable even if they are not required. Even if you don’t need them, it’s still beneficial to be aware of them.

Interactive Filter

It can be time-consuming to search the command line tool’s history. The Ctrl+R keybinding is available in both bash and zsh, but only one substitution is displayed at once. Additionally, you must enter the precise text that you entered previously. Once you begin using the command line, this procedure appears to be a good candidate for improvement because it is quite common.

You can filter long lines of text with the use of interactive filters like fzy, percol, peco, or fzf. The basic concept is to first show you all the lines that are accessible before using fuzzy-finding techniques to filter out anything that doesn’t match.

For instance, assigning Ctrl+R to fxf displays a list of the most recent commands, which you can scroll through using the arrow keys. This feature certainly grabs your attention.

Interactive Navigator

When I was mostly dealing with C++ projects, Facebook PathPicker was a huge help. Finding the true pathways inside the compiler’s error log was a productivity booster because the error log it produces can grow to be rather large and unpleasant.

When used with tmux, FPP filters everything but the file paths in any given text file or content of your screen. It then displays a user interface (UI) from which you may choose one or more of those paths and issue a command. The default step is to open the files in an editor, which is the most frequent answer.

Git UI

Git is probably used as a version control system for at least one of the projects you work on. Despite its complete capabilities, the Git Command-Line Interface does not offer the best possible user experience. I advise you to check out tig rather than spending your valuable time reading through every option in the Git help.

Fix All Conflicts, sometimes known as “FAC”, is a utility that tries to assist git users. As you could have predicted, it is useful when performing merges or rebasing operations and you have disputes. It serves as a substitute for other merge tools, such as vimdiff.

File Manager

In the 1990s, everyone yearned for a two-pane file manager at one point. With Norton Commander, the trend first emerged. Midnight Commander is the one that still has a consistent user base among many others who took the same route.

It supports the FTP (File Transfer Protocol) and FISH(Files transferred over Shell protocol ) protocols, so you can view the local system in one pane and the remote file system in the other.

Further Explorations

Some of the command-line tools listed in this article may already be familiar to you. While reading it, you might have discovered something new and beneficial. My goal wasn’t to provide in-depth analysis and comparison of all available tools, but rather to highlight a few key ones that I use frequently in my work.

There are a lot more intriguing command-line tools available, so if you’re looking for more, I suggest looking at the Awesome Shell-curated list of some of the top command-line tools currently on the market.

Most GUI(graphical user interface) applications have terminal equivalents as well. Web browsers, email programs, chat programs (IRC, Slack, XMPP), PIM programs, and spreadsheets are examples of this. Please indicate any excellent programs you are aware of that I haven’t listed in the comments.

John Adebayo
John Adebayo
https://www.johnadebayo.com

Leave a Reply

Your email address will not be published. Required fields are marked *

We use cookies to give you the best experience. Cookie Policy