Catch Up with Us!

Unix Shell Commands

Introduction

In Unix and Unix-like systems (Linux, macOS), a shell command is the primary way users interact with the operating system through a command-line interface (CLI). Modern shells such as Bash, Zsh, and Fish interpret user commands and execute programs accordingly.

A typical command follows this structure:

command [options] [arguments]

  • Command: The program or utility being executed
  • Options: Modify behavior (usually prefixed with - or --)
  • Arguments: Input data such as filenames, directories, or values

Basic Command Example

ls -l mydir

Explanation:

  • ls → list directory contents
  • -l → long listing format (permissions, size, timestamps)
  • mydir → target directory (argument)

Multiple arguments:

ls -l mydir1 mydir2

This lists both directories in long format.

Command Options (Modern Style)

Modern Unix/Linux tools often support:

  • Short options: -l, -a, -h
  • Long options: --all, --human-readable

Example:

ls --all --human-readable

Long options improve readability and are widely used in modern CLI tools.

Wildcards (Globbing Patterns)

Wildcards allow flexible file matching using pattern expansion.

1. Asterisk * (matches zero or more characters)

ls a*

This lists all files starting with a.

2. Question Mark ? (matches exactly one character)

ls file?

Matches:

  • file1
  • file2
  • fileA

Does NOT match:

  • file (no extra character)
  • file10 (more than one character)

Modern Note:

Modern shells (Bash/Zsh) perform globbing before command execution, and advanced patterns are also available:

  • *.txt → all text files
  • file[0-9] → file0–file9
  • {a,b}.txt → a.txt and b.txt

Input and Output Redirection

Unix-like systems treat input and output as streams:

  • stdin → standard input (keyboard)
  • stdout → standard output (screen)
  • stderr → error output

Output Redirection (>)

Redirect output to a file:

ls > listing.txt

  • Overwrites the file if it exists

Append output (>>):

ls >> listing.txt

Input Redirection (<)

Reads input from a file:

sort < names.txt

Combined Redirection

command < input.txt > output.txt

Pipes (|) – Modern Essential Feature

Pipes connect commands together:

ls | grep "file"

This sends output of ls into grep.

Modern CLI workflows heavily rely on piping for automation.

The cat Command (Modern Usage)

The cat command is used to:

  • Display file contents
  • Concatenate files
  • Stream data

Example:

cat file1 file2

This outputs both files sequentially.

Display a file:

cat file.txt

Interactive behavior:

If you run:

cat

The command waits for user input and echoes it back until you terminate it (Ctrl + D). This is often used for quick testing, though modern tools like less are preferred for large files.

Modern Alternatives to cat

For large files, modern systems prefer:

  • less file.txt → paginated viewing
  • bat file.txt → syntax-highlighted viewer (modern replacement)
  • head / tail → view top or bottom lines

The man Command (Help System)

The man command provides manual pages for system commands.

man ls

To view documentation about man itself:

man man

Modern Enhancements

Today, man is often supplemented by:

  • tldr → simplified examples
  • info → detailed documentation system
  • Built-in --help flags (e.g., ls --help)

Example:

tldr ls

Unix Philosophy in Shell Usage

Shell commands reflect the Unix philosophy:

  • Small tools that do one job well
  • Combine tools using pipes
  • Use text as a universal interface

Modern systems extend this philosophy into:

  • DevOps pipelines
  • Cloud automation scripts
  • Container workflows (Docker, Kubernetes)
  • CI/CD systems (GitHub Actions, Jenkins)

Files and Directories in Unix Systems (Modern View)

In Unix-like operating systems:

  • Everything is represented as a file abstraction
  • Devices, processes, and system resources appear as files

Examples:

  • /dev/sda → storage device
  • /dev/null → discard output
  • /proc → process information
  • /sys → kernel and hardware interfaces

Directories

Directories are special files that:

  • Contain mappings of filenames to metadata
  • Organize the file system hierarchy

Modern file systems include:

  • ext4 (Linux)
  • APFS (macOS)
  • Btrfs, ZFS (advanced Linux/Unix systems)

Summary

Unix shell commands remain a core part of modern computing. While the syntax has remained consistent for decades, modern shells and tools have significantly expanded capabilities through:

  • Advanced globbing and pattern matching
  • Powerful pipelines and automation
  • Improved file viewers and utilities
  • Enhanced help systems and documentation tools

Shell environments continue to be essential for system administration, cloud computing, cybersecurity, and software development.

Comments