CONTENTS IN DETAIL

ACKNOWLEDGMENTS

First Edition

Second Edition

INTRODUCTION

Why Use the Command Line?

What This Book Is About

Who Should Read This Book

What’s in This Book

How to Read This Book

Prerequisites

What’s New in the Second Edition

Your Feedback Is Needed!

PART I: LEARNING THE SHELL

1
WHAT IS THE SHELL?

Terminal Emulators

Making Your First Keystrokes

Command History

Cursor Movement

Try Some Simple Commands

Ending a Terminal Session

Summing Up

2
NAVIGATION

Understanding the File System Tree

The Current Working Directory

Listing the Contents of a Directory

Changing the Current Working Directory

Absolute Pathnames

Relative Pathnames

Some Helpful Shortcuts

Summing Up

3
EXPLORING THE SYSTEM

More Fun with ls

Options and Arguments

A Longer Look at Long Format

Determining a File’s Type with file

Viewing File Contents with less

Taking a Guided Tour

Symbolic Links

Hard Links

Summing Up

4
MANIPULATING FILES AND DIRECTORIES

Wildcards

mkdir—Create Directories

cp—Copy Files and Directories

Useful Options and Examples

mv—Move and Rename Files

Useful Options and Examples

rm—Remove Files and Directories

Useful Options and Examples

ln—Create Links

Hard Links

Symbolic Links

Building a Playground

Creating Directories

Copying Files

Moving and Renaming Files

Creating Hard Links

Creating Symbolic Links

Removing Files and Directories

Summing Up

5
WORKING WITH COMMANDS

What Exactly Are Commands?

Identifying Commands

type—Display a Command’s Type

which—Display an Executable’s Location

Getting a Command’s Documentation

help—Get Help for Shell Builtins

--help—Display Usage Information

man—Display a Program’s Manual Page

apropos—Display Appropriate Commands

whatis—Display One-line Manual Page Descriptions

info—Display a Program’s Info Entry

README and Other Program Documentation Files

Creating Our Own Commands with alias

Summing Up

6
REDIRECTION

Standard Input, Output, and Error

Redirecting Standard Output

Redirecting Standard Error

Redirecting Standard Output and Standard Error to One File

Disposing of Unwanted Output

Redirecting Standard Input

cat: Concatenate Files

Pipelines

Filters

uniq: Report or Omit Repeated Lines

wc: Print Line, Word, and Byte Counts

grep: Print Lines Matching a Pattern

head/tail: Print First/Last Part of Files

tee: Read from Stdin and Output to Stdout and Files

Summing Up

7
SEEING THE WORLD AS THE SHELL SEES IT

Expansion

Pathname Expansion

Tilde Expansion

Arithmetic Expansion

Brace Expansion

Parameter Expansion

Command Substitution

Quoting

Double Quotes

Single Quotes

Escaping Characters

Backslash Escape Sequences

Summing Up

8
ADVANCED KEYBOARD TRICKS

Command Line Editing

Cursor Movement

Modifying Text

Cutting and Pasting (Killing and Yanking) Text

Completion

Using History

Searching History

History Expansion

Summing Up

9
PERMISSIONS

Owners, Group Members, and Everybody Else

Reading, Writing, and Executing

chmod: Change File Mode

Setting File Mode with the GUI

umask: Set Default Permissions

Some Special Permissions

Changing Identities

su: Run a Shell with Substitute User and Group IDs

sudo: Execute a Command As Another User

chown: Change File Owner and Group

chgrp: Change Group Ownership

Exercising Our Privileges

Changing Your Password

Summing Up

10
PROCESSES

How a Process Works

Viewing Processes

Viewing Processes Dynamically with top

Controlling Processes

Interrupting a Process

Putting a Process in the Background

Returning a Process to the Foreground

Stopping (Pausing) a Process

Signals

Sending Signals to Processes with kill

Sending Signals to Multiple Processes with killall

Shutting Down the System

More Process-Related Commands

Summing Up

PART II: CONFIGURATION AND THE ENVIRONMENT

11
THE ENVIRONMENT

What Is Stored in the Environment?

Examining the Environment

Some Interesting Variables

