CIS120 Linux Fundamentals by Scott Shaper

pwd, cd and tree Commands

The cd, pwd, and tree commands are essential tools for navigating the Linux file system efficiently. The cd (change directory) command allows users to move between directories, making it possible to access files and organize the system effectively. The pwd (print working directory) command helps users confirm their current location within the file system, which is particularly useful when working with deeply nested directories. The tree command provides a structured view of the directory hierarchy, displaying files and subdirectories in an easy-to-read format. Together, these commands enable users to move through the file system, verify their position, and visualize the directory structure, improving workflow and organization.

Quick Reference

Command Description Common Use
pwd Print working directory Show current location
cd Change directory Navigate between directories
tree Display directory structure View folder hierarchy

pwd Command

The pwd command in Linux stands for "print working directory." This command is used to display the current directory path you are working in. It is especially useful for verifying your location within the file system, which can help avoid confusion when navigating complex directory structures.

When to Use pwd

The pwd command is particularly useful in these scenarios:

Command Options

Option Description
-P Display the physical path (resolves symbolic links)
-L Display the logical path (default behavior)
# Basic usage
pwd

# Show physical path (resolves symlinks)
pwd -P

# Show logical path (default)
pwd -L

Common Use Cases

# Verify current location
pwd

# Use in scripts
CURRENT_DIR=$(pwd)
echo "Working in: $CURRENT_DIR"

# Check path after navigation
cd /some/path
pwd

cd Command

The cd command in Linux is used to change the current working directory. This command is fundamental for navigating the file system. Understanding how to use cd effectively will help you move between directories quickly and efficiently.

Path Types

Understanding the difference between relative and absolute paths is crucial for effective navigation in the Linux file system. Think of it like giving directions: absolute paths are like giving someone your full address, while relative paths are like saying "go two blocks down from where you are now." Though I am adding this to the cd command section, absolute and relative paths are also used with other commands, such as ls, mv, cp, rm, mkdir, rmdir, touch, cat, less, grep, chmod, chown, find, and tar. These commands can all use either relative paths (like ./file.txt or ../folder/) or absolute paths (like /home/user/file.txt). You will learn more about these commands in later sections.

Absolute Path

An absolute path is the complete path from the root directory to the desired directory or file. It always starts with a forward slash /, which represents the root of the file system.

# Examples of absolute paths:
cd /home/user/Documents
cd /var/log
cd /usr/local/bin
cd /etc/apt/sources.list

These commands use absolute paths to navigate to specific locations, regardless of where you currently are in the file system. It's like saying "go to 123 Main Street" - it works from anywhere!

Relative Path

A relative path specifies a location relative to your current directory. It does not start with a forward slash /. Think of it as giving directions from where you are standing.

# If you're in /home/user:
cd Documents              # Goes to /home/user/Documents
cd ../Downloads          # Goes to /home/Downloads
cd ../../var/log         # Goes to /var/log
cd ./Pictures/Vacation   # Goes to /home/user/Pictures/Vacation

Special characters in relative paths:

Real-world analogy: If you're in your living room and want to go to your bedroom, you could either:

Both methods work, but relative paths are often shorter and more convenient when you're already close to your destination!

Common Path Shortcuts

Here is a table of some of the most common path shortcuts you can use with the cd command and their descriptions:

Shortcut Description
.. or ../ Move up one directory level (parent directory)
~ Change to your home directory. Important: While ~ takes you directly to your personal home directory (like /home/username), /home takes you to the main directory that contains all users' home folders. When you log in, you're automatically taken to your home directory, which is why ~ is the default shortcut for it. Don't ever go to /home unless you're a system administrator.
- Change to the previous directory
/ Change to the root directory
. or ./ Stay in the current directory

Common Examples

Here are some practical examples of using the cd command:

Basic Navigation
# Change to a specific directory
cd /home/user/Documents

# Move up one directory level
cd ..

# Change to home directory
cd ~

# Change to root directory
cd /

# Return to previous directory
cd -

# Stay in current directory
cd .
Combining Commands
# Change directory and verify location
cd /home/user/Documents && pwd

# Navigate up two levels
cd ../..

# Change to a subdirectory of home
cd ~/Documents/Projects

# Navigate to a directory with spaces
cd "My Documents"

# Navigate using environment variables
cd $HOME/Documents
Common Errors and Solutions
# Error: No such file or directory
cd nonexistent_folder
# Solution: Check spelling and verify directory exists

# Error: Permission denied
cd /root
# Solution: Use sudo or check permissions

# Error: Not a directory
cd file.txt
# Solution: Verify target is a directory, not a file

# Error: Too many arguments
cd dir1 dir2
# Solution: Use only one directory path at a time

tree Command

The tree command in Linux is used to display the directory structure in a hierarchical format, making it easier to visualize the organization of files and subdirectories. By default, it starts from the current directory and recursively lists all files and directories in a tree-like structure. Users can modify its behavior with options such as -L to limit the depth of recursion or -d to show only directories.

When to Use tree

Use tree when you need to:

Common Options

The tree command supports several options to customize its output:

Option Description
-L N Limits the depth of directory traversal to N levels
-d Displays only directories, excluding files
-a Shows all files, including hidden ones
-f Prints the full path for each file and directory
-h Displays file sizes in a human-readable format
--du Shows the cumulative disk usage of each directory
--dirsfirst Lists directories before files in the output

Example Usage

Here are some practical examples of using the tree command:

# Basic usage
tree

# Show only directories
tree -d

# Show 2 levels deep
tree -L 2

# Show hidden files
tree -a

# Show with full paths
tree -f

# Show with human-readable sizes
tree -h

# Show specific directory
tree /path/to/directory

# Show with directories first
tree --dirsfirst

# Show with disk usage
tree --du

Interpreting Output

The tree command output uses specific symbols to represent the directory structure:

Sample Output

Below is a sample output of the tree command showing a typical directory structure:

.
├── Documents
│   ├── report.docx
│   ├── notes.txt
├── Pictures
│   ├── vacation
│   │   ├── beach.jpg
│   │   ├── sunset.jpg
├── Scripts
│   ├── script.sh
│   ├── backup.py

Best Practices