Developers and those with engineering responsibilities are fond of calling terminal their home. Anyone with a Unix system has to frequently interact with the Terminal in one way or the other. And customization has always been a big part of how much the Terminal can be used to improve productivity, create unique experiences, and manage the system to improve the workflow. At Stackify, we’re always up for quirky and innovative tools that help us become more productive developers. 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.
Command line tools are scripts, programs, and libraries that have been created with a unique purpose, typically to solve a problem that the creator of that particular tool had himself. Because of that, we have divided this roundup of the best command line tools to include different categories, like Web Development, Utilities, Productivity, and others. Beyond being categorized, note that the following 50 command line tools are listed in no particular order — they’re not ranked or rated, but are numbered simply to make a list easier to navigate.
These are all open-source projects, so everything is free to download, and you can become a contributor to any of the projects through GitHub, where most of these tools have been hosted. To check out command line tools in a particular category, click on a link below:
Sindre Sorhus has done some great projects in the open-source community; the “is-up” is a small library that taps into the “isitup.org” API to deliver a seamless website status checking service from your terminal.
- Simple one-command way of checking whether a website is up or down.
- Has a separate library that shows how to tap into the API.
As a developer, you will often find yourself needing to take website snapshots to present to your clients or work colleagues. The pageres-cli is capable of capturing up to 100 snapshots from 10 unique websites in less than 60 seconds, dramatically cutting down on the time and hassle of taking dozens of screenshots individually.
- You can specify the website address and include a particular resolution to capture.
- Capture multiple resolutions from multiple websites at the same time.
Kevin Mårtensson is another brilliant coder for the Open Source community, and this time we’re featuring one of his lesser-known libraries, albeit still useful, which can quickly return a viewport ratio for any device that you’re building an interface for. If you have your style guide workflow, this might not be as helpful, but still, it’s quite easy to use and could come in handy when you’re doing some quick fixes on the go.
- Can fetch device sizes for single or multiple items.
- Results can be exported into a file.
- Results can also be formatted into a table.
- Free and Premium models.
- Custom domain name for your site.
- Publish a whole folder with one command.
The loadtest library is a fully capable project for load testing a website. With an extendable API, you can integrate loadtest into your tests environment. The number one reason for developers using loadtest is that it allows for custom configuration options that replicate a real-world scenario.
- Custom parameters for requests and concurrent clients.
- You can specify custom Cookie and Header values.
- Includes advanced features for in-depth server testing.
WordPress is the world’s most popular blogging software, though not everyone wants to use the WordPress dashboard to manage their site, especially not developers who have grown to love their terminal! The WP-CLI is a sophisticated command line solution for managing your WordPress website, including themes and plugins.
- Well-documented and full of sample usage cases.
- Commands that can manage cache, user’s, core, posts, etc,.
- Built by WordPress developers and the WordPress community.
Diff to Html generates pretty HTML diffs from unified and git diff output in your terminal. Diff2HTML supports GitLab, GitHub, Bitbucket, and merge/pull requests. The main reason developers use this over any other library is that diff2html provides a clear overview of the changes.
- Highlights code syntax.
- Matches similar lines together for readability.
- Based on GitHub style-guide for a pleasant UI.
This one is for Node.js devs! Save yourself a little bit of time by loading up the NPM page of a particular package directly from the terminal. Whether you’re browsing the web with terminal and found a package you want to check or an old-memory strikes back, npm-home is handy to have.
- Simple one-line command to open the web page of an NPM project.
When you’re working on something special, the last thing you want is to be distracted from your workflow. But being a web developer means that you constantly have to check for errors and mistakes, especially when talking about function usage across different browsers. This neat little library is based on the CanIUse.com website.
- Checks for feature availability across all modern web browsers.
- Gives specific output as to how functional the feature is across those browsers.
Another one for you busy Node.js developers, this tool is useful for checking whether a particular package name has been taken on the NPM website. This lets you quickly push out project names that you know won’t interfere or be confusing for other members of the community.
- Is more performance-oriented, and has a nice results output than the inbuilt search feature of npm’s own CLI.
Every byte matters, especially when you have to improve performance. If your app is finished and ready for production, use this efficient library to quickly strip away any comments on your CSS files.
- You can opt to preserve certain comments by regex input; likewise, you can specify not to preserve any comments.
- Works based on input-file and output-file, so the original file is never entirely destroyed.
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.
- Massive documentation explaining how you can turn HTTPie in your primary web browsing choice.
- Supports many custom settings for most frequently used HTTP input variations: headers, cookies, authentication, etc,.
- Works with Windows, Linux, and MacOS platforms.
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 similar nature. It highlights the values that have been changed, added, and shows what has been removed from the second file.
- Extensive option capabilities for creating custom output layouts.
- You can target specific lines of the files that include the code you want to compare, such as the header alone.
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.
- Easily converts HTML files into slideshows.
- Convert web pages into markdown files.
- Custom code syntax highlighting.
As per the reviews of the users themselves, Babun is a Linux shell that Windows users are going to enjoy using. If you thought Cygwin was great, then you will adore the extended functionality of Babun.
- Custom package manager called “pact.”
- Built with a plugin back-end for customization.
- Custom shell built for user experience.
Keeping track of yourself is a good way to prioritize your workflow and improve your productivity 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.
- You can set custom notes each time you run the ‘moro’ command, allowing you to track the amount of time it takes to get a particular project done.
- Moro tracks all your data for detailed reports.
JIRA is without a doubt one of the world’s leading platform for issue and bug tracking, and with Terjira you can bring the JIRA functionality straight into your terminal. This is an ultra-optimized library that gives you a simple JIRA interface from your terminal shell.
- You can sort, edit, create and delete issues.
- Custom commands for boards, sprints, and projects.
Timetrap is a time tracking tool with a slightly more complex capabilities, perfect for freelance developers and designers who are constantly relying on their performance to manage projects. The best way to improve yourself is to learn how to manage yourself, and time tracking is a good place to start.
- You can switch between custom entries whenever you change your work routine.
- All records can be output in a concise table of data, showing precise details of how much time you’ve spent on each task.
Taskwarrior is an open-source library that integrates a fully functional TODO list management application into your terminal. It’s clean, with excellent performance and more than 350+ custom plugin extensions created by other developers. Taskwarrior scales to fit your workflow. Use it as a simple app that captures tasks, shows you the list, and removes tasks from that list.
- Tasks can be added with one line of command, including product description and the due date.
- Taskwarrior supports Pomodoro and GTD so you can create even more depth for your productivity workflow.
- Has a large community that’s open to helping and suggestions on ways to use this library for the best results.
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.
- Geeknote lets you create new notes, tags, and notebooks from the shell.
- Edit your existing notes using your favorite editor: vim, emacs, nano, etc.
- Custom sync options for local/external files.
Imgur is one of the world’s most popular image sharing platforms, with millions of daily active users, and a performance optimized image sharing interface that can deal with any demand. Most of all it is simple to use, and efficient in getting your images seen by anyone quickly.
- Lets you upload images to Imgur without you having to leave your terminal interface.
- You can specify your image titles.
Doing is a basic CLI for adding and listing “what was I doing” reminders in a TaskPaper-formatted text file. It allows for multiple sections/categories and flexible output formatting. Never again will you question yourself and the actions that you performed during any given day.
- Extensive management of each task, their timelines, and the amount of time they’ve taken up during their lifetime.
Uber CLI is obviously a bit of a jab at productivity geeks, but that hasn’t stopped thousands of developers from switching their Uber access workflow permanently. With Uber CLI you can quickly get a price and time to destination estimates with a simple command.
- You can input a starting address and ending address.
- The output is a neatly organized table that shows prices for different Uber car variations.
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.
- Supports basic and advanced requirements.
- Can be optimized with mathematical equations.
This neat library creates a more streamlined workflow for the directories that you access on a consistent basis. It can save into its memory the folders that you visit the most, and give you a more flexible way of navigating to them with simple commands. Being productive is all about methods for minimizing your need to exit the terminal for any reason at all.
- Works across Linux, Windows, and MacOS.
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.
- Supports file management operations.
- File and directory previews.
- Filetype detection and automated execution.
This is a rather straightforward utility tool for those of you who live in the complete absence of a GUI on your system. Just type in the battery-level command, and it will give you a clear percentage indication of how much juice is left in your system.
- Great for minimalism enthusiasts.
Love to code at night, but don’t love the bright screen? Sure, there are tons of ways to adjust brightness on your system, and some laptops have integrated buttons that do it. But if you’re feeling like geeking out a bit – why not adjust the percentage with a simple command line syntax?
- Enables you to change the value of screen brightness from within your terminal.
GoTTY can transform your terminal into a web application. If you are running some extensive tools from the terminal and want to have access to them on the go, simply run a GoTTY instance and have a web address available to monitor the process.
- You can specify custom web address and port numbers.
- You can enable clients to write commands.
- Enable user credentials for authentication protection.
- You can specify custom certifications for additional security layer.
If terminal is your home, why not add an additional layer of web search capabilities. The Web-Search-CLI library is ideal for searching the web based on custom inputs. Apart from Google, there are ~100 other supported providers, such as: Imgur, GitHub, Wikipedia, and many other developer-friendly websites.
- Providers are keyword-based so that you can type ‘s $provider $term’.
- You can add your custom providers.
- Server mode for enabling a web interface.
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.
- All file management can be done from the command line.
- Downloads can be queued up in segments.
- Custom Header and Proxy support.
Remote Share CLI was created to enable developers and Unix system users such as yourself to quickly share important files with the world, presumably your co-workers or friends you’re collaborating on a project with. The first version of this tool could only share files locally; however, with the CLI version, you can share with anyone.
- One-step file upload to the web.
- Automated activity monitoring that closes the app based on inactivity and/or download signals.
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!
- Hub strives to create a more pleasant user experience for standard GitHub commands.
- Integrated support for GitHub Enterprise.
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.
- Extensive key bindings for a smooth experience.
- Custom options and appearance for each terminal.
- Well-organized documentation that shows how to make tmux a part of your permanent productivity workflow.
Metadelta CLI is an effective way to solve your math problems in the terminal, without the need to load up your Python or seek an external website. Metadelta can do derivative math simply and quickly.
- Supports arithmetic, as well as symbolic math problem inputs.
It’s not uncommon knowledge that FFMPEG encoded GIFs come out a little choppy, largely because FFMPEG uses a limited color palette which doesn’t have the capacity to cover the full range of colors. GifGen differs in that it does multiple encodes for the GIF. It analyzes colors for pixels individually, and then uses that palette to encode the actual GIF.
- Custom color palette based on the colors within the visual file.
- You can specify the framerate for the final GIF.
- Works for Linux and MacOS.
Gifsicle is a universal CMD tool for all your GIF management needs. Gifsicle can create, edit, and organize information about your GIF files. Gifsicle can combine multiple animations into a single GIF, it can customize single frames, and do lots of color customization for individual aspects of a GIF.
- Extensive color management options.
- Custom color maps depending on a situation.
- Animation optimization for performance.
If you’re a developer who actively develops programs for the Open Source community, then chances are you will eventually want to provide your README files with animated explanations of how your programs work in the terminal or outside of it. TTYGIF enables you to convert any terminal screen recordings into smooth GIF files.
- Lets you create animated documentations and walk-throughs for your programs.
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.
- Plugin-oriented structure, so anyone can create their optimization patterns, or choose the ones from the community.
Ever thought about giving your terminal a makeover in the form of a screensaver? Well, it turns out that someone cape up with the idea to do just that, so we couldn’t resist including this little visual wonder. All you need to get this to work is Bash V4+, and you have yourself a way to hibernate your own terminal with a colorful pipes screensaver.
- For personalization, you can define custom settings for the way that the pipes appear on the screen.
WOPR is a custom-built markup for your terminal that can turn markup data into presentations, reports, and infographics directly within the terminal window. WOPR relies strictly on the blessed-contrib library (from the same author) which creates dashboards in ASCII format.
- You can convert the graphs into a web-friendly format and host them online.
Pocket is one of the most well-known bookmarking apps that you can find, and it’s extremely reliable for saving and storing your most favorite links on the web. The pockyt library helps you manage your Pocket account right from the terminal. This command-line client interfaces the Pocket API and provides a way to interact with your pocket collection.
- You can fetch links and their excerpts and save them in a local file.
- You can search using custom tags and open those links in your browser.
- You can upload a new list of links from a TXT file.
Tired of writing code? Need to take a break? Just learned about a new hacker movie release you want to check out? Why not do it in the traditional fashion of running a command from your terminal? The Movie-CLI lets you quickly fetch information about a movie; just type in the name and you’ll get all the juicy data output.
- You can compare two movies to see their main technical differences.
iTunes-Remote uses JXA (Node.js) to create a terminal-based iTunes experience. It’s simple enough to let you navigate music folders, and includes all the native music management functions.
- Play music on your MacOS without leaving the terminal.
Obviously iTunes is only for Mac computers, but what if you want something that works alongside all Unix based systems? The answer is C* Music Player (cmus). This nifty little program creates a musical enterprise right in your terminal, letting you navigate and manage your music folders.
- You can use plugins to manage input and output file types.
- MP3 and Ogg streaming (SHOUTcast/Icecast).
- Instant startup, even with thousands of tracks.
How about ditching the web UI of Facebook, and using FB only from the command line? Well, thanks to Facebook’s openness towards developers, it is possible, and the usability is far greater than you’d expect. The Facebook-CLI is an all-in-one solution for using Facebook from your shell. All you need to do is create a new app for the Facebook API so that you can connect to the site using your credentials.
- Includes commands like events, photos, videos, post new stuff, feeds, likes, and more.
Likewise, Oysttyer is a terminal-interface for Twitter users, and it seems that these days devs are more keen towards using Twitter to discuss development than Facebook. Similarly to the above situation, you will need to create a Twitter App to authorize your own account for access to the site through your CMD.
- It covers all of the Twitter API features, so you can fully take control of your Twitter account.
YouTube-DL is a Python-built program that allows you to download videos from YouTube without having to leave your terminal. It is a convenient piece of software if you ever stumble across an important, or relevant, talk that you like, letting you download it instantly to your computer and save for future use.
- You can specify a proxy for downloading.
- Playlist support means you can download full playlists at once. Download videos with a particular title (regex based).
- Lots of options for downloading.
Medium is a growing blogging platform that’s gaining popularity within the developer community. It provides a beautiful UI for publishing stories that get views, and has the option for users to leave comments and highlight individual paragraphs of stories. Now, you can bring the Medium experience to your favorite place on the planet: the terminal!
- Some of the available commands include listing the top stories, reading, opening URLs with a browser, and searching based on custom input.
- Custom HTML parser that you can use to fetch a specific content output from the given website.