Quick Links

Whether you're a new Linux user or you've been using Linux for a while, we'll help you get started with the terminal. The terminal isn't something you should be scared of -- it's a powerful tool with lots of uses.

You can't learn everything you need to know about the terminal by reading a single article. It takes experience playing with the terminal firsthand. We hope this introduction helps you get to grips with the basics so you can continue learning more.

Related: 10 Basic Linux Commands for Beginners

Basic Terminal Usage

Launch a terminal from your desktop's application menu and you will see the bash shell. There are other shells, but most Linux distributions use bash by default.

launch-terminal-on-ubuntu

You can launch a program by typing its name at the prompt. Everything you launch here -- from graphical applications like Firefox to command-line utilities -- is a program. (Bash actually has a few built-in commands for basic file management and such, but those function like programs, too.) Unlike on Windows, you don't have to type the full path to a program to launch it. For example, let's say you wanted to open Firefox. On Windows, you'd need to type the full path to Firefox's .exe file. On Linux, you can just type:

firefox

open-firefox-from-terminal

Press Enter after typing a command to run it. Note that you don't need to add an .exe or anything like that -- programs don't have file extensions on Linux.

Terminal commands can also accept arguments. The types of arguments you can use depends on the program. For example, Firefox accepts web addresses as arguments. To launch Firefox and open How-to Geek, you could run the following command:

firefox howtogeek.com

Other commands you would run in the terminal function just like Firefox, except many run only in the terminal and don't open any sort of graphical application window.

Installing Software

One of the most efficient things to do from the terminal is install software. Software management applications like the Ubuntu Software Center are fancy frontends to the few terminal commands they use in the background. Instead of clicking around and selecting applications one-by-one, you can install them with a terminal command. You even even install multiple applications with a single command.

On Ubuntu (other distributions have their own package management systems), the command to install a new software package is:

sudo apt-get install packagename

This may seem a bit complicated, but it's working just like the Firefox command above. The above line launches sudo, which asks for your password before launching apt-get with root (administrator) privileges. The apt-get program reads the arguments install packagename and installs a package named packagename.

However, you can also specify multiple packages as arguments. For example, to install the Chromium web browser and Pidgin instant messenger, you could execute this command:

sudo apt-get install chromium-browser pidgin

installing-software-in-ubuntu-from-terminal

If you just installed Ubuntu and wanted to install all your favorite software, you could do it with a single command like the above one. You would just need to know the package names of your favorite programs, and you can guess them fairly easily. You can also refine your guesses with the aid of the tab completion trick below.

For more in-depth instructions, read How to Install Programs in Ubuntu in the Command-Line.

Working With Directories and Files

The shell looks in the current directory unless you specify another directory. For example, nano is an easy-to-use terminal text editor. The command nano document1 tells nano to launch and open the file named document1 from the current directory. If you wanted to open a document located in another directory, you'd need to specify the full path to the file -- for example, nano /home/chris/Documents/document1 .

If you specify a path to a file that does not exist, nano (and many other programs) will create a new, blank file at that location and open it.

To work with files and directories, you will need to know a few basic commands:

  • cd -- That ~ to the left of the prompt represents your home directory (that's /home/you), which is the terminal's default directory. To change to another directory, you can use the cd command. For example cd / would change to the root directory, cd Downloads would change to the Downloads directory inside the current directory (so this only opens your Downloads directory if the terminal is in your home directory), cd /home/you/Downloads would change to your Downloads directory from anywhere in the system, cd ~ would change to your home directory, and cd .. would go up a directory.
  • ls -- The ls command lists the files in the current directory.
  • mkdir -- The mkdir command makes a new directory. mkdir example would create a new directory named example in the current directory, while mkdir /home/you/Downloads/test would create a new directory named test in your Downloads directory.
  • rm -- The rm command removes a file. For example, rm example removes the file named example in the current directory and rm /home/you/Downloads/example removes the file named example in the Downloads directory.
  • cp -- The cp command copies a file from one location to another. For example, cp example /home/you/Downloads copies the file named example in the current directory to /home/you/Downloads.
  • mv -- The mv command moves a file from one location to another. It works exactly like the cp command above, but moves the file instead of creating a copy. mv can also be used to rename files. For example, mv original renamed moves a file named original in the current directory to a file named renamed in the current directory, effectively renaming it.

This may be a bit overwhelming at first, but these are the basic commands you need to master to effectively work with files in the terminal. Move around your file system with cd, view files in the current directory with ls, create directories with mkdir, and manage files with the rm, cp, and mv commands.

Tab Completion

Tab completion is a very useful trick. While typing something -- a command, file name, or some other types of arguments -- you can press Tab to autocomplete what you're typing. For example, if you type firef at the terminal and press Tab, firefox automatically appears. This saves you from having to type things exactly -- you can press Tab and the shell will finish typing for you. This also works with folders, file names, and package names. For example, you can type sudo apt-get install pidg and press Tab to automatically complete pidgin.

In many cases, the shell won't know what you're trying to type because there are multiple matches. Press the Tab key a second time and you'll see a list of possible matches. Continue typing a few more letters to narrow things down and press Tab again to continue.

For more tricks like this one, read Become a Linux Terminal Power User With These 8 Tricks.

Mastering the Terminal

At this point, you should hopefully feel a little bit more comfortable in the terminal and have a better understanding of how it works. To learn more about the terminal -- and eventually master it -- continue your journey with these articles:

Linux Commands

Files

tar · pv · cat · tac · chmod · grep ·  diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr

Processes

alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap

Networking

netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

RELATED: Best Linux Laptops for Developers and Enthusiasts