Sat Dec 22 2018
List of command line tools and its importance in programming
A command-line interface or command language interpreter (CLI), also known as a command-line user interface, is a means of interacting with a computer program where the user issues a command to the program in the form of successive lines of text (command lines).
A program which handles the interface is called a command language interpreter or shell. The interface is usually implemented with a command line shell, which is a program that accepts commands as text input and converts commands into the appropriate operating system functions.
Today, many end users rarely, if ever, use command-line interfaces and instead rely upon graphical user interfaces and menu-driven interactions. However, many software developers, system administrators, and advanced users still rely heavily on command-line interfaces to perform tasks more efficiently, configure their machine, or access programs and program features that are not available through a graphical interface. With the right commands and a little bit of know-how, anyone can get things done from a text-only interface.
So, here are some important command line tools that could help in programming.
Let’s see -
Shell
The first thing you see when opening a terminal is a shell. This is the part that makes the interaction between the user and the machine possible. It interprets your commands, splits them into program names and arguments, and executes all shell commands you throw at it. There have been many different kinds of shells. Among the most popular ones were csh (C Shell) and various implementations of the Bourne Shell (usually known simply as sh). Linux distributions tend to favor bash while Mac OS X comes with zsh as the default choice.
Editor
Once you get acquainted with your shell, you will want to pick up some useful skills. As most of the coding work revolves around writing text (code, READMEs, commit messages), a good knowledge of interactive text editors is essential. There are many to choose from, and since an editor is one of the most necessary tools for any developer. The most popular text editors can be separated into two basic groups: Simple text editors and programmable text editors. Both can be great for writing code, but, as the name suggests, the programmable ones offer the ability to shape and customize the editor to perfectly suit your needs. This comes at a price, though, as they also tend to have a steeper learning curve and may require more time to set up. Among the simple text editors, GNU Nano is the most widespread. And many developers rely on programmable editors from different camps, such as Vim and GNU Emacs.
Multiplexer
As soon as you start doing serious stuff in CLI, you will encounter the limitation of being able to keep only one application open at any given time. When coding, you may want to edit the code, execute it, fix the mistakes, and execute again. When looking for a bug, you may want to list logs and see what gets logged when you send a request to the server. Typically, this would either mean switching between the two applications constantly or opening several terminal windows. This is where a terminal multiplexer can help you. When speaking of multiplexers, some people immediately assume the topic to be of GNU Screen. It was the first widespread tool of its kind and is still very popular today.
Package Manager
To ease the process of installing software, operating systems creators came with a concept of package managers. Put simply, a package manager is like an app store for CLI and desktop apps. It precedes actual app stores by some decades. Almost every system has its own package manager.
Interactive Filter
Interactive filters, like fzy, percol, peco or fzf help you with filtering long lines of text. This can either be the aforementioned command history, all the lines of code in a project directory, or a list of filenames generated by 'find .'.
HTTPie
HTTPie is like Internet Explorer; only it doesn’t have a UI. Instead, it works directly from the terminal. the isn’t just another weekend project either. HTTPie has 30,000 stars on GitHub, and among the features, you will find JSON support, code highlighting, plugins, an intuitive User Interface, a custom interface for downloads, and much more.
icdiff
The terminal can process a lot of information, but not all of the tools tap into that power. The icdiff library can show you the small tweaks and differences between two files of a similar nature. It highlights the values that have been changed, added, and shows what has been removed from the second file.
Pandoc
Getting your files to work across multiple devices is essential. With the personalized preferences for systems that developers use, you never know when you might need to convert your TXT documentation into an HTML presentation.
Moro
Keeping track of yourself is a good way to prioritize your workflow and improve your product based on the amount of work you get done in a specific time frame. While Moro is a simple tool, it can turn out to be useful to understand your work performance.
Geeknote
Taking notes is an essential aspect of being a developer, an engineer, or even a designer. While Linux systems have the capacity to provide locally hosted note management platforms, nowadays it’s quite popular to use a platform such as Evernote to capture notes and have them readily available across multiple devices. Geeknote gives you a stellar UI for using Evernote within your terminal.
jq
JQ is an easy to use and a lightweight processor for JSON files. JQ primarily acts as a filter that can take your input, and then produce a settings-based output. Filters can be combined in various ways – you can pipe the output of one filter into another filter, or collect the output of a filter into an array.
Ranger
Ranger is a dynamic User Interface for complete system file management needs. It supports VI binds for easier access across the whole of your system. The interface is focused on a minimal design, emphasizing the structure of each directory. Additionally, you can customize Ranger with external plugins, or build your own.
Aria2
Aria2 is a flexible download utility software with multi-protocol and multi-source support. It’s capable of understanding protocols like BitTorrent, FTP, HTTP(S), SFTP, and others. There are also ways to transform Aria2 into a web-based UI using an external plugin.
hub
Hub is your friendly git wrapper that boosts your GitHub experience, whether you are a contributor or someone who maintains their own project. Hub makes the GitHub code-sharing experience much more enjoyable and straightforward, letting you focus on things that are important; like writing more code!
tmux
The tmux tool is what’s known as a terminal multiplexer. This program allows developers to run multiple terminals at once, but manage them all from one terminal instance. It’s commonly known as a solid alternative to the popular GNU Screen. Tmux runs on most Unix systems.
SVGO
SVG is the new king of visual content on the web, but there’s still more that can be done to improve the graphics files based on their origins. If you edit your SVG files using certain software, there’s a high chance that the final files are going to be stuffed with useless data like comments, metadata, and other useless values that will only add extra weight to the final piece.
NPM
You Can use NPM for Package Installation. Node Package Manager is easily the most popular tool for modern developers. This is built on top of Node.js which behaves as a JavaScript framework for other scripts (like NPM).
You can share your experiences with us in the comment section. Thank you!