- pwd: Print Working Directory
The pwd utility outputs the absolute path of the current working directory. It is primarily used to verify your location within the filesystem hierarchy before executing path-dependent operations.
Syntax
pwd [options]
Usage Example
$ cd /var/log/nginx
$ pwd
/var/log/nginx
- cd: Change Directory
The cd command modifies the shell's current working directory. It supports both absolute and relative path resolution.
Syntax
cd [target_path]
Common Path Shortcuts
| Shortcut | Behavior |
|---|---|
~ |
Navigates to the current user's home directory |
- |
Returns to the previous working directory |
. |
References the current directory |
.. |
References the parent directory |
/ |
References the filesystem root |
Usage Examples
# Navigate using an absolute path
$ cd /etc/sysconfig
$ pwd
/etc/sysconfig
# Jump to home directory
$ cd ~
$ pwd
/home/operator
# Return to the previous location
$ cd -
/etc/sysconfig
# Traverse upward using relative paths
$ cd ../../usr/local
$ pwd
/usr/local
- ls: List Directory Contents
The ls command displays files and directories within a specified path. It provides metadata such as permissions, ownership, size, and modification timestamps when combined with formatting flags.
Syntax
ls [options] [target_path]
Frequently Used Options
| Flag | Description |
|---|---|
-l |
Long format: displays permissions, owner, group, size, and timestamp |
-a |
Includes hidden files (those starting with a dot) |
-i |
Displays the inode number for each entry |
-d |
Lists directory entries themselves, not their contents |
-t |
Sorts output by modification time (newest first) |
-r |
Reverses the sorting order |
-R |
Recursively lists subdirectories |
Usage Examples
# Verify file existence and view attributes
$ ls -l /etc/hostname
-rw-r--r-- 1 root root 14 Oct 12 09:30 /etc/hostname
# List multiple targets simultaneously
$ ls -l /etc/hosts /var/data/config.json
-rw-r--r-- 1 root root 221 Oct 12 09:30 /etc/hosts
-rw-r--r-- 1 app app 1045 Nov 05 14:22 /var/data/config.json
# Display hidden files in the home directory
$ ls -a ~/
. .. .bash_history .bashrc .config documents .ssh
# Show inode numbers for current directory entries
$ ls -i
524891 config.yaml 524892 deploy.sh 524893 .env
- mkdir: Create Directories
The mkdir utility generates new directories. It can create single folders, multiple sibling folders, or nested hierarchies in a single invocation.
Syntax
mkdir [options] directory_name [directory_name...]
Key Options
| Flag | Description |
|---|---|
-p |
Creates parent directories as needed (no error if existing) |
-m |
Sets explicit permissions during creation |
-v |
Prints a message for each created directory |
Usage Examples
# Create multiple sibling directories
$ mkdir src build dist
$ ls -d src build dist
build dist src
# Generate a nested directory structure
$ mkdir -p archive/2023/november/reports
$ tree archive
archive
└── 2023
└── november
└── reports
3 directories, 0 files
- cp: Copy Files and Directories
The cp command duplicates files or directory trees to a specified destination. When copying directories, recursive mode must be enabled.
Syntax
cp [options] source destination
Key Options
| Flag | Description |
|---|---|
-r / -R |
Recursively copies directories and their contents |
-p |
Preserves mode, ownership, and timestamps |
-a |
Archive mode: equivalent to -dR --preserve=all |
-i |
Prompts before overwriting existing files |
-f |
Forces overwrite without prompting |
-b |
Creates a backup of each existing destination file |
-t |
Treats the first argument as the destination directory |
Usage Examples
# Copy and rename in one step
$ cp app.conf /backup/app.conf.bak
# Copy multiple files into a target directory
$ cp data.csv metrics.csv /backup/
# Recursively duplicate a directory tree while preserving attributes
$ cp -a module_core/ /backup/modules/
$ ls -l /backup/
total 12
-rw-r--r-- 1 user user 0 Oct 20 14:10 app.conf.bak
-rw-r--r-- 1 user user 0 Oct 20 14:11 data.csv
-rw-r--r-- 1 user user 0 Oct 20 14:11 metrics.csv
drwxr-xr-x 2 user user 40 Oct 20 14:12 modules
- rm: Remove Files and Directories
The rm utility deletes filesystem objects. It operates permanently by default, bypassing any trash or recycle bin mechanisms.
Syntax
rm [options] target [target...]
Key Options
| Flag | Description |
|---|---|
-r / -R |
Recursively removes directories and contents |
-f |
Ignores nonexistent files and never prompts |
-i |
Prompts before every removal |
-d |
Removes empty directories |
Usage Examples
# Delete a single file
$ rm draft_notes.txt
# Force-remove a directory and all nested contents
$ rm -rf old_cache/
# Interactive deletion for safety
$ rm -i temp_session.log
rm: remove regular empty file 'temp_session.log'? y
- mv: Move or Rename Files and Directories
The mv command relocates filesystem objects or changes their names. Unlike copying, moving updates directory entries without duplicating data blocks on the same filesystem.
Syntax
mv [options] source destination
Key Options
| Flag | Description |
|---|---|
-f |
Overwrites destination without prompting |
-i |
Prompts before overwriting |
-n |
Prevents overwriting existing files |
-b |
Creates a backup before overwriting |
Usage Examples
# Relocate a script to a binary directory
$ mv setup.sh /usr/local/bin/
# Rename a file in place
$ mv readme.md README.md
# Move multiple logs into an archive folder
$ mv access.log error.log /var/log/archive/
# Relocate an entire directory
$ mv legacy_app/ /opt/deprecated/
- tree: Display Directory Structure
The tree command renders a visual, indented representation of directory hierarchies. It is highly useful for auditing project layouts or verifying nested structures.
Syntax
tree [options] [target_directory]
Key Options
| Flag | Description |
|---|---|
-L <depth> |
Limits display to a specified number of levels |
-d |
Lists directories only |
-a |
Includes hidden files |
-f |
Prints the full path prefix for each entry |
Usage Examples
# Visualize a project layout
$ tree project_root/
project_root/
├── config
│ └── settings.json
├── src
│ ├── main.py
│ └── utils.py
└── tests
└── test_main.py
3 directories, 4 files
# Limit output to two levels deep
$ tree -L 2 /var/www/
/var/www/
├── html
│ ├── index.html
│ └── assets
└── logs
├── access.log
└── error.log
3 directories, 3 files
- du: Estimate File Space Usage
The du utility calculates disk consumption for files and directories. Its essential for identifying storage bottlenecks and monitoring partition utilization.
Syntax
du [options] [target_path]
Key Options
| Flag | Description |
|---|---|
-s |
Displays only a total for each argument |
-h |
Prints sizes in human-readable format (K, M, G) |
-a |
Includes individual file sizes in the output |
-c |
Produces a grand total |
Usage Examples
# Summarize directory size in readable format
$ du -sh /var/www/html
142M /var/www/html
# Identify largest subdirectories within a path
$ du -h --max-depth=1 /var/log | sort -rh | head -n 5
85M /var/log
42M /var/log/journal
28M /var/log/apache2
10M /var/log/syslog
5.2M /var/log/kern.log