How I learned to use the terminal, and you can too.

Many moons ago, I worked as a manual draftsman for a land surveying company. The boss hired a guy to take care of all the accounting and invoicing. To that end, they purchased an original IBM PC that supported two 5-1/4" floppy drives. I was fascinated. The operating system was DOS 3.1. There was no graphical user interface to navigate around the system. It was all accomplished with basic DOS commands.

One day, he handed me a blank floppy disk and told me that if I wanted to learn the computer, I needed to understand managing file and folders and how to navigate around the system. So, I went off and began learning the basic tasks.

  • Create folders (directory)
  • Understand the folder tree I was creating
  • Create files
  • Move to the new folder
  • Copy files between folders
  • Rename files
  • Move files

Really, a computer is all about files and how to manage and organize them.

Fast Forward to Today

Despite all of the advances in computer hardware and software, the terminal still lives on regardless of your operating system. The terminal is so powerful and useful, it will never go away.

I use Linux Mint and have many good choices on terminal applications.

A terminal is an application that allows you to access the command prompt. On linux I have used:

  • gnome-terminal (default)
  • terminator
  • guake
  • kitty
  • …

And there are even more terminal applications than those available.

A shell is the program that processes the commands you enter and runs them on your computer. Some linux shells include:

  • bash (default)
  • zsh
  • fish
  • …

The bottom line is your choice of shells can be configured to run on your choice of terminals.

The geeks for geeks website has a great cheat sheet for linux commands. In my learning journey, I started with the basic File and Directory Operations

Also check out this article from How-To Geek to learn some command line fu.

So What’s the Plan

So, what’s a good way to approach learning the terminal. Here’s a basic learning path:

Level 1 - Basic - Files and Folders

  • Basic Navigation and Commands: Learning basic commands to understand where you are like cd (change directory), ls (list directory contents), and pwd (print working directory) to navigate and view files and folders.
  • File and Folder Management: Learn commands for creating, renaming, and deleting files and folders, such as touch, mv, cp, and rm, mkdir, rmdir. Be cautious rm can delete files permanently no questions asked.
  • Text Editors: Familiarize yourself with a terminal text editor. Nano is a simple, friendly basic editor and to get started. Vim is more powerful but has a steeper learning curve to understand its features, that’s probably the next best step in editing files.. The cat command can be used to view file contents.
  • Searching and Filtering: Use grep to search for patterns in files and man to access manual pages for detailed command information.

25 Basic Linux Commands for Beginners Article

Level 2 - Intermediate - Users Management and Remote Servers

  • Permissions and Superuser: Understand file permissions and how to perform tasks with elevated privileges using sudo.
  • Remote Server Management: Learn to set up and use a secure shell (ssh) to connect and interact with other computers.
  • Power Tools: This is where things get really fun. Install and learn some of the amazing terminal power tools that are available these days. Here are some suggestions:
    • starship: give yourself a really cool looking prompt.
    • eza: upgrade the ls command with better color options, icons, etc.
    • bat: upgrade the cat command.
    • fzf: Take file finding to another level. Some amazing tricks with this one.
    • zoxide: navigate folders like nobody’s business.
    • ripgrep: upgrade the built-in grep command to be a super power.
    • btop++, htop: monitor cpu, disks, memory, etc.
    • Terminal File Manager: midnight commander, ranger, or yazi can help with complex file management.
    • tmux: Bring windowing-like features into the terminal where you can have multiple window panes. It even allows you to disconnect from sessions (like ssh sessions) and then resume them later.
    • httpie: It’s a command line HTTP client
    • and many, many more…

Level 3 - Advanced - Maximizing Productivity

  • Advanced Commands: Explore more advanced commands like find, sort, sed and awk for complex file manipulation and data processing tasks.
  • Advanced Editing: Time to dig into learning neovim or perhaps helix. for all your editing needs.
  • Advanced File Sync: Learn rsync and scp to do amazing things with backing up and copying files.
  • Scripting: Learn to write simple scripts to automate tasks. This can involve using shell scripting or python scripts with command-line interfaces.
  • Automate Tasks: No that you’re starting to automate things with scripts, learn how to schedule and run them unattended with cron tasks.
  • Version Control: Learn how to use git. Integrate it into your workflow to manage project files and track changes.
  • Super Powers: At this level, you will be getting into things like networking, managing virtual machines, using docker containers, managing databases, and learning best practices for security. There really is no limit.

The End Result

The thing I like about using the terminal is that I’m talking directly to the computer and it is responding back. I always loved that feeling of being able to tell the machine what to do and seeing those results happen.

My terminal exploration has led me to explore command line productivity applications. I have documented a lot of that beginning with the Using the Terminal as a Daily Driver article.

My opinion is that everyone needs to be comfortable at the command line and be able to get things done. It really builds your understanding of how a computer operates under the hood.

Enjoy the journey!