A terminal is an application on Unix-based operating systems that provides a command line interface (or CLI), so you can interact with the operating system’s shell and access/control its different services.
On macOS, the terminal is, fittingly, called Terminal, and it uses the Z shell (Zsh) as the default login shell. Using this command line Terminal, you can easily navigate system directories, copy/move files, get system information, securely remote login to other systems, and automate tasks/actions on your Mac efficiently.
However, to perform any of these actions, you need familiarity with terminal commands (and their syntaxes). In this guide, we’ll list down all the essential macOS Terminal commands and how to use them so you can use them effectively on your Mac.
Essential macOS Terminal Commands
Executing commands on any operating system requires a terminal. macOS already comes equipped with one, and you can find it under Applications > Utilities.
Additionally, you can also add it to your dock for quick access. For this, run Terminal, right-click on its icon in the dock, and select Options > Keep in Dock.
Now that you’ve got Terminal running on your Mac, all you need to do is type in a terminal command and hit return to execute it.
For your convenience, we’ve classified commands into several categories so it’s easier to follow them:
1. Basic Terminal Commands
Before you jump into action-specific Terminal commands, below are some basic commands you should know.
The man command displays a user manual of the command for which you make the query. Using it, you can get more information about a command, such as its description, usage, available options, and variations, among other things.
will give you all the details you need to know about the cd (change directory) command.
As its name suggests, the clear command clears the shell and gives you a blank window to input your commands. So if you’ve got your Terminal window filled with results from all your previous commands, simply run clear to get a clean slate.
sudo is the most powerful terminal command. It gives you administrative (root) privileges to execute actions on macOS. You’ll need to use it when you want to execute a command that demands superuser access.
For example, if you want to shut down your Mac through Terminal, you’ll need to run:
and enter your user password for the command to execute.
The history command comes in handy when you want to find out all the commands you’ve executed in the past. For instance, if you’ve disabled/enabled some service on your Mac but don’t exactly remember its name or the command you’ve used, you can use this command to find out the service and revert your action.
2. Navigating Directories
Moving between different directories is one of the basic actions you’ll have to perform to navigate your file system. You’ll need to perform it when you want to create a new file, move a file between directories, or launch programs within a directory.
However, before you change directories, it’s important to know your present working directory. To do this, run:
Similarly, you might also need to view the contents of a directory to identify if it holds the file/directory you want to access. Use the following command and its variations to do this effectively:
For a detailed breakdown:
To view all the contents of a directory, including the hidden files and directories:
Once you’ve identified your current working directory and the directory you want to navigate to, the cd command will help you move between directories. The following is an explanation of how to use it.
To go to the Home directory:
When you want to move to a particular directory:
To move up to the parent directory:
If you want to go back to the previous working directory:
Lastly, when you have to go to the root directory, run:
3. Directory Management
Once you navigate to your desired directory, you can perform several operations there, everything from creating and editing new directories to and deleting the existing ones.
To create a directory, run:
When you want to create multiple directories at once:
mkdir directory_name_1 directory_name_2 directory_name_3
If you want to remove/delete a directory, run:
For times when you want to delete a non-empty directory, you can use the -R (recursive) option to delete the directory along with all its content:
rm -R directory_name
4. File Management
Much like directory management, Terminal also lets you perform file operations, so you can create new files, edit them, and delete the ones you don’t need.
To create a file:
If you want to create and edit a file, run:
which will open the file in the Nano text editor. Alternatively, if you prefer using some other text editor, replace nano with the name of that editor in the above command.
To view the file type of a file on your Mac:
For times when you want to copy a file from your current directory to another directory, run:
cp file_name directory_name
cp myfile ~/Desktop/MyDocs
If there’s a need to copy a file to the same directory, but with a different name:
cp file_name new_file_name
Besides copying, sometimes there’s a need to move files between different directories. When such needs arise, you can move a file from your current directory to another directory with:
mv file_name directory_name
mv myfile ~/Documents/MyDocs
Moreover, the mv command also doubles as a rename command. To use it to rename your file, use the following syntax:
mv current_file_name new_file_name
When you want to remove/delete a file, run:
5. Installing Programs
macOS comes pre-installed with the Homebrew package manager, which lets you install programs on your Mac using the Terminal. In some sense, it’s a much easier way to install apps on your computer, as opposed to the traditional way where you’d need to go through a series of steps.
To update the Homebrew repository, run:
If you want to upgrade all the installed packages on your system:
When there’s a GUI-based application that you need to install, we’ll have to use Cask:
brew install --cask program_name
brew install --cask vlc
If it’s a non-GUI program:
brew install program_name
Do note that not all packages/programs can be installed right away: you might need to add their source repository to fetch them before running the install command.
Finally, if you want to remove a program, use:
brew uninstall program_name
6. Network Management
macOS allows you to view detailed information about your network configuration right from the Terminal window. Although you can use the GUI to view such information, the CLI approach makes the entire process quick and easy and saves you extra steps.
One of the most basic network operations is to ping a website/IP address to check for connectivity. To do this, enter:
If you want to view your device’s IP address and MAC address, run:
To find the IP address and the MAC address of all the devices connected to your network:
When you need information about the incoming and outgoing connections to your Mac, use:
For finding all the running processes on your Mac that have an active internet connection:
To get more information about a domain, use:
If you want to identify the path (and the hops) traversed by the packets from your device and to their destination address, run:
7. Process Management
If you’ve ever opened the Activity Monitor app on your Mac, you’d have seen all the active processes running on your system. These processes can be system apps, third-party apps, or other background services required by the operating system.
While, in general, you wouldn’t encounter issues with these processes, sometimes when you have a lot of them running on your device — to a point where it’s borderline close to your maximum memory/CPU limit — you might experience some lag on your system.
One way to deal with this is to use the Activity Monitor app. However, a much easier way to do it is to use the Terminal.
The first step is to identify the running processes on your system. To do this, run:
Alternatively, if you’d like to know the status of the top processes that are currently running, you can do so with:
Press q or control + C to stop.
Now, if you notice an unfamiliar process or a process that’s consuming a lot of your resources in the output of any of the above commands, you can get more information about it by running:
ps -ax | grep program_name
ps -ax | grep Safari
Here, you can see the application name under the CMD column. It’s usually listed with the absolute path of the program/application.
Upon getting to know more about the process, if you find the need to terminate it, run:
sudo killall program_name
sudo kill PID
Since we’re running the kill/killall command with sudo, you’ll need to enter your user password after entering the command to execute it.
8. Permission Management
Permissions on an operating system define who can access and modify files/directories on a computer. If you’ve got multiple users sharing the same system, you can set permissions for each user to limit their access and prevent them from viewing or modifying your system (or other) files.
Setting permissions on the Terminal is fairly easy once you get the hang of its syntax. However, before you move onto it, the first thing you’ll need to do is identify the file permissions for the file you want to modify. To do this, type:
ls -al file_name
You should be able to see file permissions on the left side of the output. A file/directory permission usually comprises eleven characters: the first character indicates if it’s a file or a directory, the next nine characters signify the permissions (and are split into groups of three, and the final character identifies if the file/directory carries extended attributes.
The first character is always either hyphen (–) or letter (d): the former represents a file, whereas the latter signifies a directory. Moving to the next nine characters, these are divided into three groups: file/directory owner, group, and other user permissions. Each of these nine places is occupied with the following characters: – (no permission), r (read), w (write), or x (execute).
By putting these characters together, you can set the permissions for a file/directory. Here’s how the permissions can be formed:
- — represents no read, write, execute permissions.
- r– shows only read permission.
- rw- means that the file can only be read and written.
- rwx signifies that the file can be read, written, and executed.
- r-x means that the file can only be read and executed.
Alternatively, you can also use numeric notation, wherein the above characters are replaced with numbers. It constitutes a total of eight numbers, and here’s a breakdown of what they represent:
- 0 – no permissions
- 1 – execute
- 2 – write
- 3 – execute and write
- 4 – read
- 5 – read and execute
- 6 – read and write
- 7 – read, write, and execute
Lastly, the eleventh character in permission notation is @. It’s referred to as an extended attribute and is unique to specific files and directories.
With the basics out, here’s how to incorporate the above information to set permissions.
To set up read, write, and execute permissions for all three access classes, run:
chmod ugo+rwx file_name
In numeric representation, you’ll need to use:
chmod 777 file_name
To do the same for all text files in a directory:
chmod ugo+rwx *txt
When there’s a need to provide all user classes with the same permission:
chmod a+rwx file_name
If you want to set permission in a way that the user class gets all three access while the group gets read and write access and other users only get read access, you’ll need to use the following command:
chmod ugo+rwxrw-r-- file_name
With the numeric representation:
chmod 764 file_name
To remove write and execute permissions for the group and other users classes, enter:
chmod go-wx file_name
chmod 744 file_name
If you’re finding it hard to use the numerical representation, you can use a chmod calculator to deduce the permission denotation for your permission requirements.
Use Your Mac Efficiently With Terminal Commands
We’ve barely scratched the surface with Terminal commands in this listicle: there’s a slew of other commands that you can use to perform pretty much all kinds of actions on your Mac.
However, that said, the commands we’ve listed above will surely help you get hold of the Terminal and enable you to use it effectively to perform trivial actions on your Mac quickly and efficiently. And over time, as you become familiar with it, you’ll be able to use it more proficiently.