How Is the Environment Established?

What’s in a Startup File?

Modifying the Environment

Which Files Should We Modify?

Text Editors

Using a Text Editor

Activating Our Changes

Summing Up

12
A GENTLE INTRODUCTION TO VI

Why We Should Learn vi

A Little Background

Starting and Stopping vi

Editing Modes

Entering Insert Mode

Saving Our Work

Moving the Cursor Around

Basic Editing

Appending Text

Opening a Line

Deleting Text

Cutting, Copying, and Pasting Text

Joining Lines

Search-and-Replace

Searching Within a Line

Searching the Entire File

Global Search-and-Replace

Editing Multiple Files

Switching Between Files

Opening Additional Files for Editing

Copying Content from One File into Another

Inserting an Entire File into Another

Saving Our Work

Summing Up

13
CUSTOMIZING THE PROMPT

Anatomy of a Prompt

Trying Some Alternative Prompt Designs

Adding Color

Moving the Cursor

Saving the Prompt

Summing Up

PART III: COMMON TASKS AND ESSENTIAL TOOLS

14
PACKAGE MANAGEMENT

Packaging Systems

How a Package System Works

Package Files

Repositories

Dependencies

High- and Low-Level Package Tools

Common Package Management Tasks

Finding a Package in a Repository

Installing a Package from a Repository

Installing a Package from a Package File

Removing a Package

Updating Packages from a Repository

Upgrading a Package from a Package File

Listing Installed Packages

Determining Whether a Package Is Installed

Displaying Information About an Installed Package

Finding Which Package Installed a File

Summing Up

15
STORAGE MEDIA

Mounting and Unmounting Storage Devices

Viewing a List of Mounted File Systems

Determining Device Names

Creating New File Systems

Manipulating Partitions with fdisk

Creating a New File System with mkfs

Testing and Repairing File Systems

Moving Data Directly to and from Devices

Creating CD-ROM Images

Creating an Image Copy of a CD-ROM

Creating an Image from a Collection of Files

Writing CD-ROM Images

Mounting an ISO Image Directly

Blanking a Rewritable CD-ROM

Writing an Image

Summing Up

Extra Credit

16
NETWORKING

Examining and Monitoring a Network

ping

traceroute

ip

netstat

Transporting Files over a Network

ftp

lftp—a Better ftp

wget

Secure Communication with Remote Hosts

ssh

scp and sftp

Summing Up

17
SEARCHING FOR FILES

locate—Find Files the Easy Way

find—Find Files the Hard Way

Tests

Operators

Predefined Actions

User-Defined Actions

Improving Efficiency

xargs

A Return to the Playground

find Options

Summing Up

18
ARCHIVING AND BACKUP

Compressing Files

gzip

bzip2

Archiving Files

tar

zip

Synchronizing Files and Directories

Using rsync over a Network

Summing Up

19
REGULAR EXPRESSIONS

What Are Regular Expressions?

grep

Metacharacters and Literals

The Any Character

Anchors

Bracket Expressions and Character Classes

Negation

Traditional Character Ranges

POSIX Character Classes

POSIX Basic vs. Extended Regular Expressions

Alternation

Quantifiers

?—Match an Element Zero or One Time

*—Match an Element Zero or More Times

+—Match an Element One or More Times

{ }—Match an Element a Specific Number of Times

Putting Regular Expressions to Work

Validating a Phone List with grep

Finding Ugly Filenames with find

Searching for Files with locate

Searching for Text with less and vim

Summing Up

20
TEXT PROCESSING

Applications of Text

Documents

Web Pages

Email

Printer Output

Program Source Code

Revisiting Some Old Friends

cat

sort

uniq

Slicing and Dicing

cut—Remove Sections from Each Line of Files

paste—Merge Lines of Files

join—Join Lines of Two Files on a Common Field

Comparing Text

comm—Compare Two Sorted Files Line by Line

diff—Compare Files Line by Line

patch—Apply a diff to an Original

Editing on the Fly

tr—Transliterate or Delete Characters

sed—Stream Editor for Filtering and Transforming Text

aspell—Interactive Spellchecker

Summing Up

Extra Credit

