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), andpwd(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, andrm,mkdir,rmdir. Be cautiousrmcan delete files permanently no questions asked. - Text Editors: Familiarize yourself with a terminal text editor.
Nanois 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.. Thecatcommand can be used to view file contents. - Searching and Filtering: Use
grepto 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
lscommand with better color options, icons, etc. - bat: upgrade the
catcommand. - 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
grepcommand 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,sedandawkfor complex file manipulation and data processing tasks. - Advanced Editing: Time to dig into learning
neovimor perhapshelix. for all your editing needs. - Advanced File Sync: Learn
rsyncandscpto 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
crontasks. - 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!