Data Science and Data Proicessing

7 Awesome Command-Line Tools

Some familiar tools and some you probably haven’t tried yet

Aug 24 · 6 min read
Image for post
Photo by Maxwell Nelson on Unsplash.

The terminal/command line is a sacred tool that developers have under their belt. It is possibly the most used tool for programmers. I believe that is because of how lightweight it is and also the unbelievable amount of things you can do with it. Some developers even go the extra mile to do everything inside of the terminal. Kudos to them.

I’ll be showing some of the CLI (Command-Line Interface) tools that I personally think are awesome and use pretty much on a daily basis. Granted, there are so many tools out there for the command line that this list barely scratches the surface.

1. vim

What kind of terminal list wouldn’t include vim? There are tons of debates about whether or not vim is the editor for programming or if it’s a tool invented for lunatics, but we will not be discussing that here.

For those of you who are not familiar with vim, it is a text editor that improves on the out-of-the-box vi tool shipped with any UNIX system. It allows you to edit or create a file through your terminal.

Image for post
Basic usage of vim.

This tool is helpful if you want to quickly edit a file while you are in the terminal and don’t want to open up your IDE or a GUI text editor like VSCode or Sublime Text.

Keep in mind that this tool can be a little tricky to use when first learning it, as many of the shortcuts are not as intuitive as modern-day text editors. However, if you do invest the time to learn vim, it can be extremely powerful for a developer. This is why vim has a huge community. This community is so large that developers will even make plug-ins for popular IDEs and text editors to emulate the vim experience.

2. vtop

top is a very common command that is used within the terminal to display information about processes that your system has running and general information about the memory and CPU usage of your machine. If you have ever used top, it can be a little confusing to look at. So how can we make this information a little easier to process? Introducing vtop, an implementation of top that has graphs!

Image for post
vtop in action.

I like having a visual guide for anything, and having one for top information is killer. I have this running all day so that I can keep an eye on my system’s load.

You’re going to need npm for this tool.

3. fzf

This next one is a really cool tool. It’s called fzf. It’s a general-purpose command-line fuzzy finder that allows you to find files based on whatever you type. On its own, it’s an OK tool. It will list all the different files in the current directory you’re in. You can think of it as a Spotlight search, but in your terminal.

Image for post
Fuzzy-finding in my home.

Now the real power of this tool comes when you combine fzf with other existing commands like kill or cat. In order to do this, you’re going to need to run the install script that is provided with the package or inside the repository:

/usr/local/opt/fzf/installor~/.fzf/install

You will need to restart your terminal or source your .bashrc. It will ask you some questions, and once you’ve answered all of them, you will have unlocked fzf's fullest potential.

Now you can run commands like:

cat **[TAB]
vim **[TAB]
ssh **[TAB]

fzf will kick into gear and find all the possible entries that can work with the command:

Image for post
Similar to file finding an IDE.

Another cool application of this is using it with the kill command. This is probably the one I use most. The days of typing ps -ef | grep [process-name] and then either manually typing or copying the process ID to kill are long gone. Instead, you can run kill [tab] or kill -9 [tab]. Fuzzy-find the process you want to kill and press enter. It will automatically fill the process ID in for you.

Image for post
Awesome use case.

There are tons of other use cases that I can go over, but these are the main ones I would like to point out.

4. trash-cli

Ever rm -rf something and immediately realize that it wasn’t something you wanted to delete forever? I hope this isn't just me. If you don’t want to deal with that kind of anxiety, then I would recommend using trash-cli.

This tool basically just puts items inside your system’s trash instead of wiping it completely from existence.

Image for post
Moves files into the trash instead of oblivion.

Instead of typing out trash, I have an alias in my .bashrc that replaces the rm command:

alias rm=trash

Now when something is deleted using rm, you don’t have to worry about it being gone forever. You can simply retrieve it from the trash if you like. And yes, this works with different flags that rm provides.

5. speed-test

This one is pretty straightforward. If you want to see how fast your internet is without having to open up Chrome, speed-test is for you.

Image for post
I’m not showing you all my horrible speeds. You get the idea.

This is a tool I use quite frequently and always like to have in my back pocket just so that I don’t have to chew up additional resources from Chrome. Also, it’s pretty cool to do it in the terminal.

You’re going to need npm for this tool.

6. wikit

This one is a much smaller repo, and I love it. I have my terminal open all day via iTerm2, so being able to search Wikipedia is awesome. wikit allows you to do that from the terminal. You’d be surprised by how often I use this one on a day-to-day basis.

Image for post
“wikit apple company” if you want to search Apple.

You’re going to need npm for this tool.

7. cointop

This last one might not be for everyone, but I use it every day. For those of you who are in the crypto world, then you probably already know about this tool.

I dabble in cryptocurrency here and there, and keeping up with so many different types of coins — let alone their prices — can be exhausting. With prices moving so quickly in the crypto world, cointop is a lifesaver.

cointop is a play on the top command. However, instead of displaying system information, cointop displays information about cryptocurrencies.

Image for post
stonks

Conclusion

There are so many more CLI tools that I use on a day-to-day basis, but these are the ones that stand out to me in my toolkit. I can go on forever about CLI tools. They are one of my favorite things to tinker with in the world of software. I always get excited whenever I find a new CLI tool that allows me to accomplish something so minuscule.

I also love the fact that most of these tools are community-driven — a bunch of developers just working on a small tool because they think they’re neat.

I’ll see you all in the next one!

+ Recent posts