20:00: Mastering the File System from your macOS Terminal

Welcome to another stage on our terminal journey, this time to the realm of file system navigation. Mastering your macOS terminal's file navigation capabilities can dramatically streamline your workflow and give you greater control and understanding of your system.

What does this article replace?

This guide provides an alternative to Finder and other graphical file management tools in macOS. By learning to navigate the file system directly from your terminal, you can carry out tasks more efficiently, script file operations, and seamlessly integrate file management into your coding workflow.

How long will it take to set up?

It'll take about 30 minutes to read through this guide and practise the various commands. However, becoming truly proficient at navigating the file system from the terminal is a skill that you'll continue to develop over time.

5 out of 5 stars

Difficulty Rating:

Manipulating your file system directly from the terminal is an advanced task with a difficulty rating of 5 out of 5. It requires a deep understanding of file system structure, command-line tools, and various file operations. This level of control over your computer's file system is a hallmark of advanced command-line usage and can give you a sense of power and mastery.

1. Basic Navigation Commands

1.1. Present Working Directory: pwd

When you open your terminal, you'll typically start in your home directory. To know which directory you're currently in, type pwd (present working directory) and press Enter. The terminal will then print the full path to the current directory.

1.2. Change Directory: cd

To navigate to a different directory, use the cd (change directory) command followed by the path of the directory you want to move to. For example, cd /Applications will navigate to the Applications directory.

  • To go back to the home directory, simply type cd and press Enter.
  • To go up one directory, type cd ...

1.3. List Contents: ls

To list the contents of the current directory, type ls and press Enter. If you want to view more information about the files and directories (such as permissions, owners, size, and modification date), use ls -l.

2. Creating, Opening, and Editing Files

2.1. Create a New File: touch

To create a new file, use the touch command followed by the name of the file you want to create, for example, touch example.txt.

2.2. Open a File: open

To open a file with its default application, use the open command followed by the filename, like open example.txt.

2.3. Edit a File: nano, vim, emacs

There are several text editors you can use in the terminal:

  • Nano: Nano is a simple and beginner-friendly editor. To open a file with Nano, type nano example.txt.

  • Vim: Vim is more powerful and

has a steeper learning curve. Open a file with Vim using vim example.txt.

  • Emacs: Emacs is another powerful editor, which some users prefer over Vim. Open a file with Emacs using emacs example.txt.

In each of these editors, make your changes then save and exit.

  • In Nano, press Ctrl + O to save, then Ctrl + X to exit.
  • In Vim, press Esc, type :wq, then press Enter.
  • In Emacs, press Ctrl + X, then Ctrl + S to save, and Ctrl + X, then Ctrl + C to exit.

3. Creating and Navigating Directories

3.1. Create a New Directory: mkdir

To create a new directory, use the mkdir command followed by the name of the directory you want to create, like mkdir new_directory.

3.2. Change into the New Directory

To navigate into the newly created directory, use the cd command, like cd new_directory.

And there you have it! With these basic commands, you can navigate through your file system, create, open and edit files, and even create new directories, all from your terminal. Remember, each command has additional options and functionalities. You can always type man followed by the command (e.g., man ls) to access the manual pages for a more in-depth look into what each command can do.

4. Copying, Moving and Deleting Files

4.1. Copy a File: cp

To copy a file, use the cp command. The syntax is cp source destination. For example, to copy file1.txt to the same directory with the name file2.txt, you would use cp file1.txt file2.txt.

4.2. Move or Rename a File: mv

To move a file (or to rename a file), use the mv command. The syntax is similar to cp: mv source destination. For example, to rename file1.txt to file3.txt, you would use mv file1.txt file3.txt.

4.3. Delete a File: rm

To delete a file, use the rm command, followed by the name of the file. For example, to delete file2.txt, you would use rm file2.txt.

Warning: Be careful with the rm command. Once you delete a file, it's gone.

5. Redirection and Piping

5.1. Redirection: >, >>

In Unix-like systems, you can redirect the output of a command to a file. For example, if you want to save the output of ls -l to a file, you would use ls -l > output.txt. This will overwrite output.txt. If you want to append to the file without deleting the current content, use >> instead, like ls -l >> output.txt.

5.2. Piping: |

Piping allows you to use the output of one command as the input to another command. This is particularly useful for chaining commands together. For example, you can pipe the output of ls -l to grep txt to find all txt files, like ls -l | grep txt.

6. File Permissions and Ownership: chmod, chown

6.1. Change File Permissions: chmod

File permissions determine who can read, write, or execute a file. You can change file permissions with

the chmod command. For example, to give the user read, write, and execute permissions on file1.txt, you would use chmod u+rwx file1.txt.

6.2. Change File Ownership: chown

The chown command is used to change the owner of a file. For example, to change the owner of file1.txt to the user "john", you would use sudo chown john file1.txt.

Note: The sudo command is used to run commands with superuser privileges ("root" privileges). Be very careful when using sudo, as it allows you to make critical changes to your system.

7. Viewing File Content: cat, less, head, tail

To view the content of files, you can use commands like cat, less, head, and tail.

  • cat displays the entire content of the file.
  • less allows you to scroll through the content of large files.
  • head shows the first few lines of a file (10 lines by default).
  • tail shows the last few lines of a file (also 10 by default).

These commands and many more allow you to interact with your macOS file system directly from the terminal, providing a powerful and flexible way to manage files and directories.


By now, you've mastered the essentials of navigating the file system from your terminal. But, as with any language, fluency comes with practice. Spend some time getting comfortable with these commands, and you'll soon be navigating your file system like a pro.