What is a CLI, aka command line interface? In short, the command line interface is a way of interacting with your computer. And if you ever want to be a serious programmer, or even half-serious, you need to learn command line skills.
Admittedly, the CLI looks intimidating to a lot of first-timers. (It was for me.) But it’s not that hard to learn command line basics.
In this article, my friend Michael Gattozzi is joining us to help explain some key command line concepts! Let’s dive into more details on the command line for beginners and how to use command line programming to interact with your computer.
Table of Contents
- What Is Command Line Interface/CLI?
- Shell vs. Bash vs. Terminal vs. Command Prompt
- What is the Difference Between the CLI and GUI?
- Why Should I Learn the Command Line?
- What Does the Command Line Look Like?
- How to Learn Command Line Skills
Disclosure: I’m a proud affiliate for some of the resources mentioned in this article. If you buy a product through my links on this page, I may get a small commission for referring you. Thanks!
What Is Command Line Interface/CLI?
💡 The command line, or command-line interface (CLI), is a text-based interface that allows you to type commands via lines of text that are then processed by the computer.
For example, you can learn how to use command line skills to quickly rename hundreds of files in a folder, completely erase a drive, navigate through files and folders, or pull up a list of every program installed on your computer — without ever using your mouse!
Depending on whether you use Windows or Mac/Linux, there will be differences in the CLI.
As Michael notes, “most distributions of Linux and Mac run bash as their choice of shell for the terminal.” Nonetheless, all of the commands are standard across Unix machines.
While Windows does have a command line interface, unless you work in IT or are doing Penetration Testing, Michael wouldn’t recommend learning it as a prerequisite. The Windows commands and how its CLI works are different from the Linux and Mac CLI.
What is the Difference Between Shell, Bash, Terminal, and Command Prompt?
When we talk about the command line, there are a few terms that might come up and that you should know.
The term “shell” is typically used to reference any command line interface. It’s the software that interprets and executes the commands. On a Mac, the CLI application is called “Terminal,” while on Windows, it’s called “Command Prompt.”
Bash is a type of shell and stands for “Bourne Again Shell.” It is usually the default shell in Linux systems, but there are other shells available, including ksh, tcsh, dash, and zsh.
What is the Difference Between the CLI and GUI?
Both the CLI and the Graphical User Interface (GUI) allow users to interact with a computer system. However, there are a few differences.
As Michael explains,
“When you use programs with graphical user interfaces (GUI) certain buttons perform certain tasks on the computers. The command line interface does that too, but it allows you to do it with more precision and power. You type words and hit enter, the shell interprets those words, and works with the OS kernel and files to execute the command.”
Okay, this may sound really confusing. So let me break it down.
The GUI is what most people use 95% of the time to tell their computer what to do. Below is the GUI version of opening the folder “myapp” on my desktop.
That looks normal, right?
The image below has been taken inside the CLI on my computer. Here, I am also opening the folder “myapp” and then listing the other files/folders within it.
According to Google, a Kernel is:
“… the central component of most computer operating systems; it is a bridge between applications and the actual data processing done at the hardware level.”
The point is, both the GUI and CLI are ways you can interact with your computer. But when it comes to the command line, once you learn the commands, it is faster and more powerful to navigate around your computer. That’s why many programmers prefer it.
In fact, there are lots of directions your computer can only execute if you tell it to do so via the command line. That’s yet another reason why programmers must learn how to use it.
Start coding now
Stop waiting and start learning! Get my 10 tips on teaching yourself how to code.
Why Should I Learn the Command Line?
Why is learning command line skills important?
According to Michael,
“A lot of very useful programs work best on the CLI and it’s easier to set up and run them on there. For instance git, an often-used software versioning system, was designed exclusively for the command line (though someone has probably made a GUI). It’s easier and faster to use and work on the code base with it.”
Despite whether you have used it or not, I am sure most of you reading this have heard of Github or Bitbucket before. This is what Michael is talking about above. Lots of programmers working individually or in collaborative environments “push” their repository to Github or Bitbucket. There are also many other features and benefits to using git.
Moreover, Michael explains:
“The CLI allows you to do manipulations with your system’s internals and with code in a much more fine-tuned way.. [It] offers greater flexibility and control than a GUI regardless of what OS is used. Many programs that you might want to use in your software that are hosted on say Github also require running some commands on the CLI in order to get them running.”
Basically, it’s really, really important that you at least have a basic understanding of the command line. But to be a full-fledged developer, you have to be comfortable working in the command line interface.
What Does the Command Line Look Like?
Anyone with a computer can easily start using the command line, as it comes preinstalled with Windows, Linux, and Mac computers. You don’t need any special command line tools, just the skills!
To open the command prompt in Windows, open the Start menu, click the Windows icon, scroll down to find the Windows System folder, and click Command Prompt.
To open the terminal on Mac, open spotlight search (command + the space bar), type in “terminal,” and select the terminal application.
How to use command line interfaces begins with understanding the components of a command. CLI coding is made up of a few elements: a prompt, a command to run, an option/flag, and an argument/parameter.
Prompts: Every command line starts with a prompt, which is provided automatically by the terminal and usually ends with a $ or %. The prompt depends on the details of your system and can be customized (which is a more advanced topic).
Commands: This is where you tell the computer what to do. Some examples of commands include:
- cd: change directory
- open: open files
- mv: move a file
- mkdir: create a directory
- top: list actively running computer processes
- ditto: copy contents of folder to a new folder
Options: Bits of info that customize how a command works. For example, for the Linux ls (ls) command that allows you to view a list of files and folders in a given directory, options include:
- -l: shows permissions, the user who made it, and other details
- -a: shows hidden files
- -S: sort by file size, largest first
- -C: list entries by columns
Arguments: An argument could be the string of characters you want to print or paths to files or folders. Not all programs need arguments or parameters.
How to Learn Command Line Skills
So, why learn command line skills for your coding journey? And if you want to learn the command line, what’s the best way to go about it? In this section, we’ll quickly cover some of the important Q&As about how to learn the command line.
🤔 Who Should Learn How to Use Command Line Interfaces?
Learning how to operate within the command line has practical applications for any sort of programmer, especially those working on the backend. As Michael says:
“If you’re a backend developer [it] matters more since you’ll be dealing with the server aspect of it, such as what OS is it running, configuration files, and other things needed to make sure it is running …. [also] making sure the code for your site is working.”
Nonetheless, even if you’re a front end developer, knowing how to work with the CLI is beneficial:
“Front end developers don’t need to know it as much as you are really just designing the pages for the website, though it certainly wouldn’t hurt to know it if you’re trying to beef up your resume … And you’ll definitely need to know some of it if your team is using git.”
Proficiency with the command line isn’t only beneficial for developers. It can also be helpful for anyone who wants to work closely with developers, such as UX designers and product managers. Some people, like Michael, use the CLI almost exclusively for they find it preferable to the GUI.
Ultimately, learning command line basics (at least) is crucial if you ever want to be taken seriously as a developer at the professional level.
⏰ How long does it take to learn the command line?
The command line is relatively easy to learn, so it should take only a few weeks to get familiar with it. Of course, there are more advanced topics that will take longer to master, but understanding the syntax and how it works should only take a few weeks.
For example, Codecademy’s Learn the Command Line takes eight hours to complete. You can learn the basics of the command line in Coursera’s Practical Introduction to the Command Line in just two hours.
❓ When to learn the command line
Want to get better with HTML?
Download my free HTML5 cheat sheet below.
💻 Where to learn command line programming
What Michael Recommends
As far as recommended resources go, Michael recommends:
- LinuxCommand.org: An excellent resource to begin learning the CLI, it builds from the basics up to shell scripting
- Arch Wiki’s Command Line Shell: While this information may be from the Arch Wiki it is a resource that documents many things and usually has links to other resources.
- Zed Shaw’s Command Line Crash Course: Covers Linux, Mac and Windows and is well worth the read if you just want to learn the basics.
What I Recommend
- Unix Command Cheat Sheet: First things first, check out my handy Unix command line cheat sheet.
- Learn Enough Command Line to Be Dangerous by Michael Hartl is an introduction to the Unix command line for complete beginners.
- Pluralsight’s Meet the Command Line: This Unix command line course starts with the basics and ends with advanced tips and tricks. (Read our full Pluralsight review here.)
- Team Treehouse’s Introduction to the Terminal: I love Treehouse – their courses are taught by professionals and you can take them at your own pace.
- Codecademy’s Learn the Command Line: This course will teach you to navigate, access, and modify files and folders on your computer—all without a mouse! (Read our full Codecademy review here.)
- Udacity’s Linux Command Line Basics: Learn the basics of the command line interface of a Linux server: the terminal and shell (GNU Bash). This course includes an introduction to files and directories in the Linux filesystem.
- Launch School’s A Guide to Git and Github: This free beginner-friendly ebook offers a gentle intro to Git and GitHub.
- Skillshare’s Command Line Interface / Linux Terminal for Absolute Beginners: Learn how to use the terminal on any Linux or Unix based machines.
Now it’s up to you to start learning command line programming! The command line for beginners is a fantastic foundational skill to help set yourself up for future success as a developer.
About the Author
Michael Gattozzi is a student at Umass Boston and a member of the MA Army National Guard. In his free time he likes to write scripts, read technical and non technical things, and tinker with his laptop for the perfect setup. He’s also a follower of the Google Dark Arts and an Arch Linux die hard fan.