21
FORMATTING OUTPUT

Simple Formatting Tools

nl—Number Lines

fold—Wrap Each Line to a Specified Length

fmt—A Simple Text Formatter

pr—Format Text for Printing

printf—Format and Print Data

Document Formatting Systems

groff

Summing Up

22
PRINTING

A Brief History of Printing

Printing in the Dim Times

Character-Based Printers

Graphical Printers

Printing with Linux

Preparing Files for Printing

pr—Convert Text Files for Printing

Sending a Print Job to a Printer

lpr—Print Files (Berkeley Style)

lp—Print Files (System V Style)

Another Option: a2ps

Monitoring and Controlling Print Jobs

lpstat—Display Print System Status

lpq—Display Printer Queue Status

lprm/cancel—Cancel Print Jobs

Summing Up

23
COMPILING PROGRAMS

What Is Compiling?

Are All Programs Compiled?

Compiling a C Program

Obtaining the Source Code

Examining the Source Tree

Building the Program

Installing the Program

Summing Up

PART IV: WRITING SHELL SCRIPTS

24
WRITING YOUR FIRST SCRIPT

What Are Shell Scripts?

How to Write a Shell Script

Script File Format

Executable Permissions

Script File Location

Good Locations for Scripts

More Formatting Tricks

Long Option Names

Indentation and Line Continuation

Summing Up

25
STARTING A PROJECT

First Stage: Minimal Document

Second Stage: Adding a Little Data

Variables and Constants

Assigning Values to Variables and Constants

Here Documents

Summing Up

26
TOP-DOWN DESIGN

Shell Functions

Local Variables

Keep Scripts Running

Summing Up

27
FLOW CONTROL: BRANCHING WITH IF

if Statements

Exit Status

Using test

File Expressions

String Expressions

Integer Expressions

A More Modern Version of test

(( ))—Designed for Integers

Combining Expressions

Control Operators: Another Way to Branch

Summing Up

28
READING KEYBOARD INPUT

read—Read Values from Standard Input

Options

IFS

Validating Input

Menus

Summing Up

Extra Credit

29
FLOW CONTROL: LOOPING WITH WHILE/UNTIL

Looping

while

Breaking Out of a Loop

until

Reading Files with Loops

Summing Up

30
TROUBLESHOOTING

Syntactic Errors

Missing Quotes

Missing or Unexpected Tokens

Unanticipated Expansions

Logical Errors

Defensive Programming

Watch Out for Filenames

Verifying Input

Testing

Test Cases

Debugging

Finding the Problem Area

Tracing

Examining Values During Execution

Summing Up

31
FLOW CONTROL: BRANCHING WITH CASE

The case Command

Patterns

Performing Multiple Actions

Summing Up

32
POSITIONAL PARAMETERS

Accessing the Command Line

Determining the Number of Arguments

shift—Getting Access to Many Arguments

Simple Applications

Using Positional Parameters with Shell Functions

Handling Positional Parameters en Masse

A More Complete Application

Summing Up

33
FLOW CONTROL: LOOPING WITH FOR

for: Traditional Shell Form

for: C Language Form

Summing Up

34
STRINGS AND NUMBERS

Parameter Expansion

Basic Parameters

Expansions to Manage Empty Variables

Expansions That Return Variable Names

String Operations

Case Conversion

Arithmetic Evaluation and Expansion

Number Bases

Unary Operators

Simple Arithmetic

Assignment

Bit Operations

Logic

bc—An Arbitrary Precision Calculator Language

Using bc

An Example Script

Summing Up

Extra Credit

35
ARRAYS

What Are Arrays?

Creating an Array

Assigning Values to an Array

Accessing Array Elements

Array Operations

Outputting the Entire Contents of an Array

Determining the Number of Array Elements

Finding the Subscripts Used by an Array

Adding Elements to the End of an Array

Sorting an Array

Deleting an Array

Associative Arrays

Summing Up

36
EXOTICA

Group Commands and Subshells

Process Substitution

Traps

Asynchronous Execution with wait

Named Pipes

Setting Up a Named Pipe

Using Named Pipes

Summing Up

INDEX

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.118.210.104