Document Body Page Navigation Panel Document Outline

Document Outline

Pages 1--1041 from Linux in a Nutshell, 3rd Edition


Page 1 2

Linux in a Nutshell, 3rd Edition
By Ellen Siever, Stephen Spainhour, Stephen Figgins and Jessica P. Hekman
ISBN 0-596-00025-1
Third Edition, published August 2000
(See the catalog page for this book.)

Table of Contents
Copyright Page
Preface
Chapter 1: Introduction
Chapter 2: System and Network Administration Overview
Chapter 3: Linux Commands
Chapter 4: Boot Methods
Chapter 5: Red Hat and Debian Package Managers
Chapter 6: The Linux Shells: An Overview
Chapter 7: bash: The Bourne-Again Shell
Chapter 8: csh and tcsh
Chapter 9: Pattern Matching
Chapter 10: The Emacs Editor
Chapter 11: The vi Editor
Chapter 12: The sed Editor
Chapter 13: The gawk Scripting Language
Chapter 14: CVS and RCS
Chapter 15: GNOME
Chapter 16: KDE
Chapter 17: An Alternative Window Manager: fvwm2
Index
Colophon

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ index. htm [15/ 05/ 2002 18: 01: 44] 1
1 Page 2 3

(Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

Copyright 2000, 1999, 1997 O'Reilly & Associates, Inc. All rights reserved.
Printed in the United States of America.
Published by O'Reilly & Associates, Inc., 101 Morris Street, Sebastopol, CA 95472.
The O'Reilly logo is a registered trademark of O'Reilly & Associates, Inc. Many of the
designations used by manufacturers and sellers to distinguish their products are claimed as
trademarks. Where those designations appear in this book, and O'Reilly & Associates, Inc.
was aware of a trademark claim, the designations have been printed in caps or initial caps.
The use of the horse image in association with Linux is a trademark of O'Reilly & Associates,
Inc.

While every precaution has been taken in the preparation of this book, the publisher assumes
no responsibility for errors or omissions, or for damages resulting from the use of the
information contained herein.

Table of Contents 0. Preface
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ copyrght. htm [15/ 05/ 2002 18: 01: 56] 2
2 Page 3 4

Preface (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

Preface
This is a book about Linux, a freely available clone of the Unix operating system for personal
computers. Linux was first developed by Linus Torvalds, who built the first Linux kernel and
continues to centrally coordinate improvements. The operating system continues to grow
under the dedicated cultivation of a host of other programmers and hackers all over the world,
all connected through the Internet. Beyond the kernel code, Linux includes utilities and
commands from the Free Software Foundation's GNU project, Berkeley Unix (BSD), and a
complete port of the X Window System (XFree86) from the X Consortium, in addition to
many features written specifically for Linux. Even more recent projects extend Linux in
exciting ways, some through changes to the kernel --such as real-time scheduling and RAID
support --and some through libraries and applications that radically change the user's
experience; the GNOME and KDE desktops briefly covered in this book are the most
prominent examples.

This book is a quick reference for the basic commands and features of the Linux operating
system. As with other books in O'Reilly's "In a Nutshell" series, this book is geared toward
users who know what they want to do and have some idea how to do it, but just can't
remember the correct command or option. We hope this guide will become an invaluable
desktop reference for the Linux user.

0.1. Other Resources
This book will not tell you how to install and maintain a Linux system. For that, you will
probably want O'Reilly's Learning Red Hat Linux or Learning Debian GNU/ Linux, by Bill
McCarty, which contain Linux distributions on CD-ROM and provide help with installation
and configuration. Alternatively, Running Linux by Matt Welsh, Matthias Kalle Dalheimer,
and Lar Kaufman is an in-depth guide suitable for all major distributions. For networking
information, check out Linux Network Administrator's Guide by Olaf Kirch and Terry
Dawson. In addition to O'Reilly's Linux titles, our wide range of Unix, X, Perl, and Java titles
may also be of interest to the Linux user.

0.1.1. Online Documentation

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch00_ 01. htm (1 of 4) [15/ 05/ 2002 18: 02: 02] 3
3 Page 4 5

Preface (Linux in a Nutshell, 3rd Edition)
The Internet is also full of information about Linux. One of the best resources is the Linux
Documentation Project at http:// www. linuxdoc. org. It has numerous short guides called

HOWTOs, along with some full manuals. For online information about the GNU utilities
covered in this book, consult http:// www. gnu. org( or one of the dozens of mirror sites around

the world). The Free Software Foundation, which is in charge of GNU, publishes its
documentation in a number of hard-copy books about various tools.

0.1.2. Linux Journal and Linux Magazine
Linux Journal and Linux Magazine are monthly magazines for the Linux community, written
and published by a number of Linux activists. They contain articles ranging from novice
questions and answers to kernel programming internals. Linux Journal is the oldest magazine
and is published by S. S. C. Incorporated, http:// www. ssc. com. Linux Magazine is at

http:// www. linuxmagazine. com.

0.1.3. LinuxUsenet Newsgroups
If you have access to Usenet news, the following Linux-related newsgroups are available:
comp. os. linux. announce
A moderated newsgroup containing announcements of new software, distributions, bug
reports, and goings-on in the Linux community. All Linux users should read this
group. Submissions may be mailed to linux-announce@ news. ornl. gov.

comp. os. linux. help
General questions and answers about installing or using Linux.
comp. os. linux. admin
Discussions relating to systems administration under Linux.
comp. os. linux. networking
Discussions relating to networking with Linux.
comp. os. linux. development
Discussions about developing the Linux kernel and system itself.
comp. os. linux. misc

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch00_ 01. htm (2 of 4) [15/ 05/ 2002 18: 02: 02] 4
4 Page 5 6

Preface (Linux in a Nutshell, 3rd Edition)
A catch-all newsgroup for miscellaneous discussions that don't fall under the previous
categories.

There are also several newsgroups devoted to Linux in languages other than English, such as
fr. comp. os. linux in French and de. comp. os. linux in German.

0.1.4. Online Linux Support
There are many ways of obtaining help online, where volunteers from around the world offer
expertise and services to assist users with questions and problems.

The OpenProjects IRC Network is an IRC network devoted entirely to Open Projects --Open
Source and Open Hardware alike. Some of its channels are designed to provide online Linux
support services. IRC stands for Internet Relay Chat, and is a network service that allows you
to talk interactively on the Internet to other users. IRC networks support multiple channels on
which groups of people talk. Whatever you type in a channel is seen by all other users of that
channel.

There are a number of active channels on the OpenProjects IRC network where you will find
users 24 hours a day, 7 days a week who are willing and able to help you solve any Linux
problems you may have, or just chat. You can use this service by installing an IRC client like
irc-II, connecting to servername >irc. openprojects. org: 6667>, and joining the #linpeople
channel.

0.1.5. Linux User Groups
Many Linux User Groups around the world offer direct support to users. Many Linux User
Groups engage in activities such as installation days, talks and seminars, demonstration
nights, and other completely social events. Linux User Groups are a great way of meeting
other Linux users in your area. There are a number of published lists of Linux User Groups.
Some of the better-known ones are:

Groups of Linux Users Everywhere
http:// www. ssc. com/ glue/ groups
LUGlist project

http:// www. nllgg. nl/ lugww
LUGregistry

http:// www. linux. org/ users

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch00_ 01. htm (3 of 4) [15/ 05/ 2002 18: 02: 02] 5
5 Page 6 7

Preface (Linux in a Nutshell, 3rd Edition)
Copyright Page 0.2. Conventions

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch00_ 01. htm (4 of 4) [15/ 05/ 2002 18: 02: 02] 6
6 Page 7 8

Conventions (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

0.2. Conventions
This desktop quick reference follows certain typographic conventions:
Bold
is used for commands, programs, and options. All terms shown in bold are typed
literally.
Italic

is used to show arguments and variables that should be replaced with user-supplied
values. Italic is also used to indicate filenames and directories and to highlight
comments in examples.
Constant Width

is used to show the contents of files or the output from commands.
Constant Width Bold

is used in examples and tables to show commands or other text that should be typed
literally by the user.
Constant Width Italic

is used in examples and tables to show text that should be replaced with user-supplied
values.
%, $

are used in some examples as the tcsh shell prompt (%) and as the Bourne or bash
shell prompt ($).
[ ]

surround optional elements in a description of syntax. (The brackets themselves should
never be typed.) Note that many commands show the argument [files]. If a filename is
omitted, standard input (e. g., the keyboard) is assumed. End with an end-of-file
character.
EOF

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch00_ 02. htm (1 of 2) [15/ 05/ 2002 18: 02: 03] 7
7 Page 8 9

Conventions (Linux in a Nutshell, 3rd Edition)
indicates the end-of-file character (normally Ctrl-D).
|

is used in syntax descriptions to separate items for which only one alternative may be
chosen at a time.

is used at the bottom of a right-hand page to show that the current entry continues on
the next page. The continuation is marked by a .

The owl icon designates a note, which is an important aside to its nearby text. For example...
NOTE
When you see the owl icon, you know the text beside it is a note, like this.
A final word about syntax. In many cases, the space between an option and its argument can
be omitted. In other cases, the spacing (or lack of spacing) must be followed strictly. For
example, -wn (no intervening space) might be interpreted differently from -w n. It's important
to notice the spacing used in option syntax.

0. Preface 0.3. We'd Like to Hear from
You

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch00_ 02. htm (2 of 2) [15/ 05/ 2002 18: 02: 03] 8
8 Page 9 10

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch00_ 03. htm
Linux in a Nutshell, 3rd
Edition

0.3. We'd Like to Hear from You
We have tested and verified all of the information in this book to the best of our ability, but
you may find that features have changed (or even that we have made mistakes!). Please let us
know about any errors you find, as well as your suggestions for future editions, by writing:

O'Reilly & Associates, Inc. 101 Morris Street Sebastopol, CA 95472 800-998-9938 (in the
U. S. or Canada) 707-829-0515 (international/ local) 707-829-0104 (fax)

You can also send us messages electronically. To be put on the mailing list or to request a
catalog, send email to:

info@ oreilly. com
To ask technical questions or comment on the book, send email to:
bookquestions@ oreilly. com
Wehave a web site for the book, where we list examples, errata, and any plans for future
editions. You can access this page at:

http:// www. oreilly. com/ catalog/ linuxnut3

For more information about this book and others, see the O'Reilly web site:
http:// www. oreilly. com

0.2. Conventions 0.4. Acknowledgments
Copyright 2001 O'Reilly & QKFIN. All rights reserved.
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch00_ 03. htm [15/ 05/ 2002 18: 02: 04] 9
9 Page 10 11

Acknowledgments (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

0.4. Acknowledgments
This edition of Linux in a Nutshell is the result of the cooperative efforts of many people.
Thanks to Andy Oram for his editorial skills, to Val Quercia for her project management
skills, and to both of them for pitching in to check existing chapters and update and write new
material as needed.

For technical review, thanks go to Matt Welsh of Running Linux and Installation and Getting
Started Guide
fame; Michael K. Johnson of Red Hat Software; Robert J. Chassell, Phil
Hughes, and Laurie Lynne Tucker of Linux Journal; Arnold Robbins, Julian T. J. Midgley,
Terry Dawson, Doug Moreen, Ron Passerini, and Mark Stone.

0.3. We'd Like to Hear from
You
1. Introduction

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch00_ 04. htm [15/ 05/ 2002 18: 02: 05] 10
10 Page 11 12

Introduction (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

Chapter 1. Introduction
Contents:
The Excitement of Linux
Distribution and Support
Commands on Linux
What This Book Offers
Sources and Licenses
Beginner's Guide

In just a few years, Linux has grown from a student/ hacker playground to an upstart
challenger in the server market to a well-respected system taking its rightful place in
educational and corporate networks. A freely redistributable clone of the Unix operating
system, Linux is turning up everywhere. People use it for web servers, file servers, and
workstations instead of--or alongside --systems from traditional Unix vendors as well as
Windows NT. In addition to its role in large networks (because it's a friendly fellow that fits in
very nicely with other operating systems), Linux is popular among Windows users who just
want to try something that gives them more speed, more power, and more control.

The historical impact of Linux goes even beyond its own penetration into the markets of
proprietary operating systems. Its success has inspired countless other free software or open
source (http:// opensource. org) projects, including Samba, GNOME, and a mind-boggling

collection of innovative projects that you can browse at numerous sites like SourceForge
(http:// sourceforge. net). As both a platform for other developers and a development model,

Linux gave a tremendous boost to the Free Software Foundation's GNU project, which in turn
had furnished key software that made the development of Linux possible. In short, Linux is a
central participant in the most exciting and productive free software movement ever seen.

If you haven't obtained Linux yet or have it but don't know exactly how to get started using it,
see the Preface.

1.1. The Excitement of Linux
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 01. htm (1 of 3) [15/ 05/ 2002 18: 02: 07] 11
11 Page 12 13

Introduction (Linux in a Nutshell, 3rd Edition)
Linux is first of all free software: anyone can download the source from the Internet or buy it
on a low-cost CD-ROM. But Linux is becoming well known because it's more than free
software --it's unusually good software. You can get more from your hardware with Linux
(particularly on Intel systems, where it was originally developed) and be assured of fewer
crashes; even its security is better than many commercial alternatives.

As free software, Linux revives the grand creativity and the community of sharing that Unix
was long known for. The unprecedented flexibility and openness of Unix--which newcomers
usually found confusing and frustrating but which they eventually found they couldn't live
without --continually inspired extensions, new tools like Perl, and experiments in computer
science that sometimes ended up in mainstream commercial computer systems.

Many fondly remember the days when AT& T provided universities with Unix source code at
no charge, and the University of Berkeley started distributing its version in any manner that
allowed people to get it. For these older hackers, Linux can bring back the spirit of working
together --all the more so because the Internet is now widespread. And for the many who are
too young to remember the first round of open systems (such as the hordes of students
attracted to Linux) or whose prior experience has been woefully constricted by proprietary
operating systems, now is the time to discover the wonders of freely distributable source code
and infinitely adaptable interfaces.

The Linux kernel itself was originally designed by Linus Torvalds at the University of
Helsinki in Finland and later developed through collaboration with countless volunteers
worldwide. By "kernel," we mean the core of the operating system itself --not the
applications (such as the compiler, shells, and so forth) that run on it. Today, the term "Linux"
is often used to mean the kernel as well as the applications and complete system environment.

Most Linux systems cannot be technically referred to as a "version of Unix," as they have not
been submitted to the required tests and licensed properly.[ 1] However, at least one Linux

distribution has in fact been branded as POSIX. 1. Linux offers all the common programming
interfaces as standard Unix systems, and as you can see from this book, all the common Unix
utilities have been reimplemented on Linux. It is a powerful, robust, fully usable system for
those who like Unix.

[1] Before an operating system can be called "Unix," it must be branded by
X/ Open.

The economic power behind Linux's popularity is its support for an enormous range of
hardware used with IBM-compatible personal computers. People who are accustomed to MS-DOS
and Microsoft Windows are often amazed at how much faster their hardware appears to
work with Linux --it makes efficient use of its resources.

For the first several years, users were attracted to Linux for a variety of financial and political
reasons, but soon they discovered an unexpected benefit: it works better than many

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 01. htm (2 of 3) [15/ 05/ 2002 18: 02: 07] 12
12 Page 13 14

Introduction (Linux in a Nutshell, 3rd Edition)
commercial systems. With the Samba file and print server, for instance, Linux serves a large
number of end-user PCs without crashing. With the Apache web server, it provides more of
the useful features web administrators want than competing products do.

0.4. Acknowledgments 1.2. Distribution and Support
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 01. htm (3 of 3) [15/ 05/ 2002 18: 02: 07] 13
13 Page 14 15

Distribution and Support (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

1.2. Distribution and Support
While it is convenient to download one or two new programs over the Internet and fairly
feasible to download something as large as the Linux kernel, getting a whole working system
over phone lines is an absurd proposition. Over the years, therefore, commercial and
noncommercial packages called distributions have emerged. The first consisted of
approximately 50 diskettes, at least one of which would usually turn out to be bad and have to
be replaced. When CD-ROM drives became widespread, Linux really took off.

After getting Linux, the average user is concerned next with support. While Usenet
newsgroups offer very quick response and meet the needs of many intrepid users, you can also
buy support from the vendors of the major distributions and a number of independent experts.
Linux is definitely supported at least as well as commercial software.

Intel is still by far the most common hardware running Linux, but Linux is also now
commercially available on a number of other hardware systems, notably the PowerPC, the 64-
bit Intel Itanium processor, the Alpha (created by Digital Equipment Corporation, now
Compaq), the SPARC, and the MIPS chip.

1. Introduction 1.3. Commands on Linux
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 02. htm [15/ 05/ 2002 18: 02: 07] 14
14 Page 15 16

Commands on Linux (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

1.3. Commands on Linux
Linux commands are not the same as standard Unix ones. They're better! This is because most
of them are provided by the GNU project run by the Free Software Foundation (FSF). GNU
means "GNU's Not Unix" --the first word of the phrase is supposed to be expanded with
infinite recursion.

Benefiting from years of experience with standard Unix utilities and advances in computer
science, programmers on the GNU project have managed to create versions of standard tools
that have more features, run faster and more efficiently, and lack the bugs or inconsistencies
that persist in the original standard versions.

While GNU provided the programming utilities and standard commands like grep, most of the
system and network administration tools on Linux came from the Berkeley Software
Distribution (BSD). In addition, some people wrote tools specifically for Linux to deal with
special issues such as filesystems that only Linux supports. This book documents all the
standard Unix commands that are commonly available on most Linux distributions.

The third type of software most commonly run on Linux is the X Window System, ported by
the XFree86 project to standard Intel chips. While this book cannot cover the wide range of
utilities that run on X, we briefly cover some of the useful customizations you may want to
make to your KDE, GNOME, or fvwm desktop.

1.2. Distribution and Support 1.4. What This Book Offers
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 03. htm [15/ 05/ 2002 18: 02: 08] 15
15 Page 16 17

What This Book Offers (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

1.4. What This Book Offers
Based originally on the classic O'Reilly & Associates quick reference, Unix in a Nutshell, this
book has been expanded to include much information that is specific to Linux. The current
edition includes chapters on package managers (which make it easy to install, update, and
remove related software files), on the KDE and GNOME desktops, and on the fvwm window
manager, as well as new commands and expanded discussions of several topics such as CVS
and bash.

Linux in a Nutshell doesn't teach you Linux--it is, after all, a quick reference --but novices as
well as highly experienced users will find it of great value. When you have some idea what
command you want but aren't sure just how it works or what combinations of options give you
the exact output required, this book is the place to turn. It is also an eye-opener: it can make
you aware of options that you never knew about before.

Like computer systems from the age in which Unix was born (the early 1970s), Linux is
mostly a command-driven system. Most versions of Linux provide a few graphical tools, and
several commercial products are available, but none of these graphical utilities are central to
Linux. That is why this book, like the traditional Unix in a Nutshell reference, focuses on the
shell and on commands you run from the shell.

Of course, Linux offers a windowing system --a very rich and flexible one, as befits a rich
and flexible operating system. But a lot of the time you'll just open a simulated VT100
terminal (the xterm program) and enter commands into that. You'll find yourself moving back
and forth between graphical programs and the commands listed in this book.

So the first thing you've got to do, once you're over the hurdle of installing Linux, is get to
know the common utilities run from the shell prompt. If you know absolutely nothing about
Unix, we recommend you read a basic guide (introductory chapters in the O'Reilly books
Learning Red Hat Linux, Learning Debian GNU/ Linux, and Running Linux can get you
started). This book offers a context for understanding different kinds of commands (including
commands for programming, system administration, and network administration) in Chapter

2, "System and Network Administration Overview", followed by the command reference
itself in Chapter 3, "Linux Commands". Chapter 3, "Linux Commands" is obviously the
central focus of the book, containing about one third its bulk.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 04. htm (1 of 3) [15/ 05/ 2002 18: 02: 10] 16
16 Page 17 18

What This Book Offers (Linux in a Nutshell, 3rd Edition)
The small chapters immediately following Chapter 3, "Linux Commands" help you get your
system set up. Since most users do not want to completely abandon other operating systems
(whether a Microsoft Windows system, OS/ 2, or some Unix flavor), Linux often resides on
the same computer as other systems. The user can boot the system he needs for a particular
job. Chapter 4, "Boot Methods", lists the commonly used booting options on Intel systems,

including LILO (Linux Loader) and Loadlin. Chapter 5, "Red Hat and Debian Package
Managers", covers the Red Hat package manager (rpm), which is supported by both the Red
Hat and the SuSE distributions, and the Debian package manager (dpkg). Package managers
are crucial for installing and updating software; they make sure you have all the files you need
in the proper versions.

All commands are interpreted by the shell. The shell is simply a program that accepts
commands from the user and executes them. Different shells sometimes use slightly different
syntax to mean the same thing. Under Linux, two popular shells are bash and tcsh, and they
differ in subtle ways. (One of the nice things about Linux, and other Unix systems is that you
have a variety of shells to choose from, each with strengths and weaknesses.) We offer several
chapters on shells. You may decide to read these after you've used Linux for a while, because
they mostly cover powerful, advanced features that you'll want when you're a steady user.

In order to get real work done, you'll have to learn some big, comprehensive utilities: notably
an editor and some scripting tools. Two major editors are used on Linux: vi and Emacs. Both
have chapters in this book. Following the editors come two chapters on classic Unix tools for
manipulating text files on a line-by-line basis: sed and gawk (the GNU version of the
traditional awk). O'Reilly also has a separate book about each of these topics that you may
find valuable, because none is completely intuitive upon first use. (Emacs does have an
excellent built-in tutorial, though; to invoke it, press Ctrl-H followed by t for "tutorial.")

CVS (Concurrent Versions System) and RCS (Revision Control System) manage files so you
can retrieve old versions and maintain different versions simultaneously. Originally used by
programmers who have complicated requirements for building and maintaining applications,
these tools have turned out to be valuable for anyone who maintains files of any type,
particularly when coordinating a team of people. CVS is a layer on top of RCS that makes it
easier for multiple people to edit a file simultaneously. Chapter 14, "CVS and RCS", presents

CVS and RCS commands.

Every distribution of Linux is slightly different, but you'll find that the commands we
document are what you use most of the time and that they work the same on all distributions.
Basic commands, programming utilities, system administration, and network administration
are all covered here. But some areas were so big that we had to leave them out. The many
applications that depend on the X Window System didn't make the cut. Nor did TeX (a text-processing
tool used extensively in academia and by Linux users in general), or the many
useful programming languages like Perl, Tcl/ Tk, and Python with which users vastly expand
the capabilities of their systems. These subjects would stretch the book out of its binding.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 04. htm (2 of 3) [15/ 05/ 2002 18: 02: 10] 17
17 Page 18 19

What This Book Offers (Linux in a Nutshell, 3rd Edition)
Our goal in producing this book is to provide convenience, and that means keeping it small. It
certainly doesn't have everything the manual pages have. But you'll find that it has what you
need 95% of the time.

1.3. Commands on Linux 1.5. Sources and Licenses
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 04. htm (3 of 3) [15/ 05/ 2002 18: 02: 10] 18
18 Page 19 20

Sources and Licenses (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

1.5. Sources and Licenses
When you get Linux, you also get the source code. The same goes for all the utilities on Linux
(unless your vendor offered a commercial application or library as a special enhancement).
You may never bother looking at the source code, but it's key to Linux's strength. The source
code has to be provided by the vendor, under the Linux license, and it permits those who are
competent at such things to fix bugs, provide advice about the system's functioning, and
submit improvements that benefit all of us. The license is the well-known General Public
License, also known as the GPL or copyleft, invented and popularized by the Free Software
Foundation.

The FSF, founded by Richard Stallman, is a phenomenon that many people would believe to
be impossible if it did not exist. (The same goes for Linux, in fact --10 years ago, who would
have imagined a robust operating system developed by collaborators over the Internet and
made freely redistributable?) One of the most popular editors on Unix, GNU Emacs, comes
from the FSF. So do gcc and g++ (C and C++ compilers), which for a while used to set the
standard for optimization and fast code. One of the largest projects within GNU is the
GNOME desktop, which already encompasses several useful general-purpose libraries,
window managers, and applications. The GNOME developers have big plans for providing an
environment that integrates not only the applications on each user's system but also the
services provided throughout a whole organization.

Dedicated to the sharing of software, the FSF provides all its code and documentation on the
Internet and allows anyone with a whim for enhancements to alter the source code. One of its
projects is the Debian distribution of Linux.

In order to prevent hoarding, the FSF requires that the source code for all enhancements be
distributed under the same GPL that it uses. This encourages individuals or companies to
make improvements and share them with others. The only thing someone cannot do is add
enhancements and then try to sell the product as commercial software --that is, to withhold
the source code. That would be taking advantage of the FSF and the users. You can find the
GPL in any software covered by that license and online at
http:// www. gnu. org/ copyleft/ gpl. html.

As we said earlier, many tools on Linux come from BSD instead of GNU. BSD is also free

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 05. htm (1 of 2) [15/ 05/ 2002 18: 02: 10] 19
19 Page 20 21

Sources and Licenses (Linux in a Nutshell, 3rd Edition)
software. The license is significantly different, but that doesn't have to concern you as a user.
The effect of the difference is that companies are permitted to incorporate the software into
their proprietary products, a practice that is severely limited by the GNU license.

1.4. What This Book Offers 1.6. Beginner's Guide
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 05. htm (2 of 2) [15/ 05/ 2002 18: 02: 10] 20
20 Page 21 22

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 06. htm
Linux in a Nutshell, 3rd
Edition

1.6. Beginner's Guide
If you're just beginning to work on a Linux system, the abundance of commands might prove
daunting. To help orient you, the following lists present a sampling of commands on various
topics.

1.6.1. Communication

ftp File Transfer Protocol.
login Sign on.
rlogin Sign on to remote system.
rsh Run shell or single command on remote system.
talk Exchange messages interactively with other terminals.
telnet Connect to another system.
tftp Trivial file transfer protocol.
uudecode Decode file prepared for mailing by uuencode.
uuencode
Encode file containing binary characters for mailing.
vacation Respond to mail automatically.

1.6.2. Comparisons
cmp
Compare two files, byte by byte.
comm Compare items in two sorted files.
diff Compare two files, line by line.
diff3 Compare three files.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 06. htm (1 of 7) [15/ 05/ 2002 18: 02: 12] 21
21 Page 22 23
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 06. htm
1.6.3. File Management
cat
Concatenate files or display them.
chfn Change user information for finger, email, etc.
cksum Compute checksum.
chmod Change access modes on files.
chsh Change login shell.
cp Copy files.
csplit Break files at specific locations.
dd Copy files in raw disk form.
file Determine a file's type.
head Show the first few lines of a file.
less Display files by screenful.
ln Create filename aliases.
ls List files or directories.
merge Merge changes from different files.
mkdir Create a directory.
more Display files by screenful.
mv Move or rename files or directories.
newgrp Change current group.
pwd Print working directory.
rcp Copy files to remote system.
rm Remove files.
rmdir Remove directories.
split Split files evenly.
tail Show the last few lines of a file.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 06. htm (2 of 7) [15/ 05/ 2002 18: 02: 12] 22
22 Page 23 24
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 06. htm
wc Count lines, words, and characters.

1.6.4. Printing
lpq
Show status of print jobs.
lpr Send to the printer.
lprm Remove print job.
lpstat Get printer status.
pr Format and paginate for printing.

1.6.5. Programming
ar
Create and update library files.
as Generate object file.
bison Generate parsing tables.
cpp Preprocess C code.
flex Lexical analyzer.
g++ GNU C++ compiler.
gcc GNU C compiler.
ld Link editor.
m4 Macro processor.
make Create programs.
ranlib Regenerate archive symbol table.
rpcgen Translate RPC to C code.
yacc Generate parsing tables.

1.6.6. Program Maintenance
cvs
Manage different versions (revisions) of source files.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 06. htm (3 of 7) [15/ 05/ 2002 18: 02: 12] 23
23 Page 24 25
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 06. htm
etags Generate symbol list for use with the Emacs editor.
gctags Generate symbol list for use with the vi editor.
gdb GNU debugger.
gprof Display object file's profile data.
imake Generate makefiles for use with make.
make
Maintain, update, and regenerate related programs and files.
nm Display object file's symbol table.
patch Apply patches to source code.
rcs Manage different versions (revisions) of source files.
size Print the size of an object file in bytes.
strace Trace system calls and signals.
strip Strip symbols from an object file.

1.6.7. Searching
apropos
Search manpages for topic.
egrep Extended version of grep.
fgrep
Search files for literal words.
find Search the system for filenames.
grep Search files for text patterns.
strings Search binary files for text patterns.
whereis Find command.

1.6.8. Shell Programming
echo
Repeat command-line arguments on the output.
expr Perform arithmetic and comparisons.
printf Format and print command-line arguments.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 06. htm (4 of 7) [15/ 05/ 2002 18: 02: 12] 24
24 Page 25 26
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 06. htm
sleep Pause during processing.
test Test a condition.

1.6.9. Storage
bzip2
Compress files to free up space.
cpio Create and unpack file archives.
gunzip Expand compressed (. gz and .Z) files (preferred).
gzip Compress files to free up space.
shar Create shell archive.
tar Copy files to or restore files from an archive medium.
zcat Display contents of compressed files.

1.6.10. System Status
at
Execute commands later.
atq Show jobs queued by at.
atrm
Remove job queued by at.
chgrp
Change file group.
chown Change file owner.
crontab Automate commands.
date Display or set date.
df Show free disk space.
du Show disk usage.
env Show environment variables.
finger Display information about users.
kill Terminate a running command.
printenv Show environment variables.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 06. htm (5 of 7) [15/ 05/ 2002 18: 02: 12] 25
25 Page 26 27
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 06. htm
ps Show processes.
stty Set or display terminal settings.
who Show who is logged on.

1.6.11. Text Processing
col
Process control characters.
cut Select columns for display.
ex Line editor underlying vi.
expand
Convert tabs to spaces.
fmt Produce roughly uniform line lengths.
fold Break lines.
gawk Process lines or records one by one.
ghostscript Display PostScript or PDF file.
groff Format troff input.
ispell Interactively check spelling.
join Merge different columns into a database.
paste Merge columns or switch order.
rev Print lines in reverse.
sed Noninteractive text editor.
sort Sort or merge files.
tac Print lines in reverse.
tr Translate (redefine) characters.
uniq Find repeated or unique lines in a file.
vi Visual text editor.
xargs Process many arguments in manageable portions.

1.6.12. Miscellaneous
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 06. htm (6 of 7) [15/ 05/ 2002 18: 02: 12] 26
26 Page 27 28

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 06. htm
banner Make posters from words.
bc Arbitrary precision calculator.
cal Display calendar.
clear Clear the screen.
man Get information on a command.
nice Reduce a job's priority.
nohup Preserve a running job after logging out.
passwd Set your login password.
script Produce a transcript of your login session.
su Become a superuser.
tee Simultaneously store output in file and send to screen.
which Print pathname of a command.

1.5. Sources and Licenses 2. System and Network
Administration Overview

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch01_ 06. htm (7 of 7) [15/ 05/ 2002 18: 02: 12] 27
27 Page 28 29

System and Network Administration Overview (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

Chapter 2. System and Network
Administration Overview
Contents:
Common Commands
Overview of Networking
Overview of TCP/ IP
Overview of Firewalls and Masquerading
Overview of NFS
Overview of NIS
Administering NIS
RPC and XDR

2.1. Common Commands
Following are lists of commonly used system administration commands.

2.1.1. Clocks

hwclock Manage hardware clock.
netdate Set clock according to host's clock.
rdate Manage time server.
zdump Print list of time zones.
zic Create time conversion information files.

2.1.2. Daemons

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 01. htm (1 of 10) [15/ 05/ 2002 18: 02: 14] 28
28 Page 29 30
System and Network Administration Overview (Linux in a Nutshell, 3rd Edition)
apmd Advanced Power Management daemon.
bootpd Internet Boot Protocol daemon.
fingerd Finger daemon.
ftpd File Transfer Protocol daemon.
gated Manage routing tables between networks.
identd Identify user running TCP/ IP process.
imapd IMAP mailbox server daemon.
inetd Internet services daemon.
kerneld Provide automatic kernel module loading.
klogd Manage syslogd.
lpd
Printer daemon.
mountd NFS mount request server.
named Internet domain name server.
nfsd NFS daemon.
pop2d POP server.
pop3d POP server.
powerd Monitor UPS connection.
pppd Maintain Point-to-Point Protocol (PPP) network connections.
rdistd Remote file distribution server.
rexecd Remote execution server.
rlogind rlogin server.
routed Routing daemon.
rshd Remote shell server.
rwhod Remote who server.
syslogd System logging daemon.
talkd Talk daemon.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 01. htm (2 of 10) [15/ 05/ 2002 18: 02: 14] 29
29 Page 30 31
System and Network Administration Overview (Linux in a Nutshell, 3rd Edition)
tcpd TCP network daemon.
tftpd Trivial File Transfer Protocol daemon.
update Buffer flush daemon.
ypbind NIS binder process.
yppasswdd NIS password modification server.
ypserv NIS server process.

2.1.3. Hardware
agetty
Start user session at terminal.
arp Manage the ARP cache.
cardctl Control PCMCIA cards.
cardmgr PCMCIA card manager daemon.
cfdisk Maintain disk partitions (graphical interface).
fdisk Maintain disk partitions.
getty Start user session at terminal.
kbdrate Manage the keyboard's repeat rate.
ramsize Print information about RAM disk.
setserial Set serial port information.
slattach Attach serial lines as network interfaces.

2.1.4. Host Information
arch
Print machine architecture.
dnsdomainname Print DNS domain name.
domainname Print NIS domain name.
free Print memory usage.
host Print host and zone information.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 01. htm (3 of 10) [15/ 05/ 2002 18: 02: 14] 30
30 Page 31 32
System and Network Administration Overview (Linux in a Nutshell, 3rd Edition)
hostname Print or set hostname.
nslookup Query Internet domain name servers.
uname Print host information.

2.1.5. Installation
cpio
Copy file archives.
install Copy files into locations providing user access and set permissions.
rdist Distribute files to remote systems.
tar Copy files to or restore files from an archive medium.

2.1.6. Mail
fetchmail
Retrieve mail from remote servers.
formail Convert input to mail format.
mailq Print a summary of the mail queue.
makemap Update sendmail's database maps.
rmail Handle uucp mail.
sendmail Send and receive mail.

2.1.7. Managing Filesystems
To Unix systems, a filesystem is some device (such as a hard drive, floppy, or CD-ROM) that
is formatted to store files. Filesystems can be found on hard drives, floppies, CD-ROMs, or
other storage media that permit random access.

The exact format and means by which the files are stored are not important; the system
provides a common interface for all filesystem types that it recognizes. Under Linux,
filesystem types include the Second Extended Filesystem, or ext2fs, which you probably use
to store Linux files. The second extended filesystem was developed primarily for Linux and
supports 256-character filenames, 4-terabyte maximum filesystem size, and other useful
features. (It is "second" because it is the successor to the extended filesystem type.) Other
common filesystem types include the MS-DOS filesystem, which allows files on MS-DOS
partitions and floppies to be accessed under Linux, and the ISO 9660 filesystem used by CD-file:///

E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 01. htm (4 of 10) [15/ 05/ 2002 18: 02: 14] 31
31 Page 32 33
System and Network Administration Overview (Linux in a Nutshell, 3rd Edition)
ROMs.

debugfs Debug extfs filesystem.
dosfsck Check and repair a DOS or VFAT filesystem.
dumpe2fs Print information about superblock and blocks group.
e2fsck Check and repair a second extended filesystem.
fdformat Format floppy disk.
fsck Check and repair filesystem.
fsck. minix Check and repair a MINIX filesystem.
fuser List processes using a filesystem.
mke2fs Make new second extended filesystem.
mkfs Make new filesystem.
mkfs. ext2 Another name for mke2fs.
mkfs. minix
Make new MINIX filesystem.
mklost+ found Make lost+ found directory.
mkraid Set up a RAID device.
mkswap Designate swap space.
mount Mount a filesystem.
raidstart Activate a RAID device.
raidstop Turn off a RAID device.
rdev Describe or change values for root filesystem.
rootflags List or set flags to use in mounting root filesystem.
showmount List exported directories.
swapdev Display or set swap device information.
swapoff Cease using device for swapping.
swapon Begin using device for swapping.
sync Write filesystem buffers to disk.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 01. htm (5 of 10) [15/ 05/ 2002 18: 02: 14] 32
32 Page 33 34
System and Network Administration Overview (Linux in a Nutshell, 3rd Edition)
tune2fs Manage second extended filesystem.
umount Unmount a filesystem.

2.1.8. Managing the Kernel
depmod
Create module dependency listing.
insmod Install new kernel module.
lsmod List kernel modules.
modprobe Load new module and its dependent modules.
rmmod Remove module.

2.1.9. Networking
dip
Establish dial-up IP connections.
gdc Administer gated routing daemon.
ifconfig Manage network interfaces.
ipchains Administer firewall facilities (2.2 kernel).
iptables Administer firewall facilities (2.4 kernel).
named Translate between domain names and IP addresses.
netstat Print network status.
portmap Map daemons to ports.
rarp Manage RARP table.
route Manage routing tables.
routed Dynamically keep routing tables up-to-date.
rpcinfo Report RPC information.
ruptime Check how long remote system has been up.
rwho Show who is logged in to remote system.
systat Show status of remote systems.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 01. htm (6 of 10) [15/ 05/ 2002 18: 02: 14] 33
33 Page 34 35
System and Network Administration Overview (Linux in a Nutshell, 3rd Edition)
traceroute Trace network route to remote host.

2.1.10. NIS Administration
domainname
Set or display name of current NIS domain.
makedbm Rebuild NIS databases.
ypbind Connect to NIS server.
ypcat Print values in NIS database.
ypchfn Change user information in NIS database for finger, email, etc.
ypchsh Change user login shell in NIS database.
ypinit Build new NIS databases.
ypmatch Print value of one or more NIS keys.
yppasswd Change user password in NIS database.
yppasswdd Update NIS database in response to yppasswd.
yppoll
Determine version of NIS map at NIS server.
yppush Propagate NIS map.
ypserv NIS server daemon.
ypset Point ypbind at a specific server.
ypwhich Display name of NIS server or map master.
ypxfr Transfer NIS database from server to local host.

2.1.11. Printing
lpc
Control line printer.
tunelp Tune the printer parameters.

2.1.12. Security and System Integrity
badblocks
Search for bad blocks.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 01. htm (7 of 10) [15/ 05/ 2002 18: 02: 14] 34
34 Page 35 36

System and Network Administration Overview (Linux in a Nutshell, 3rd Edition)
chroot Change root directory.

2.1.13. Starting and Stopping the System
bootpd
Internet Boot Protocol daemon.
bootpgw Internet Boot Protocol gateway.
bootptest Test bootpd.
halt
Stop or shut down system.
init Change runlevel.
reboot Shut down, then reboot system.
runlevel Print system runlevel.
shutdown Shut down system.
telinit Change the current runlevel.
uptime Display uptimes of local machines.

2.1.14. System Activity and Process Management
A number of additional commands in Chapter 3, "Linux Commands", are particularly useful
in controlling processes, including kill, killall, killall5, pidof, ps, and who.

fuser Identify processes using file or filesystem.
psupdate Update /boot/ psupdate.
renice Change the priority of running processes.
top Show most CPU-intensive processes.

2.1.15. Users
chpasswd
Change multiple passwords.
groupadd Add a new group.
groupdel Delete a group

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 01. htm (8 of 10) [15/ 05/ 2002 18: 02: 14] 35
35 Page 36 37

System and Network Administration Overview (Linux in a Nutshell, 3rd Edition)
groupmod Modify groups.
grpck Check the integrity of group system files.
grpconv Convert group file to shadow group file.
lastlog Generate report of last user login times.
newusers Add new users in a batch.
pwck Check the integrity of password system files.
pwconv Convert password file to shadow passwords.
rusers Print who-style information on remote machines.
rwall Print a message to remote users.
useradd Add a new user.
userdel Delete a user and her home directory.
usermod Modify a user's information.
w List logged-in users.
wall Write to all users.
whoami Show how you are currently logged in.

2.1.16. Miscellaneous
cron
Schedule commands for specific times.
dmesg Print bootup messages after the system is up.
ldconfig Update library links and do caching.
logger Send messages to the system logger.
logrotate Compress and rotate system logs.
rstat Display host's system status.
run-parts Run all scripts in a directory.

1.6. Beginner's Guide 2.2. Overview of Networking
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 01. htm (9 of 10) [15/ 05/ 2002 18: 02: 14] 36
36 Page 37 38

System and Network Administration Overview (Linux in a Nutshell, 3rd Edition)
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 01. htm (10 of 10) [15/ 05/ 2002 18: 02: 14] 37
37 Page 38 39

Overview of Networking (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

2.2. Overview of Networking
Networks connect computers so that the different systems can share information. For users
and system administrators, Unix systems have traditionally provided a set of simple but
valuable network services, which let you check whether systems are running, refer to files
residing on remote systems, communicate via electronic mail, and so on.

For most commands to work over a network, each system must be continuously running a
server process in the background, silently waiting to handle the user's request. This kind of
process is called a daemon; common examples, on which you rely for the most basic functions
of your Linux system, are named (which translates numeric IP addresses into the
alphanumeric names that humans are so fond of), lpd (which sends documents to a printer,
possibly over a network), and ftpd (which allows you to connect to another machine via ftp).

Most Unix networking commands are based on Internet protocols. These are standardized
ways of communicating across a network on hierarchical layers. The protocols range from
addressing and packet routing at a relatively low layer to finding users and executing user
commands at a higher layer.

The basic user commands that most systems support over Internet protocols are generally
called TCP/ IP commands, named after the two most common protocols. You can use all of
these commands to communicate with other Unix systems besides Linux systems. Many can
also be used to communicate with non-Unix systems, because a wide variety of systems
support TCP/ IP.

This section also covers NFS and NIS, which allow for transparent file and information
sharing across networks, and sendmail.

2.2.1. TCP/ IP Administration

ftpd Server for file transfers.
gated Manage routing tables between networks.
host Print host and zone information.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 02. htm (1 of 3) [15/ 05/ 2002 18: 02: 15] 38
38 Page 39 40
Overview of Networking (Linux in a Nutshell, 3rd Edition)
ifconfig Configure network interface parameters.
named Translate between domain names and IP addresses.
netstat Print network status.
nslookup Query domain name servers.
ping Check that a remote host is online and responding.
pppd Create PPP serial connection.
rdate Notify time server that date has changed.
route Manage routing tables.
routed Dynamically keep routing tables up to date.
slattach Attach serial lines as network interfaces.
telnetd Server for Telnet sessions from remote hosts.
tftpd Server for restricted set of file transfers.

2.2.2. NFS and NIS Administration
domainname
Set or display name of current NIS domain.
makedbm Rebuild NIS databases.
portmap DARPA port to RPC program number mapper.
rpcinfo Report RPC information.
ypbind Connect to NIS server.
ypcat Print values in NIS database.
ypinit Build new NIS databases.
ypmatch Print value of one or more NIS keys.
yppasswd Change user password in NIS database.
yppasswdd Update NIS database in response to yppasswd.
yppoll
Determine version of NIS map at NIS server.
yppush Propagate NIS map.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 02. htm (2 of 3) [15/ 05/ 2002 18: 02: 15] 39
39 Page 40 41

Overview of Networking (Linux in a Nutshell, 3rd Edition)
ypserv NIS server daemon.
ypset Point ypbind at a specific server.
ypwhich Display name of NIS server or map master.
ypxfr Transfer NIS database from server to local host.

2. System and Network
Administration Overview
2.3. Overview of TCP/ IP

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 02. htm (3 of 3) [15/ 05/ 2002 18: 02: 15] 40
40 Page 41 42

Overview of TCP/ IP (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

2.3. Overview of TCP/ IP
TCP/ IP is a set of communications protocols that define how different types of computers talk
to one another. It's named for its two most common protocols, the Transmission Control
Protocol and the Internet Protocol. The Internet Protocol moves data between hosts: it splits
data into packets, which are then forwarded to machines via the network. The Transmission
Control Protocol ensures that the packets in a message are reassembled in the correct order at
their final destination and that any missing datagrams are resent until they are correctly
received. Other protocols provided as part of TCP/ IP include:

Address Resolution Protocol (ARP)
Translates between Internet and local hardware addresses (Ethernet et al.)
Internet Control Message Protocol (ICMP)
Error-message and control protocol
Point-to-Point Protocol (PPP)
Enables TCP/ IP (and other protocols) to be carried across both synchronous and
asynchronous point-to-point serial links

Reverse Address Resolution Protocol (RARP)
Translates between local hardware and Internet addresses (opposite of ARP)
Serial Line Internet Protocol (SLIP)
Carries IP over serial lines
Simple Mail Transport Protocol (SMTP)
Used by sendmail to send mail via TCP/ IP

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 03. htm (1 of 7) [15/ 05/ 2002 18: 02: 17] 41
41 Page 42 43

Overview of TCP/ IP (Linux in a Nutshell, 3rd Edition)
Simple Network Management Protocol (SNMP)

Performs distributed network management functions via TCP/ IP
User Datagram Protocol (UDP)
Provides data transfer, without the reliable delivery capabilities of TCP
Background about TCP/ IP is described in the three-volume set Internetworking with TCP/ IP
by Douglas R. Comer, published by Prentice-Hall. The commands in this chapter and the next
are described in more detail in TCP/ IP Network Administration, 2d ed., by Craig Hunt and
Linux Network Administrator's Guide by Olaf Kirch and Terry Dawson, both published by
O'Reilly & Associates.

In the architecture of TCP/ IP protocols, data is passed down the stack (toward the Network
Access Layer) when it is being sent to the network and up the stack when it is being received
from the network (see Figure 2-1).

Figure 2-1. Layers in the TCP/ IP protocol architecture
2.3.1. IP Addresses
The IP (Internet) address is a 32-bit binary number that differentiates your machine from all
others on the network. Each machine must have a unique IP address. An IP address contains
two parts: a network part and a host part. The number of address bits used to identify the
network and host differ according to the class of the address. There are three main address
classes: A, B, and C (see Figure 2-2). The leftmost bits indicate what class each address is.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 03. htm (2 of 7) [15/ 05/ 2002 18: 02: 17] 42
42 Page 43 44
Overview of TCP/ IP (Linux in a Nutshell, 3rd Edition)
Figure 2-2. IP address structure
A more recent standard called Classless Inter-Domain Routing (CIDR) extends the class
system's idea of using initial bits to identify where packets should be routed. Under CIDR, a
new domain can be created with any number of fixed leftmost bits (not just a multiple of 8).

Another new standard called IPv6 changes the method of addressing and increases the number
of fields, but it will be a while before anyone uses it.

If you wish to connect to the Internet, contact the Network Information Center and have them
assign you a network address. If you are not connecting to an outside network, you can choose
your own network address, as long as it conforms to the IP address syntax. You should use
special reserved addresses provided for in RFC 1597, which lists IP network numbers for
private networks that don't have to be registered with the IANA (Internet Assigned Numbers
Authority). An IP address is different from an Ethernet address, which is assigned by the
manufacturer of the physical Ethernet card.

2.3.2. Gateways and Routing
Gateways are hosts responsible for exchanging routing information and forwarding data from
one network to another. Each portion of a network that is under a separate local administration
is called an autonomous system (AS). Autonomous systems connect to each other via exterior

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 03. htm (3 of 7) [15/ 05/ 2002 18: 02: 17] 43
43 Page 44 45

Overview of TCP/ IP (Linux in a Nutshell, 3rd Edition)
gateways. An AS also may contain its own system of networks, linked via interior gateways.

2.3.2.1. Gateway protocols
Gateway protocols include:
EGP (Exterior Gateway Protocol)
BGP (Border Gateway Protocol)

Protocols for exterior gateways to exchange information
RIP (Routing Information Protocol)
Interior gateway protocol; most popular for LANs
Hello Protocol
OSPF (Open Shortest Path First)

Interior gateway protocol

2.3.2.2. Routing daemons
gated
and routed, the routing daemons, can be run on a host to make it function as a gateway.
Only one of them can run on a host at any given time. gated is the gateway routing daemon
and allows a host to function as both an exterior and interior gateway. It simplifies the routing
configuration by combining the protocols RIP, Hello, BGP, EGP, and OSPF into a single
package.

routed, a network routing daemon that uses RIP, allows a host to function as an interior
gateway only. routed manages the Internet routing tables. For more details on gated and
routed, see Chapter 3, "Linux Commands".

2.3.2.3. Routing tables
Routing tables provide information needed to route packets to their destinations. This
information includes destination network, gateway to use, route status, and number of packets
transmitted. Routing tables can be displayed with the netstat command.

2.3.3. Name Service
Each host on a network has a name that points to information about the host. Hostnames can
be assigned to any device that has an IP address. Name service translates the hostnames (easy
for people to remember) to IP addresses (the numbers the computer deals with).

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 03. htm (4 of 7) [15/ 05/ 2002 18: 02: 17] 44
44 Page 45 46

Overview of TCP/ IP (Linux in a Nutshell, 3rd Edition)
2.3.3.1. DNS and BIND
The Domain Name System (DNS) is a distributed database of information about hosts on a
network. Its structure is similar to that of the Unix filesystem --an inverted tree, with the root
at the top. The branches of the tree are called domains (or subdomains) and correspond to IP
addresses. The most popular implementation of DNS is the BIND (Berkeley Internet Name
Domain) software.

DNS works as a client/ server application. The resolver is the client, the software that asks
questions about host information. The name server is the process that answers the questions.
The server side of BIND is the named daemon. You can interactively query name servers for
host information with the nslookup command. For more details on named and nslookup, see
Chapter 3, "Linux Commands".

As the name server of its domain, your machine would be responsible for keeping (and
providing on request) the names of the machines in its domain. Other name servers on the
network would forward requests for these machines to it.

2.3.3.2. Domain names
The full domain name is the sequence of names, starting from the current domain and going
back to the root, with a period separating the names. For instance, oreilly. com indicates the
domain oreilly (for O'Reilly & Associates), which is under the domain com (for commercial).
One machine under this domain is www. oreilly. com. Top-level domains include:

com
Commercial organizations
edu
Educational organizations
gov
Government organizations
mil
Military departments
net

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 03. htm (5 of 7) [15/ 05/ 2002 18: 02: 17] 45
45 Page 46 47

Overview of TCP/ IP (Linux in a Nutshell, 3rd Edition)
Commercial Internet organizations, usually Internet service providers

org
Miscellaneous organizations
Countries also have top-level domains.

2.3.4. Configuring TCP/ IP
2.3.4.1. ifconfig
The network interface represents the way that the networking software uses the hardware --
the driver, the IP address, and so forth. To configure a network interface, use the ifconfig
command. With ifconfig, you can assign an address to a network interface, setting the
netmask, broadcast address, and IP address at boot time. You can also set network interface
parameters, including the use of ARP, the use of driver-dependent debugging code, the use of
one-packet mode, and the address of the correspondent on the other end of a point-to-point
link. For more information on ifconfig, see Chapter 3, "Linux Commands".

2.3.4.2. Serial-line communication
There are two protocols for serial-line communication: Serial Line IP (SLIP) and Point-to-Point
Protocol (PPP). These protocols let computers transfer information using the serial port
instead of a network card and a serial cable in place of an Ethernet cable.

Under Linux, the SLIP driver is installed in the kernel. To convert a serial line to SLIP mode,
use the slattach program (details on slattach are available in Chapter 3, "Linux Commands").

Don't forget that after putting the line in SLIP mode, you still have to run ifconfig to configure
the network interface. For example, if your machine is named tanuki and you have dialed in
to ruby:

# ifconfig s10 tanuki pointopoint ruby
# route add ruby
# route add default gw ruby

This configures the interface as a point-to-point link to ruby, adds the route to ruby, and
makes it a default route, specifying ruby as the gateway.

PPP was intended to remedy some of SLIP's failings; it can hold packets from non-Internet
protocols, it implements client authorization and error detection/ correction, and it dynamically
configures each network protocol that passes through it. Under Linux, PPP exists as a driver
in the kernel and as the daemon pppd. For more information on pppd, see Chapter 3, "Linux

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 03. htm (6 of 7) [15/ 05/ 2002 18: 02: 17] 46
46 Page 47 48

Overview of TCP/ IP (Linux in a Nutshell, 3rd Edition)
Commands".

2.3.5. Troubleshooting TCP/ IP
The following commands can be used to troubleshoot TCP/ IP. For more details on these
commands, see Chapter 3, "Linux Commands".

ifconfig
Provide information about the basic configuration of the network interface.
netstat

Display network status.
ping

Indicate whether a remote host can be reached.
nslookup

Query the DNS name service.
traceroute

Trace route taken by packets to reach network host.

2.2. Overview of Networking 2.4. Overview of Firewalls
and Masquerading

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 03. htm (7 of 7) [15/ 05/ 2002 18: 02: 17] 47
47 Page 48 49

Overview of Firewalls and Masquerading (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

2.4. Overview of Firewalls and Masquerading
A firewall computer is a secure system that sits between an internal network and an external
network (i. e., the Internet). It is configured with a set of rules that it uses to determine what
traffic is allowed to pass and what traffic is barred. While a firewall is generally intended to
protect the network from malicious or even accidentally harmful traffic from the outside, it
can also be configured to monitor traffic leaving the network. As the sole entry point into the
system, the firewall makes it easier to construct defenses and monitor activity.

The firewall can also be set up to present a single IP address to the outside world, even though
it may use multiple IP addresses internally. This is known as masquerading. Masquerading
can act as additional protection hiding the very existence of a network. It also saves the
trouble and expense of obtaining multiple IP addresses.

NOTE
The discussion of iptables applies to Version 2.4 Linux kernels. As this book
was being written, both iptables and the 2.4 kernel were still in development.
The final product may differ slightly from what we describe here. See the
O'Reilly book Linux Network Administrator's Guide by Olaf Kirch and Terry
Dawson or the the "Linux IPTABLES-HOWTO" for more information. This
HOWTO, and a myriad of others, can be obtained from the the Linux
Documentation Project web sites (see the Preface).

IP firewalling and masquerading are implemented in Linux Version 2.2 with the ipchains
utility and in Linux Version 2.4 with the iptables facility. The 2.0 kernels used a command
called ipfwadm, which is included in the command section for older systems but will not be
covered here. The two newer commands are very similar, but some of the organization of the
rules they use is different. The firewalling facilities built into the 2.4 kernel are also designed
to be extensible. If there is some function missing from the implementation, you could add it.
See the "Linux netfilter Hacking HOWTO" for details on how to do this.

Most distributions come with all the firewall support already built into the kernel, but if it is
not built into yours, you need to compile firewall support into the kernel by running make
config
with the 2.2 kernel and selecting all of the following networking options:

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 04. htm (1 of 3) [15/ 05/ 2002 18: 02: 18] 48
48 Page 49 50
Overview of Firewalls and Masquerading (Linux in a Nutshell, 3rd Edition)
l Network firewalls

l TCP/ IP networking
l IP: firewalling

If you want to support a transparent proxy service on your firewall, select the following
option:

l IP: transparent proxy support

If you want your firewall to support masquerading, select the following options as well:
l IP: masquerading

l IP: ICMP masquerading

With the 2.4 kernel, you will need to select these options:
l Network packet filtering (replaces ipchains)

l IP tables support (required for filtering/ masq/ NAT)
l Packet filtering

There are several extended target and matching rule modules you may wish to compile as
well. The behavior of those extension modules is described under the iptables command. If
you have an existing firewall designed for the 2.2 kernel, or the 2.0 kernel, you can compile
support for these older-style commands and use them with your new kernel instead of the
newer iptables style of netfiltering.

The firewalling facility provides built-in rule sets, or chains, against which each network
packet is checked. In the 2.4 kernel, these chains are also organized into tables that separate
out filtering functions from masquerading and packet mangling functions. In either kernel, if a
match is found, the counters on that rule are incremented and any target for that rule is
applied. A target might accept, reject, or masquerade a packet or even pass it along to another
chain for processing. Details on the chains provided in both iptables and ipchains can be
found under the description of the appropriate command.

In addition to these chains, you can create your own user-defined chains. You might want a
special chain for your PPP interfaces or for packets from a particular site. To call a user-defined
chain, you just make it the target for a match.

It is possible to make it through a chain without matching any rules that have a target. If no
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 04. htm (2 of 3) [15/ 05/ 2002 18: 02: 18] 49
49 Page 50 51

Overview of Firewalls and Masquerading (Linux in a Nutshell, 3rd Edition)
rule matches the packet in a user-defined chain, control returns to the chain from which it was
called, and the next rule in that chain is checked. If no rule matches the packet in a built-in
chain a default policy for that chain is used. The default policy can be any of the special
targets that determine what is done with a packet. The valid targets for each command are
detailed in the commands section.

In the 2.2 kernel, you use the ipchains command to define the rules. Once you have the rules
defined, you can use ipchains-save to create a file with all the rule definitions and ipchains-restore
to restore those definitions when you reboot. The equivalent 2.4 kernel command for
defining rules is iptables. iptables-save and iptables-restore were not completed at the time
of this writing but should work similarly to their ipchains counterparts.

For more information on the kinds of decisions you need to make and the considerations that
go into defining the rules, see a general book on firewalls such as the O'Reilly book Building
Internet Firewalls
by D. Brent Chapman and Elizabeth D. Zwicky. For more details on
ipchains or iptables, consult the Linux Network Administrator's Guide, 2d ed. by Olaf Kirch
and Terry Dawson, or consult one of the relevant HOW-TOs, such as the "Linux IPCHAINS
HOW-TO" or the "Linux IPTABLES HOW-TO."

2.3. Overview of TCP/ IP 2.5. Overview of NFS
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 04. htm (3 of 3) [15/ 05/ 2002 18: 02: 18] 50
50 Page 51 52

Overview of NFS (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

2.5. Overview of NFS
The Network File System (NFS) is a distributed filesystem that allows users to mount remote
filesystems as if they were local. NFS uses a client-server model, in which a server exports
directories to be shared, and clients mount the directories to access the files in them. NFS
eliminates the need to keep copies of files on several machines by letting the clients all share a
single copy of a file on the server. NFS is an RPC-based application-level protocol. For more
information on the architecture of network protocols, see Section 2.3, "Overview of TCP/ IP"

earlier in this chapter.

2.5.1. Administering NFS
Setting up NFS clients and servers involves starting the NFS daemons, exporting filesystems
from the NFS servers, and mounting them on the clients. The /etc/ exports file is the NFS
server configuration file; it controls which files and directories are exported and what kinds of
access are allowed. Names and addresses for clients receiving services are kept in the
/etc/ hosts file.

2.5.2. Daemons
NFS server daemons, called nfsd daemons, run on the server and accept RPC calls from
clients. NFS servers also run the mountd daemon to handle mount requests. On the client,
caching and buffering are handled by biod, the block I/ O daemon. The portmap daemon
maps RPC program numbers to the appropriate TCP/ IP port numbers.

2.5.3. Exporting Filesystems
To set up an NFS server, first check that all the hosts that will mount your filesystem can
reach your host. Next, edit the /etc/ exports file to include the mount-point pathname of the
filesystem to be exported. If you are running mountd, the files will be exported as the
permissions in /etc/ exports allow.

2.5.4. Mounting Filesystems

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 05. htm (1 of 2) [15/ 05/ 2002 18: 02: 19] 51
51 Page 52 53

Overview of NFS (Linux in a Nutshell, 3rd Edition)
To enable an NFS client, mount a remote filesystem after NFS is started, either by using the
mount command or by specifying default remote filesystems in /etc/ fstab. A mount request
calls the server's mountd daemon, which checks the access permissions of the client and
returns a pointer to a filesystem. Once a directory is mounted, it remains attached to the local
filesystem until it is dismounted with the umount command or until the local system is
rebooted.

Usually, only a privileged user can mount filesystems with NFS. However, you can enable
users to mount and unmount selected filesystems using the mount and umount commands if
the user option is set in /etc/ fstab. This can reduce traffic by having filesystems mounted only
when needed. To enable user mounting, create an entry in /etc/ fstab for each filesystem to be
mounted.

2.4. Overview of Firewalls
and Masquerading
2.6. Overview of NIS

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 05. htm (2 of 2) [15/ 05/ 2002 18: 02: 19] 52
52 Page 53 54

Overview of NIS (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

2.6. Overview of NIS
The Network Information System (NIS) refers to the service formerly known as Sun Yellow
Pages (YP). It is used to make configuration information consistent on all machines in a
network. It does this by designating a single host as the master of all the system
administration files and databases and distributing this information to all other hosts on the
network. The information is compiled into databases called maps. NIS is built on the RPC
protocol. There are currently two NIS servers freely available for Linux, yps and ypserv.

2.6.1. Servers
In NIS, there are two types of servers --master and slave servers. Master servers are
responsible for maintaining the maps and distributing them to the slave servers. The files are
then available locally to requesting processes.

2.6.2. Domains
An NIS domain is a group of hosts that use the same set of maps. The maps are contained in a
subdirectory of /var/ yp having the same name as the domain. The machines in a domain share
password, hosts, and group file information. NIS domain names are set with the domainname
command.

2.6.3. NIS Maps
NIS stores information in database files called maps. Each map consists of a pair of dbm
database files, one containing a directory of keys (a bitmap of indices), and the other
containing data values. The non-ASCII structure of dbm files necessitates using NIS tools
such as yppush to move maps between machines.

The file /var/ yp/ YP_ MAP_ X_ LATE contains a complete listing of active NIS maps as well as
NIS aliases for NIS maps. All maps must be listed here in order for NIS to serve them.

2.6.4. Map Manipulation Utilities

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 06. htm (1 of 2) [15/ 05/ 2002 18: 02: 20] 53
53 Page 54 55

Overview of NIS (Linux in a Nutshell, 3rd Edition)
The following utilities are used to administer NIS maps:

makedbm
Make dbm files. Modify only ypservers map and any nondefault maps.
ypinit
Build and install NIS databases. Manipulate maps when NIS is being initialized.
Should not be used when NIS is already running.

yppush
Transfer updated maps from the master server.

2.5. Overview of NFS 2.7. Administering NIS
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 06. htm (2 of 2) [15/ 05/ 2002 18: 02: 20] 54
54 Page 55 56

Administering NIS (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

2.7. Administering NIS
NIS is enabled by setting up NIS servers and NIS clients. The descriptions given here describe
NIS setup using ypserv, which does not support a master/ slave server configuration. All NIS
commands depend on the RPC portmap program, so make sure it is installed and running
before setting up NIS.

2.7.1. Setting up an NIS server
Setting up an NIS server involves:
1. Setting a domain name for NIS using domainname
2. Editing the ypMakefile, which identifies which databases to build and what sources to
use in building them

3. Copying the ypMakefile to /var/ yp/ Makefile
4. Running make from the /var/ yp directory, which builds the databases and initializes
the server

5. Starting ypserv, the NIS server daemon

2.7.2. Setting up an NIS client
Setting up an NIS client involves setting the domain name for NIS using domainname, which
should be the same name used by the NIS server, and running ypbind.

2.7.3. NIS User Accounts
NIS networks have two kinds of user accounts: distributed and local. Distributed accounts
must be administered from the master machine; they provide information that is uniform on
each machine in an NIS domain. Changes made to distributed accounts are distributed via NIS
maps. Local accounts are administered from the local computer; they provide account

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 07. htm (1 of 2) [15/ 05/ 2002 18: 02: 21] 55
55 Page 56 57

Administering NIS (Linux in a Nutshell, 3rd Edition)
information unique to a specific machine. They are not affected by NIS maps, and changes
made to local accounts do not affect NIS. When NIS is installed, preexisting accounts default
to local accounts.

2.6. Overview of NIS 2.8. RPC and XDR
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 07. htm (2 of 2) [15/ 05/ 2002 18: 02: 21] 56
56 Page 57 58

RPC and XDR (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

2.8. RPC and XDR
RPC (Remote Procedure Call) is the session protocol used by both NFS and NIS. It allows a
host to make a procedure call that appears to be local but is really executed remotely on
another machine on the network. 11 RPC is implemented as a library of procedures, plus a
network standard for ordering bytes and data structures called XDR (eXternal Data
Representation).

2.7. Administering NIS 3. Linux Commands
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch02_ 08. htm [15/ 05/ 2002 18: 02: 22] 57
57 Page 58 59

Linux Commands (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

Chapter 3. Linux Commands
Contents:
Alphabetical Summary of Commands

This chapter presents the Linux user, programmer, and system administration commands. Each entry is labeled with the command
name on the outer edge of the page. The syntax line is followed by a brief description and a list of available options. Many commands
come with examples at the end of the entry. If you need only a quick reminder or suggestion about a command, you can skip directly
to the examples.

Typographic conventions for describing command syntax are listed in the Preface. For help in locating commands, see the index at the
back of this book.

We've tried to be as thorough as possible in listing options. The basic command information and most options should be correct;
however, there are many Linux distributions and many versions of commands. New options are added and sometimes old options are
dropped. You may, therefore, find some differences between the options you find described here and the ones on your system. When
there seems to be a discrepancy, check the manpage. For most commands you can also use the option --help to get a brief usage
message. (Even when it isn't a valid option, it will usually result in an "invalid option" error along with the usage message.)

Traditionally, commands take single-letter options preceded by a single hyphen, like -d. A more recent convention allows long options
preceded by two hyphens, like --debug. Often, a feature can be invoked through either the old style or the new style of options.

3.1. Alphabetical Summary of Commands
agetty agetty [options] port baudrate [term]
System administration command. The Linux version of getty. Set terminal type, modes, speed, and line
discipline. agetty is invoked by init. It is the second process in the series init-getty-login-shell, which ultimately
connects a user with the Linux system. agetty reads the user's login name and invokes the login command with
the user's name as an argument. While reading the name, agetty attempts to adapt the system to the speed and
type of device being used.

You must specify a port, which agetty will search for in the /dev directory. You may use -, in which case agetty
reads from standard input. You must also specify baudrate, which may be a comma-separated list of rates,
through which agetty will step. Optionally, you may specify the term, which is used to override the TERM
environment variable.

Options
-h
Specify hardware, not software, flow control.
-i
Suppress printing of /etc/ issue before printing the login prompt.
-l program
Specify the use of program instead of /bin/ login.
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (1 of 351) [15/ 05/ 2002 18: 03: 34] 58
58 Page 59 60
Linux Commands (Linux in a Nutshell, 3rd Edition)
-m
Attempt to guess the appropriate baud rate.
-t timeout
Specify that agetty should exit if the open on the line succeeds and there is no response to the login
prompt in timeout seconds.

-L
Do not require carrier detect; operate locally only. Use this when connecting terminals.

apmd apmd [options]
System administration command. apmd handles events reported by the Advanced Power Management BIOS
driver. The driver reports on battery level and requests to enter sleep or suspend mode. apmd will log any
reports it gets via syslogd and take steps to make sure that basic sleep and suspend requests are handled
gracefully. You can fine-tune the behavior of apmd by specifying an apmd_ proxy command to run when it
receives an event.

Options
-c
n, --check n
Set the number of seconds to wait for an event before rechecking the power level. Default is to wait
indefinitely. Setting this causes the battery levels to be checked more frequently.

-P command, --apmd_ prxy command
Specify the apmd_ proxy command to run when APM driver events are reported. This is generally a shell
script. The command will be invoked with parameters indicating what kind of event was received. The
parameters are in the next list.

-p n, --percentage n
Log information whenever the power changes by n percent. The default is 5. Values greater than 100 will
disable logging of power changes.

-V, --version
Print version and exit.
-v, --version
Verbose mode; all events are logged.
-W, --wall
Use wall to alert all users of a low battery status.
-w n, --warn n
Log a warning at ALERT level when the battery charge drops below n percent. The default is 10.
Negative values disable low battery level warnings.

-q, --quiet
Disable low battery level warnings.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (2 of 351) [15/ 05/ 2002 18: 03: 34] 59
59 Page 60 61
Linux Commands (Linux in a Nutshell, 3rd Edition)
-?, --help
Print help summary and exit.
Parameters
The apmd proxy script will be invoked with the following parameters:
start
Invoked when the daemon starts.
stop
Invoked when the daemon stops.
suspend [ system | user ]
Invoked when a suspend request has been made. The second parameter indicates whether the request was
made by the system or by the user.

standby [ system | user ]
Invoked when a standby request has been made. The second parameter indicates whether the request was
made by the system or by the user.

resume [ suspend | standby | critical ]
Invoked when the system resumes normal operation. The second parameter indicates the mode the system
was in before resuming. (critical suspends indicate an emergency shutdown. After a critical suspend the
system may be unstable and you can use the resume command to help you recover from the suspension.

change power
Invoked when system power is changed from AC to battery or from battery to AC.
change battery
Invoked when the APM BIOS driver reports that the battery is low.
change capability
Invoked when the APM BIOS driver reports some hardware that affects its capability has been added or
removed.

apropos apropos string ...
Search the short manual page descriptions in the whatis database for occurrences of each string and display the
result on the standard output. Like whatis, except that it searches for strings instead of words. Equivalent to man
-k.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (3 of 351) [15/ 05/ 2002 18: 03: 34] 60
60 Page 61 62
Linux Commands (Linux in a Nutshell, 3rd Edition)
ar ar [-V] key [args] [posname] archive [files]
Maintain a group of files that are combined into a file archive. Used most commonly to create and update library
files as used by the link editor (ld). Only one key letter may be used, but each can be combined with additional
args (with no separations between). posname is the name of a file in archive. When moving or replacing files,
you can specify that they be placed before or after posname. -V prints the version number of ar on standard
error.

Key
d
Delete files from archive.
m
Move files to end of archive.
p
Print files in archive.
q
Append files to archive.
r
Replace files in archive.
t
List the contents of archive or list the named files.
x
Extract contents from archive or only the named files.
Arguments
a
Use with r or m key to place files in the archive after posname.
b
Same as a but before posname.
c
Create archive silently.
f
Truncate long filenames.
i
Same as b.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (4 of 351) [15/ 05/ 2002 18: 03: 34] 61
61 Page 62 63
Linux Commands (Linux in a Nutshell, 3rd Edition)
l

For backward compatibility; meaningless in Linux.
o
Preserve original timestamps.
s
Force regeneration of archive symbol table (useful after running strip).
S
Do not regenerate symbol table.
u
Use with r to replace only files that have changed since being put in archive.
v
Verbose; print a description of actions taken.
Example
Replace mylib. a with object files from the current directory:
ar r mylib. a `ls *. o

arch arch
Print machine architecture type to standard output. Equivalent to uname -m.

arp arp [options]
TCP/ IP command. Clear, add to, or dump the kernel's ARP cache (/ proc/ net/ arp).
Options
-v
Verbose mode.
-t type
Search for type entries when examining the ARP cache. type must be ether (Ethernet) or ax25 (AX. 25
packet radio); ether is the default.

-a [hosts]
Display hosts' entries or, if none are specified, all entries.
-d host
Remove host's entry.
-s host hardware-address

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (5 of 351) [15/ 05/ 2002 18: 03: 34] 62
62 Page 63 64
Linux Commands (Linux in a Nutshell, 3rd Edition)
Add the entry host hardware-address, where ether class addresses are 6 hexadecimal bytes, colon-separated.

-f file
Read entries from file and add them.

as as [options] files
Generate an object file from each specified assembly language source file. Object files have the same root name
as source files but replace the .s suffix with .o. There may be some additional system-specific options.

Options
--[ |
files]
Read input files from standard input, or from files if the pipe is used.
-a[ dhlns][= file]
With only the -a option, list source code, assembler listing, and symbol table. The other options specify
additional things to list or omit:

-ad
Omit debugging directives.
-ah
Include the high-level source code, if available.
-al
Include an assembly listing.
-an
Suppress forms processing.
-as
Include a symbol listing.
=file
Set the listing filename to file.
-defsym symbol= value
Define the symbol to have the value value, which must be an integer.
-f
Skip preprocessing.
--gstabs
Generate stabs debugging information.
-o objfile

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (6 of 351) [15/ 05/ 2002 18: 03: 34] 63
63 Page 64 65
Linux Commands (Linux in a Nutshell, 3rd Edition)
Place output in object file objfile (default is file. o).
-v
Display the version number of the assembler.
-I path
Include path when searching for .include directives.
-K
Warn before altering difference tables.
-L
Do not remove local symbols, which begin with L.
-R
Combine both data and text in text section.
-W
Quiet mode.

at at [options] time
Execute commands at a specified time and optional date. The commands are read from standard input or from a
file. (See also batch.) End input with EOF. time can be formed either as a numeric hour (with optional minutes
and modifiers) or as a keyword. It can contain an optional date, formed as a month and date, a day of the week,
or a special keyword (today or tomorrow). An increment can also be specified.

The at command can always be issued by a privileged user. Other users must be listed in the file /etc/ at. allow if
it exists; otherwise, they must not be listed in /etc/ at. deny. If neither file exists, only a privileged user can issue
the command.

Options
-c
job [job...]
Display the specified jobs on the standard output. This option does not take a time specification.
-d job [job...]
Delete the specified jobs. Same as atrm.
-f
file
Read job from file, not standard input.
-l
Report all jobs that are scheduled for the invoking user. Same as atq.
-m
Mail user when job has completed, regardless of whether output was created.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (7 of 351) [15/ 05/ 2002 18: 03: 34] 64
64 Page 65 66
Linux Commands (Linux in a Nutshell, 3rd Edition)
-q letter

Place job in queue denoted by letter, where letter is any single letter from a-z or A-Z. Default queue is a.
(The batch queue defaults to b.) Higher-lettered queues run at a lower priority.

-V
Display the version number.
Time
hh: mm [modifiers]
Hours can have one digit or two (a 24-hour clock is assumed by default); optional minutes can be given
as one or two digits; the colon can be omitted if the format is h, hh, or hhmm; (e. g., valid times are 5,
5: 30, 0530, 19: 45). If modifier am or pm is added, time is based on a 12-hour clock. If the keyword zulu
is added, times correspond to Greenwich Mean Time.

midnight | noon | teatime | now
Use any one of these keywords in place of a numeric time. teatime translates to 4: 00 p. m.; now must be
followed by an increment.

Date
month num[, year]
month is one of the 12 months, spelled out or abbreviated to its first three letters; num is the calendar date
of the month; year is the four-digit year. If the given month occurs before the current month, at schedules
that month next year.

day
One of the seven days of the week, spelled out or abbreviated to its first three letters.
today | tomorrow
Indicate the current day or the next day. If date is omitted, at schedules today when the specified time
occurs later than the current time; otherwise, at schedules tomorrow.

Increment
Supply a numeric increment if you want to specify an execution time or day relative to the current time. The
number should precede any of the keywords minute, hour, day, week, month, or year (or their plural forms).
The keyword next can be used as a synonym of + 1.

Examples
Note that the first two commands are equivalent:
at 1945 pm December 9
at 7: 45pm Dec 9
at 3 am Saturday
at now + 5 hours
at noon next day

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (8 of 351) [15/ 05/ 2002 18: 03: 34] 65
65 Page 66 67
Linux Commands (Linux in a Nutshell, 3rd Edition)
atq atq [options]
List the user's pending jobs, unless the user is a privileged user; in that case, everybody's jobs are listed. Same as
at -l.

Options
-q
queue
Query only the specified queue and ignore all other queues.
-v
Show jobs that have completed but not yet been deleted.
-V
Print the version number.

atrm atrm [options] job [job...]
Delete jobs that have been queued for future execution. Same as at -d.
Options
-q
queue
Remove job from the specified queue.
-V
Print the version number and then exit.

badblocks badblocks [options] device block-count
System administration command. Search device for bad blocks. You must specify the number of blocks on the
device (block-count).

Options
-b
blocksize
Expect blocksize-byte blocks.
-o file
Direct output to file.
-v
Verbose mode.
-w
Test by writing to each block and then reading back from it.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (9 of 351) [15/ 05/ 2002 18: 03: 34] 66
66 Page 67 68
Linux Commands (Linux in a Nutshell, 3rd Edition)
banner banner [option] [characters]
Print characters as a poster. If no characters are supplied, banner prompts for them and reads an input line from
standard input. By default, the results go to standard output, but they are intended to be sent to a printer.

Option
-w
width
Set width to width characters. Note that if your banner is in all lowercase, it will be narrower than width
characters. If -w is not specified, the default width is 132. If -w is specified but width is not provided, the
default is 80.

Example
/usr/ games/ banner -w50 Happy Birthday! |lpr

basename basename name [suffix]
basename option
Remove leading directory components from a path. If suffix is given, remove that also. The result is printed to
standard output.

Options
--help
Print help message and then exit.
--version
Print the version number and then exit.
Examples
% basename /usr/ lib/ libm. a
libm. a

% basename /usr/ lib/ libm. a .a
libm

batch batch [options] [time]
Execute commands entered on standard input. If time is omitted, execute them when the system load permits
(when the load average falls below 0.8). Very similar to at, but does not insist that the execution time be entered
on the command line. See at for details.

Options
-f
file
Read job from file, not standard input.
-m
Mail user when job has completed, regardless of whether output was created.
-q letter

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (10 of 351) [15/ 05/ 2002 18: 03: 34] 67
67 Page 68 69

Linux Commands (Linux in a Nutshell, 3rd Edition)
Place job in queue denoted by letter, where letter is one letter from a-z or A-Z. The default queue is a.
(The batch queue defaults to b.) Higher-lettered queues run at a lower priority.

-V
Print the version number and then exit.
-v
Display the time a job will be executed.

bash bash [options] [file [arguments;]]
sh [options] [file [arguments]]
Standard Linux shell, a command interpreter into which all other commands are entered. For more information,
see Chapter 7, "bash: The Bourne-Again Shell".

bc bc [options] [files]
bc is a language (and compiler) whose syntax resembles that of C, but with unlimited-precision arithmetic. bc
consists of identifiers, keywords, and symbols, which are briefly described in the following entries. Examples
are given at the end.

Interactively perform arbitrary-precision arithmetic or convert numbers from one base to another. Input can be
taken from files or read from the standard input. To exit, type quit or EOF.

Options
-l, --mathlib
Make functions from the math library available.
-s, --standard
Ignore all extensions, and process exactly as in POSIX.
-w, --warn
When extensions to POSIX bc are used, print a warning.
-q, --quiet
Do not display welcome message.
-v, --version
Print version number.
Identifiers
An identifier is a series of one or more characters. It must begin with a lowercase letter but may also contain
digits and underscores. No uppercase letters are allowed. Identifiers are used as names for variables, arrays, and
functions. Variables normally store arbitrary-precision numbers. Within the same program you may name a
variable, an array, and a function using the same letter. The following identifiers would not conflict:

x
Variable x.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (11 of 351) [15/ 05/ 2002 18: 03: 34] 68
68 Page 69 70
Linux Commands (Linux in a Nutshell, 3rd Edition)
x[ i]
Element i of array x. i can range from 0 to 2047 and can also be an expression.
x( y, z)
Call function x with parameters y and z.
Input-output keywords
ibase, obase, scale,
and last store a value. Typing them on a line by themselves displays their current value. You
can also change their values through assignment. The letters A-F are treated as digits whose values are 10-15.

ibase = n
Numbers that are input (e. g., typed) are read as base n (default is 10).
obase = n
Numbers that are displayed are in base n (default is 10). Note: Once ibase has been changed from 10, use
A to restore ibase or obase to decimal.

scale = n
Display computations using n decimal places (default is 0, meaning that results are truncated to integers).
scale is normally used only for base-10 computations.

last
Value of last printed number.
Statement keywords
A semicolon or a newline separates one statement from another. Curly braces are needed when grouping
multiple statements.

if (rel-expr) {statements} [else {statements}]
Do one or more statements if relational expression rel-expr is true. Otherwise, do nothing, or if else (an
extension) is specified, do alternative statements. For example:

if( x== y) {i = i + 1} else {i = i -1}
while (rel-expr) {statements}
Repeat one or more statements while rel-expr is true; for example:
while( i> 0) {p = p* n; q = a/ b; i = i-1}
for (expr1; rel-expr; expr2) {statements}
Similar to while; for example, to print the first 10 multiples of 5, you could type:
for( i= 1; i<= 10; i++) i* 5
GNU bf does not require three arguments to for. A missing argument 1 or 3 means that those expressions will
never be evaluated. A missing argument 2 evaluates to the value 1.

break

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (12 of 351) [15/ 05/ 2002 18: 03: 34] 69
69 Page 70 71
Linux Commands (Linux in a Nutshell, 3rd Edition)
Terminate a while or for statement.

print list
GNU extension. It provides an alternate means of output. list consists of a series of comma-separated
strings and expressions; print displays these entities in the order of the list. It does not print a newline
when it terminates. Expressions are evaluated, printed, and assigned to the special variable last. Strings
(which may contain special characters, i. e., characters beginning with \) are simply printed. Special
characters can be:

a
Alert or bell
b
Backspace
f
Form feed
n
Newline
r
Carriage return
q
Double quote
t
Tab
\
Backslash
continue
GNU extension. When within a for statement, jump to the next iteration.
halt
GNU extension. Cause the bc processor to quit.
limits
GNU extension. Print the limits enforced by the local version of bc.
Function keywords
define
f( args) {
Begin the definition of function f having the arguments args. The arguments are separated by commas.
Statements follow on successive lines. End with a }.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (13 of 351) [15/ 05/ 2002 18: 03: 34] 70
70 Page 71 72
Linux Commands (Linux in a Nutshell, 3rd Edition)
auto x, y

Set up x and y as variables local to a function definition, initialized to 0 and meaningless outside the
function. Must appear first.

return( expr)
Pass the value of expression expr back to the program. Return 0 if (expr) is left off. Used in function
definitions.

sqrt( expr)
Compute the square root of expression expr.
length( expr)
Compute how many significant digits are in expr.
scale( expr)
Same as length, but count only digits to the right of the decimal point.
read( )
GNU extension. Read a number from standard input. Return value is the number read, converted via the
value of ibase.

Math library functions
These are available when bc is invoked with -l. Library functions set scale to 20.
s( angle)
Compute the sine of angle, a constant or expression in radians.
c( angle)
Compute the cosine of angle, a constant or expression in radians.
a( n)
Compute the arctangent of n, returning an angle in radians.
e( expr)
Compute e to the power of expr.
l( expr)
Compute the natural log of expr.
j( n, x)
Compute the Bessel function of integer order n.
Operators
These consist of operators and other symbols. Operators can be arithmetic, unary, assignment, or relational:
arithmetic

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (14 of 351) [15/ 05/ 2002 18: 03: 34] 71
71 Page 72 73
Linux Commands (Linux in a Nutshell, 3rd Edition)
+ -* / % ^

unary
-
++ --
assignment
=+ =-=* =/ =% =^ =
relational
< <= > >= == !=
Other symbols
/* */
Enclose comments.
()
Control the evaluation of expressions (change precedence). Can also be used around assignment
statements to force the result to print.

{}
Use to group statements.
[]
Indicate array index.
"text"
Use as a statement to print text.
Examples
Note in these examples that when you type some quantity (a number or expression), it is evaluated and printed,
but assignment statements produce no display.

ibase = 8 Octal input
20 Evaluate this octal number
16 Terminal displays decimal value
obase = 2 Display output in base 2 instead of base 10
20 Octal input
10000 Terminal now displays binary value
ibase = A Restore base-10 input
scale = 3 Truncate results to 3 decimal places
8/ 7 Evaluate a division
1.001001000 Oops! Forgot to reset output base to 10
obase= 10 Input is decimal now, so A isn't needed
8/ 7
1.142 Terminal displays result (truncated)

The following lines show the use of functions:
define p( r, n){ Function p uses two arguments
auto v v is a local variable
v = r^ n r raised to the n power
return( v)} Value returned

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (15 of 351) [15/ 05/ 2002 18: 03: 34] 72
72 Page 73 74
Linux Commands (Linux in a Nutshell, 3rd Edition)
scale= 5
x= p( 2.5,2)
x = 2.5 ^ 2
x Print value of x
6.25
length( x) Number of digits
3
scale( x) Number of places right of decimal point
2

biff biff [arguments]
Notify user of mail arrival and sender's name. biff operates asynchronously. Mail notification works only if your
system is running the comsat( 8) server. The command biff y enables notification, and the command biff n
disables notification. With no arguments, biff reports biff's current status.

bison bison [options] file
Given a file containing context-free grammar, convert into tables for subsequent parsing while sending output to
file. c. This utility is both to a large extent compatible with yacc and named for it. All input files should use the
suffix .y; output files will use the original prefix. All long options (those preceded by --) may instead be
preceded by +.

Options
-b
prefix, --file-prefix= prefix
Use prefix for all output files.
-d, --defines
Generate file. h, producing #define statements that relate bison's token codes to the token names declared
by the user.

-r, --raw
Use bison token numbers, not yacc-compatible translations, in file. h.
-k, --token-table
Include token names and values of YYNTOKENS, YYNNTS, YYNRULES, and YYNSTATES in file. c.
-l, --no-lines
Exclude #line constructs from code produced in file. c. (Use after debugging is complete.)
-n, --no-parser
Suppress parser code in output, allowing only declarations. Assemble all translations into a switch
statement body and print it to file. act.

-o file, --output-file= file
Output to file.
-p prefix, --name-prefix= prefix
Substitute prefix for yy in all external symbols.
-t, --debug

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (16 of 351) [15/ 05/ 2002 18: 03: 34] 73
73 Page 74 75
Linux Commands (Linux in a Nutshell, 3rd Edition)
Compile runtime debugging code.
-v, --verbose
Verbose mode. Print diagnostics and notes about parsing tables to file. output.
-V, --version
Display version number.
-y, --yacc, --fixed-output-files
Duplicate yacc's conventions for naming output files.

bootpd bootpd [options] [configfile [dumpfile] ]
TCP/ IP command. Internet Boot Protocol server. bootpd normally is run by /etc/ inetd by including the following
line in the file /etc/ inetd. conf:

bootps dgram udp wait root /etc/ bootpd bootpd
This causes bootpd to be started only when a boot request arrives. It may also be started in standalone mode,
from the command line. Upon startup, bootpd first reads its configuration file, /etc/ bootptab (or the configfile
listed on the command line), then begins listening for BOOTREQUEST packets.

bootpd looks in /etc/ services to find the port numbers it should use. Two entries are extracted: bootps --the
bootp server listening port --and bootpc --the destination port used to reply to clients.

If bootpd is compiled with the -DDEBUG option, receipt of a SIGUSR1 signal causes it to dump its memory-resident
database to the file /etc/ bootpd. dump or the command-line specified dumpfile.

Options
-c
directory
Force bootpd to work in directory.
-d level
Specify the debugging level. Omitting level will increment the level by 1.
-t timeout
Specify a timeout value in minutes. A timeout value of 0 means wait forever.
Configuration file
The bootpd configuration file has a format in which two-character, case-sensitive tag symbols are used to
represent host parameters. These parameter declarations are separated by colons. The general format is:

hostname: tg= value: tg= value: tg= value
where hostname is the name of a bootp client and tg is a tag symbol. The currently recognized tags are listed
next.

Tags

Tag Meaning
bf
Bootfile

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (17 of 351) [15/ 05/ 2002 18: 03: 34] 74
74 Page 75 76
Linux Commands (Linux in a Nutshell, 3rd Edition)
bs Bootfile size in 512-octet blocks
cs Cookie server address list
ds Domain name server address list
gw Gateway address list
ha Host hardware address
hd Bootfile home directory
hn Send hostname
ht Host hardware type (see Assigned Numbers RFC)
im Impress server address list
ip Host IP address
lg Log server address list
lp lpr server address list
ns IEN-116 name server address list
rl Resource location protocol server address list
sm Host subnet mask
tc Table continuation
to Time offset in seconds from UTC
ts Time server address list
vm Vendor magic cookie selector

There is also a generic tag, Tn, where n is an RFC 1048 vendor field tag number. Generic data may be
represented as either a stream of hexadecimal numbers or as a quoted string of ASCII characters.

bootpgw bootpgw [options] server
Internet Boot Protocol Gateway. Maintain a gateway that forwards bootpd requests to server. In addition to
dealing with BOOTREPLY packets, also deal with BOOTREQUEST packets. bootpgw is normally run by
/etc/ inetd by including the following line in the file /etc/ inetd. conf:

bootps dgram udp wait root /etc/ bootpgw bootpgw
This causes bootpgw to be started only when a boot request arrives. bootpgw takes all the same options as
bootpd, except -c.

bootptest bootptest [options] server [template]
TCP/ IP command. Test server's bootpd daemon by sending requests every second for 10 seconds or until the
server responds. Read options from the template file, if provided.

Options
-f
file
Read the boot filename from file.
-h
Identify client by hardware, not IP, address.
-m magic-number
Provide magic-number as the first word of the vendor options field.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (18 of 351) [15/ 05/ 2002 18: 03: 34] 75
75 Page 76 77
Linux Commands (Linux in a Nutshell, 3rd Edition)
bzip2 bzip2 [options] filenames
bunzip2 [options] filenames
bzcat [option] filenames
bzip2recover filenames
File compression and decompression utility similar to gzip, but uses a different algorithm and encoding method
to get better compression. bzip2 replaces each file in filenames with a compressed version of the file and with a
.bz2 extension appended. bunzip2 decompresses each file compressed by bzip2 (ignoring other files, except to
print a warning). bzcat decompresses all specified files to standard output, and bzip2recover is used to try to
recover data from damaged files.

Options
--
End of options; treat all subsequent arguments as filenames.
-dig
Set block size to dig 100KB when compressing, where dig is a single digit from 1 to 9.
-c, --stdout
Compress or decompress to standard output.
-d, --decompress
Force decompression.
-f, --force
Force overwrite of output files. Default is not to overwrite. Also forces breaking of hard links to files.
-k, --keep
Keep input files; don't delete them.
-L, --license, -V, --version
Print license and version information and exit.
-q, --quiet
Quiet. Print only critical messages.
-s, --small
Use less memory, at the expense of speed.
-t, --test
Check the integrity of the files, but don't actually compress them.
-v, --verbose
Verbose. Show the compression ratio for each file processed. Add more -v's to increase the verbosity.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (19 of 351) [15/ 05/ 2002 18: 03: 34] 76
76 Page 77 78
Linux Commands (Linux in a Nutshell, 3rd Edition)
-z, --compress

Forces compression, even if invoked as bunzip2 or bzcat.
--repetitive-fast, --repetitive-best
Sometimes useful in versions earlier than 0.9.5 (which has an improved sorting algorithm) for providing
some control over the algorithm.

c++ c++ [options] files
See g++.

cal cal [-jy] [[ month] year]
Print a 12-month calendar (beginning with January) for the given year or a one-month calendar of the given
month and year. month ranges from 1 to 12. year ranges from 1 to 9999. With no arguments, print a calendar for
the current month.

Options
-j
Display Julian dates (days numbered 1 to 365, starting from January 1).
-m
Display Monday as the first day of the week.
-y
Display entire year.
Examples
cal 12 1995
cal 1994 > year_ file

cardctl cardctl [options] command
System administration command. Control PCMCIA sockets or select the current scheme. The current scheme is
sent along with the address of any inserted cards to configuration scripts (by default located in /etc/ pcmcia). The
scheme command displays or changes the scheme. The other commands operate on a named card socket number
or, if no number is given, all sockets.

Commands
config [socket]
Display current socket configuration.
eject [socket]
Prepare the system for the card( s) to be ejected.
ident [socket]
Display card identification information.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (20 of 351) [15/ 05/ 2002 18: 03: 34] 77
77 Page 78 79
Linux Commands (Linux in a Nutshell, 3rd Edition)
insert [socket]

Notify system that a card has been inserted.
reset [socket]
Send reset signal to card.
resume [socket]
Restore power to socket and reconfigure for use.
scheme [name]
Display current scheme or change to specified scheme name.
status [socket]
Display current socket status.
suspend [socket]
Shut down device and cut power to socket.
Options
-c
directory
Look for card configuration information in directory instead of /etc/ pcmcia.
-f file
Use file to keep track of the current scheme instead of /var/ run/ pcmcia-scheme.
-s file
Look for current socket information in file instead of /var/ run/ stab.

cardmgr cardmgr [options]
System administration command. The PCMCIA card daemon. cardmgr monitors PCMCIA sockets for devices
that have been added or removed. When a card is detected, it attempts to get the card's ID and configure it
according to the card configuration database (usually stored in /etc/ pcmcia/ config). By default, cardmgr both
creates a system log entry when it detects cards and beeps. Two high beeps mean it successfully identified and
configured a device. One high beep followed by one low beep means it identified the device, but was unable to
configure it successfully. One low beep means it could not identify the inserted card. Information on the
currently configured cards can be found in /var/ run/ stab.

Options
-cdirectory
Look in directory for the card configuration database instead of /etc/ pcmcia.
-d
use modprobe instead of insmod to load the PCMCIA device driver.
-f

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (21 of 351) [15/ 05/ 2002 18: 03: 34] 78
78 Page 79 80
Linux Commands (Linux in a Nutshell, 3rd Edition)
Run in the foreground to process the current cards, then run as a daemon.

-mdirectory
Look in directory for card device modules instead of /lib/ modules/ `uname -r`.
-o
Configure the cards present in one pass, then exit.
-pfile
Write cardmgr's process ID to file instead of /var/ run/ cardmgr. pid.
-q
Run in quiet mode. No beeps.
-sfile
Write current socket information to file instead of /var/ run/ stab.
-v
Verbose mode.
-V
Print version number and exit.

cat cat [options] [files]
Read (concatenates) one or more files and print them on standard output. Read standard input if no files are
specified or if -is specified as one of the files; input ends with EOF. You can use the > operator to combine
several files into a new file or >> to append files to an existing file.

Options
-A, --show-all
Same as -vET.
-b, --number-nonblank
Number all nonblank output lines, starting with 1.
-e
Same as -vE.
-E, --show-ends
Print $ at the end of each line.
-n, --number
Number all output lines, starting with 1.
-s, --squeeze-blank

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (22 of 351) [15/ 05/ 2002 18: 03: 34] 79
79 Page 80 81
Linux Commands (Linux in a Nutshell, 3rd Edition)
Squeeze down multiple blank lines to one blank line.

-t
Same as -vT.
-T, --show-tabs
Print TAB characters as ^I.
-u
Ignored; retained for Unix compatibility.
-v, --show-nonprinting
Display control and nonprinting characters, with the exception of LINEFEED and TAB.
Examples
cat ch1 Display a file
cat ch1 ch2 ch3 > all Combine files
cat note5 >> notes Append to a file
cat > temp1 Create file at terminal; end with EOF
cat > temp2 << STOP Create file at terminal; end with STOP

cc cc [options] files
See gcc.

cpp cpp [options] [ ifile [ ofile ] ]
GNU C language preprocessor. cpp is invoked as the first pass of any C compilation by the gcc command. The
output of cpp is a form acceptable as input to the next pass of the C compiler, and cpp normally invokes gcc
after it finishes processing. ifile and ofile are, respectively, the input and output for the preprocessor; they default
to standard input and standard output.

Options
-$
Do not allow $ in identifiers.
-dM
Suppress normal output. Print series of #defines that create the macros used in the source file.
-dD
Similar to -dM but exclude predefined macros and include results of preprocessing.
-idirafter dir
Search dir for header files when a header file is not found in any of the included directories.
-imacros file
Process macros in file before processing main files.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (23 of 351) [15/ 05/ 2002 18: 03: 34] 80
80 Page 81 82
Linux Commands (Linux in a Nutshell, 3rd Edition)
-include file

Process file before main file.
-iprefix prefix
When adding directories with -iwithprefix, prepend prefix to the directory's name.
-iwithprefix dir
Append dir to the list of directories to be searched when a header file cannot be found in the main include
path. If -iprefix has been set, prepend that prefix to the directory's name.

-lang-c, -lang-c++, -lang-objc, -lang-objc++
Expect the source to be in C, C++, Objective C, or Objective C++, respectively.
-lint
Display all lint commands in comments as #pragma lint command.
-nostdinc
Search only specified, not standard, directories for header files.
-nostdinc++
Suppress searching of directories believed to contain C++-specific header files.
-pedantic
Warn verbosely.
-pedantic-errors
Produce a fatal error in every case in which -pedantic would have produced a warning.
-traditional
Behave like traditional C, not ANSI.
-undef
Suppress definition of all nonstandard macros.
-Aname[= def]
Assert name with value def as if defined by a #assert.
-C
Pass along all comments (except those found on cpp directive lines). By default, cpp strips C-style
comments.

-Dname[= def]
Define name with value def as if by a #define. If no =def is given, name is defined with value 1. -D has
lower precedence than -U.

-H

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (24 of 351) [15/ 05/ 2002 18: 03: 34] 81
81 Page 82 83
Linux Commands (Linux in a Nutshell, 3rd Edition)
Print pathnames of included files, one per line, on standard error.

-Idir
Search in directory dir for #include files whose names do not begin with / before looking in directories
on standard list. #include files whose names are enclosed in double quotes and do not begin with / will be
searched for first in the current directory, then in directories named on -I options, and last in directories
on the standard list.

-M [-MG]
Suppress normal output. Print a rule for make that describes the main source file's dependencies. If -MG
is specified, assume that missing header files are actually generated files, and look for them in the source
file's directory.

-MD file
Similar to -M, but output to file; also compile the source.
-MM
Similar to -M. Describe only those files included as a result of #include "file".
-MMD
file
Similar to -MD, but describe only the user's header files.
-P
Preprocess input without producing line-control information used by next pass of C compiler.
-Uname
Remove any initial definition of name, where name is a reserved symbol predefined by the preprocessor
or a name defined on a -D option. Names predefined by cpp are unix and i386 (for Intel systems).

-Wcomment, -Wcomments
Warn when encountering the beginning of a nested comment.
-Wtraditional
Warn when encountering constructs that are interpreted differently in ANSI from traditional C.
Special names
cpp
understands various special names, some of which are:
__ DATE__
Current date (e. g., Oct 10 1999)
__ FILE__
Current filename (as a C string)
__ LINE__
Current source line number (as a decimal integer)
__ TIME__

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (25 of 351) [15/ 05/ 2002 18: 03: 34] 82
82 Page 83 84
Linux Commands (Linux in a Nutshell, 3rd Edition)
Current time (e. g., 12: 00: 00)
These special names can be used anywhere, including macros, just like any other defined names. cpp's
understanding of the line number and filename may be changed using a #line directive.

Directives
All cpp directive lines start with # in column 1. Any number of blanks and tabs is allowed between the # and the
directive. The directives are:

#assert name (string)
Define a question called name, with an answer of string. Assertions can be tested with #if directives. The
predefined assertions for #system, #cpu, and #machine can be used for architecture-dependent changes.

#unassert name
Remove assertion for question name.
#define name token-string
Define a macro called name, with a value of token-string. Subsequent instances of name are replaced with
token-string.

#define name( arg, ... , arg ) token-string
This allows substitution of a macro with arguments. token-string will be substituted for name in the input
file. Each call to name in the source file includes arguments that are plugged into the corresponding args
in token-string.

#undef name
Remove definition of the macro name. No additional tokens are permitted on the directive line after
name.

#ident string
Put string into the comment section of an object file.
#include "filename", #include< filename>
Include contents of filename at this point in the program. No additional tokens are permitted on the
directive line after the final " or >.

#line integer-constant "filename"
Cause cpp to generate line-control information for the next pass of the C compiler. The compiler behaves
as if integer-constant is the line number of the next line of source code and filename (if present) is the
name of the input file. No additional tokens are permitted on the directive line after the optional filename.

#endif
End a section of lines begun by a test directive (# if, #ifdef, or #ifndef). No additional tokens are
permitted on the directive line.

#ifdef name
Lines following this directive and up to matching #endif or next #else or #elif will appear in the output if
name is currently defined. No additional tokens are permitted on the directive line after name.

#ifndef name
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (26 of 351) [15/ 05/ 2002 18: 03: 34] 83
83 Page 84 85
Linux Commands (Linux in a Nutshell, 3rd Edition)
Lines following this directive and up to matching #endif or next #else or #elif will appear in the output if
name is not currently defined. No additional tokens are permitted on the directive line after name.

#if constant-expression
Lines following this directive and up to matching #endif or next #else or #elif will appear in the output if
constant-expression evaluates to nonzero.

#elif constant-expression
An arbitrary number of #elif directives are allowed between an #if, #ifdef, or #ifndef directive and an
#else or #endif directive. The lines following the #elif and up to the next #else, #elif, or #endif directive
will appear in the output if the preceding test directive and all intervening #elif directives evaluate to
zero, and the constant-expression evaluates to nonzero. If constant-expression evaluates to nonzero, all
succeeding #elif and #else directives will be ignored.

#else
Lines following this directive and up to the matching #endif will appear in the output if the preceding test
directive evaluates to 0, and all intervening #elif directives evaluate to 0. No additional tokens are
permitted on the directive line.

#error
Report fatal errors.
#warning
Report warnings, but then continue processing.

cfdisk cfdisk [options] [device]
System administration command. Partition a hard disk. device may be /dev/ hda (default), /dev/ hdb, /dev/ sda,
/dev/ sdb, /dev/ sdc,
or /dev/ sdd. See also fdisk.

Options
-a
Highlight the current partition with a cursor, not reverse video.
-c cylinders
Specify the number of cylinders.
-h heads
Specify the number of heads.
-s sectors
Specify the number of sectors per track.
-z
Do not read the partition table; partition from scratch.
-P format

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (27 of 351) [15/ 05/ 2002 18: 03: 34] 84
84 Page 85 86
Linux Commands (Linux in a Nutshell, 3rd Edition)
Display the partition table in format, which must be r (raw data), s (sector order), or t (raw format).

Commands
up arrow, down arrow
Move among partitions.
b
Toggle partition's bootable flag.
d
Delete partition (allow other partitions to use its space).
g
Alter the disk's geometry. Prompt for what to change: cylinders, heads, or sectors (c, h, or s,
respectively).

h
Help.
m
Attempt to ensure maximum usage of disk space in the partition.
n
Create a new partition. Prompt for more information.
p
Display the partition table.
q
Quit without saving information.
t
Prompt for a new filesystem type, and change to that type.
u
Change the partition size units, rotating from megabytes to sectors to cylinders and back.
W
Save information. Note that this letter must be uppercase.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (28 of 351) [15/ 05/ 2002 18: 03: 34] 85
85 Page 86 87
Linux Commands (Linux in a Nutshell, 3rd Edition)
chattr chattr [options] mode files
Modify file attributes. Specific to Linux Second Extended Filesystem. Behaves similarly to symbolic chmod,
using +, -, and =. mode is in the form opcode attribute. See also lsattr.

Options
-R
Modify directories and their contents recursively.
-V
Print modes of attributes after changing them.
-v version
Set the file's version.
Opcodes
+
Add attribute.
-Remove
attribute.
=
Assign attributes (removing unspecified attributes).
Attributes
A
Don't update access time on modify.
a
Append only for writing. Can be set or cleared only by a privileged user.
c
Compressed.
d
No dump.
i
Immutable. Can be set or cleared only by a privileged user.
s
Secure deletion; the contents are zeroed on deletion.
u

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (29 of 351) [15/ 05/ 2002 18: 03: 34] 86
86 Page 87 88
Linux Commands (Linux in a Nutshell, 3rd Edition)
Undeletable.
S
Synchronous updates.
Examples
chattr +a myfile As superuser

chfn chfn [options] [username]
Change the information that is stored in /etc/ passwd and displayed when a user is fingered. Without options,
chfn enters interactive mode and prompts for changes. To make a field blank, enter the keyword none. Only a
privileged user can change information for another user. For regular users, chfn prompts for the user's password
before making the change.

Options
-f, --full-name
Specify new full name.
-h, --home-phone
Specify new home phone number.
-o, --office
Specify new office number.
-p, --office-phone
Specify new office phone number.
-u, --help
Print help message and then exit.
-v, --version
Print version information and then exit.
Example
chfn -f "Ellen Siever" ellen

chgrp chgrp [options] newgroup files
chgrp [options]
Change the group of one or more files to newgroup. newgroup is either a group ID number or a group name
located in /etc/ group. Only the owner of a file or a privileged user may change its group.

Options
-c, --changes
Print information about those files that are changed.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (30 of 351) [15/ 05/ 2002 18: 03: 34] 87
87 Page 88 89
Linux Commands (Linux in a Nutshell, 3rd Edition)
-f, --silent, --quiet
Do not print error messages about files that cannot be changed.
--help
Print help message and then exit.
-R, --recursive
Traverse subdirectories recursively, applying changes.
--reference= filename
Change the group to that associated with filename. In this case, newgroup is not specified.
-v, --verbose
Verbosely describe ownership changes.
--version
Print version information and then exit.

chmod chmod [options] mode files
chmod [options] --reference= filename files
Change the access mode (permissions) of one or more files. Only the owner of a file or a privileged user may
change its mode. mode can be numeric or an expression in the form of who opcode permission. who is optional
(if omitted, default is a); choose only one opcode. Multiple modes may be specified, separated by commas.

Options
-c, --changes
Print information about files that are changed.
-f, --silent, --quiet
Do not notify user of files that chmod cannot change.
--help
Print help message and then exit.
-R, --recursive
Traverse subdirectories recursively, applying changes.
--reference= filename
Change permissions to those associated with filename.
-v, --verbose
Print information about each file, whether changed or not.
--version

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (31 of 351) [15/ 05/ 2002 18: 03: 34] 88
88 Page 89 90
Linux Commands (Linux in a Nutshell, 3rd Edition)
Print version information and then exit.
Who
u
User
g
Group
o
Other
a
All (default)
Opcode
+
Add permission.
-Remove
permission.
=
Assign permission (and remove permission of the unspecified fields).
Permissions
r
Read.
w
Write.
x
Execute.
s
Set user (or group) ID.
t
Sticky bit; save text (file) mode or prevent removal of files by nonowners (directory).
u
User's present permission.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (32 of 351) [15/ 05/ 2002 18: 03: 34] 89
89 Page 90 91
Linux Commands (Linux in a Nutshell, 3rd Edition)
g

Group's present permission.
o
Other's present permission.
Alternatively, specify permissions by a three-digit octal number. The first digit designates owner permission; the
second, group permission; and the third, other's permission. Permissions are calculated by adding the following
octal values:

4
Read.
2
Write.
1
Execute.
Note: A fourth digit may precede this sequence. This digit assigns the following modes:
4
Set user ID on execution to grant permissions to process based on file's owner, not on permissions of user
who created the process.

2
Set group ID on execution to grant permissions to process based on the file's group, not on permissions of
user who created the process.

1
Set sticky bit.
Examples
Add execute-by-user permission to file:
chmod u+ x file
Either of the following will assign read/ write/ execute permission by owner (7), read/ execute permission by
group (5), and execute-only permission by others (1) to file:

chmod 751 file
chmod u= rwx, g= rx, o= x file

Any one of the following will assign read-only permission to file for everyone:
chmod =r file
chmod 444 file
chmod a-wx, a+ r file

Set the user ID, assign read/ write/ execute permission by owner, and assign read/ execute permission by group
and others:

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (33 of 351) [15/ 05/ 2002 18: 03: 34] 90
90 Page 91 92
Linux Commands (Linux in a Nutshell, 3rd Edition)
chmod 4755 file

chown chown [options] newowner files
chown [options] --reference= filename files
Change the ownership of one or more files to newowner. newowner is either a user ID number or a login name
located in /etc/ passwd. chown also accepts users in the form newowner: newgroup or newowner. newgroup. The
last two forms change the group ownership as well. If no owner is specified, the owner is unchanged. With a
period or colon but no group, the group is changed to that of the new owner. Only the current owner of a file or a
privileged user may change its owner.

Options
-c, --changes
Print information about those files that are changed.
--dereference
Follow symbolic links.
-f, --silent, --quiet
Do not print error messages about files that cannot be changed.
-h, --no-dereference
Change the ownership of each symbolic link (on systems that allow it), rather than the referenced file.
-v, --verbose
Print information about all files that chown attempts to change, whether or not they are actually changed.
-R, --recursive
Traverse subdirectories recursively, applying changes.
--reference= filename
Change owner to the owner of filename instead of specifying a new owner explicitly.
--help
Print help message and then exit.
--version
Print version information and then exit.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (34 of 351) [15/ 05/ 2002 18: 03: 34] 91
91 Page 92 93
Linux Commands (Linux in a Nutshell, 3rd Edition)
chpasswd chpasswd [option]
System administration command. Change user passwords in a batch. chpasswd accepts input in the form of one
username: password pair per line. If the -e option is not specified, password will be encrypted before being
stored.

Option
-e
Passwords given are already encrypted.

chroot chroot newroot [command]
System administration command. Change root directory for command or, if none is specified, for a new copy of
the user's shell. This command or shell is executed relative to the new root. The meaning of any initial / in
pathnames is changed to newroot for a command and any of its children. In addition, the initial working
directory is newroot. This command is restricted to privileged users.

chsh chsh [options] [username]
Change your login shell, interactively or on the command line. Warn if shell does not exist in /etc/ shells. Specify
the full path to the shell. chsh prompts for your password. Only a privileged user can change another user's shell.

Options
-l, --list-shells
Print valid shells, as listed in /etc/ shells, and then exit.
-s shell, --shell shell
Specify new login shell.
-u, --help
Print help message and then exit.
-v, --version
Print version information and then exit.
Example
chsh -s /bin/ tcsh

cksum cksum [files]
Compute a cyclic redundancy check (CRC) checksum for all files; used to ensure that a file was not corrupted
during transfer. Read from standard input if the character -or no files are given. Display the resulting checksum,
the number of bytes in the file, and (unless reading from standard input) the filename.

clear clear
Clear the terminal display.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (35 of 351) [15/ 05/ 2002 18: 03: 34] 92
92 Page 93 94
Linux Commands (Linux in a Nutshell, 3rd Edition)
cmp cmp [options] file1 file2 [skip1 [skip2]]
Compare file1 with file2. Use standard input if file1 is -or missing. See also comm and diff. Files can be of any
type. skip1 and skip2 are optional offsets in the files at which the comparison is to start.

Options
-c, --print-chars
Print differing bytes as characters.
-i num, --ignore-initial= num
Ignore the first num bytes of input.
-l, --verbose
Print offsets and codes of all differing bytes.
-s, --quiet, --silent
Work silently; print nothing, but return exit codes:
0
Files are identical.
1
Files are different.
2
Files are inaccessible.
Example
Print a message if two files are the same (exit code is 0):
cmp -s old new && echo 'no changes'

col col [options]
A postprocessing filter that handles reverse linefeeds and escape characters, allowing output from tbl or nroff to
appear in reasonable form on a terminal.

Options
-b
Ignore backspace characters; helpful when printing manpages.
-f
Process half-line vertical motions, but not reverse line motion. (Normally, half-line input motion is
displayed on the next full line.)

-l n
Buffer at least n lines in memory. The default buffer size is 128 lines.
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (36 of 351) [15/ 05/ 2002 18: 03: 34] 93
93 Page 94 95
Linux Commands (Linux in a Nutshell, 3rd Edition)
-x
Normally, col saves printing time by converting sequences of spaces to tabs. Use -x to suppress this
conversion.

Examples
Run myfile through tbl and nroff, then capture output on screen by filtering through col and more:
tbl myfile | nroff | col | more
Save manpage output for the ls command in out. print, stripping out backspaces (which would otherwise appear
as ^H):

man ls | col -b > out. print

colcrt colcrt [options] [files]
A postprocessing filter that handles reverse linefeeds and escape characters, allowing output from tbl or nroff to
appear in reasonable form on a terminal. Put half-line characters (e. g., subscripts or superscripts) and underlining
(changed to dashes) on a new line between output lines.

Options
-Do
not underline.
-2
Double space by printing all half-lines.

colrm colrm [start [stop]]
Remove specified columns from a file, where a column is a single character in a line. Read from standard input
and write to standard output. Columns are numbered starting with 1; begin deleting columns at (including) the
start column, and stop at (including) the stop column. Entering a tab increments the column count to the next
multiple of either the start or stop column; entering a backspace decrements it by 1.

Example
colrm 3 5 < test1 > test2

column column [options] [files]
Format input from one or more files into columns, filling rows first. Read from standard input if no files are
specified.

Options
-c
num
Format output into num columns.
-s char
Delimit table columns with char. Meaningful only with -t.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (37 of 351) [15/ 05/ 2002 18: 03: 34] 94
94 Page 95 96
Linux Commands (Linux in a Nutshell, 3rd Edition)
-t

Format input into a table. Delimit with whitespace, unless an alternate delimiter has been provided with -s.

-x
Fill columns before filling rows.

comm comm [options] file1 file2
Compare lines common to the sorted files file1 and file2. Three-column output is produced: lines unique to file1,
lines unique to file2, and lines common to both files. comm is similar to diff in that both commands compare
two files. But comm can also be used like uniq; that is, comm selects duplicate or unique lines between two
sorted files, whereas uniq selects duplicate or unique lines within the same sorted file.

Options
-Read
the standard input.
-num
Suppress printing of column num. Multiple columns may be specified and should not be space-separated.
--help
Print help message and exit.
--version
Print version information and exit.
Example
Compare two lists of top-10 movies, and display items that appear in both lists:
comm -12 siskel_ top10 ebert_ top10

compress compress [options] files
Compress one or more files, replacing each with the compressed file of the same name with .Z appended. If no
file is specified, compress standard input. Each file specified is compressed separately. compress ignores files
that are symbolic links. See also gzip.

Options
-b
maxbits
Limit the maximum number of bits.
-c
Write output to standard output, not to a .Z file.
-d
Decompress instead of compressing. Same as uncompress.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (38 of 351) [15/ 05/ 2002 18: 03: 34] 95
95 Page 96 97
Linux Commands (Linux in a Nutshell, 3rd Edition)
-f
Force generation of an output file even if one already exists.
-r
If any of the specified files is a directory, compress recursively.
-v
Print compression statistics.
-V
Print version and compilation information and then exit.

cp cp [options] file1 file2
cp [options] files directory
Copy file1 to file2, or copy one or more files to the same names under directory. If the destination is an existing
file, the file is overwritten; if the destination is an existing directory, the file is copied into the directory (the
directory is not overwritten).

Options
-a, --archive
Preserve attributes of original files where possible. Same as -dpR.
-b, --backup
Back up files that would otherwise be overwritten.
-d, --no-dereference
Do not dereference symbolic links; preserve hard link relationships between source and copy.
-f, --force
Remove existing files in the destination.
-i, --interactive
Prompt before overwriting destination files.
-l, --link
Make hard links, not copies, of nondirectories.
-p, --preserve
Preserve all information, including owner, group, permissions, and timestamps.
-P, --parents
Preserve intermediate directories in source. The last argument must be the name of an existing directory.
For example, the command:

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (39 of 351) [15/ 05/ 2002 18: 03: 34] 96
96 Page 97 98
Linux Commands (Linux in a Nutshell, 3rd Edition)
cp --parents jphekman/ book/ ch1 newdir
copies the file jphekman/ book/ ch1 to the file newdir/ jphekman/ book/ ch1, creating intermediate directories
as necessary.

-r, -R, --recursive
Copy directories recursively.
-S backup-suffix, --suffix= backup-suffix
Set suffix to be appended to backup files. This may also be set with the SIMPLE_ BACKUP_ SUFFIX
environment variable. The default is ~. You need to explicitly include a period if you want one before the
suffix (e. g., specify .bak, not bak).

-s, --symbolic-link
Make symbolic links instead of copying. Source filenames must be absolute.
-u, --update
Do not copy a file to an existing destination with the same or newer modification time.
-v, --verbose
Before copying, print the name of each file.
-V type, --version-control= type
Set the type of backups made. You may also use the VERSION_ CONTROL environment variable. The
default is existing. Valid arguments are:

t, numbered
Always make numbered backups.
nil, existing
Make numbered backups of files that already have them; otherwise, make simple backups.
never, simple
Always make simple backups.
-x, --one-file-system
Ignore subdirectories on other filesystems.

cpio cpio flags [options]
Copy file archives in from or out to tape or disk, or to another location on the local machine. Each of the three
flags -i, -o, or -p accepts different options.

Flags
-i, --extract [options] [patterns]
Copy in (extract) from an archive files whose names match selected patterns. Each pattern can include
Bourne shell filename metacharacters. (Patterns should be quoted or escaped so they are interpreted by

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (40 of 351) [15/ 05/ 2002 18: 03: 34] 97
97 Page 98 99
Linux Commands (Linux in a Nutshell, 3rd Edition)
cpio, not by the shell.) If pattern is omitted, all files are copied in. Existing files are not overwritten by
older versions from the archive unless -u is specified.

-o, --create [options]
Copy out to an archive a list of files whose names are given on the standard input.
-p, --pass-through [options] directory
Copy (pass) files to another directory on the same system. Destination pathnames are interpreted relative
to the named directory.

Comparison of valid options
Options available to the -i, -o, and -p flags are shown here. (The -is omitted for clarity):
i: bcdf mnrtsuv B SVCEHMR IF
o: 0a c vABL VC HM O F
p: 0a d lm uv L V R

Options
-0, --null
Expect list of filenames to be terminated with null, not newline. This allows files with a newline in their
names to be included.

-a, --reset-access-time
Reset access times of input files after reading them.
-A, --append
Append files to an existing archive, which must be a disk file. Specify this archive with -O or -F.
-b, --swap
Swap bytes and half-words to convert between big-endian and little-endian 32-bit integers.
-B
Block input or output using 5120 bytes per record (default is 512 bytes per record).
--blocksize= size
Set input or output blocksize to size 512 bytes.
-c
Read or write header information as ASCII characters; useful when source and destination machines are
different types.

-C n, --io-size= n
Like -B, but blocksize can be any positive integer n.
-d, --make-directories
Create directories as needed.
-E file, --pattern-file= file

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (41 of 351) [15/ 05/ 2002 18: 03: 34] 98
98 Page 99 100
Linux Commands (Linux in a Nutshell, 3rd Edition)
Extract filenames from the archives that match patterns in file.
-f, --nonmatching
Reverse the sense of copying; copy all files except those that match patterns.
-F file, --file= file
Use file as the archive, not stdin or stdout. file can reside on another machine, if given in the form
user@ hostname: file (where user@ is optional).

--force-local
Assume that file (provided by -F, -I, or -O) is a local file, even if it contains a colon (:) indicating a
remote file.

-H type, --format= type
Use type format. Default for copy-out is bin; for copy-in the default is autodetection of the format. Valid
formats (all caps also accepted) are:

bin
Binary
odc
Old (POSIX. 1) portable format
newc
New (SVR4) portable format
crc
New (SVR4) portable format with checksum added
tar
Tar
ustar
POSIX. 1 tar (also recognizes GNU tar archives)
hpbin
HP-UX's binary (obsolete)
hpodc
HP-UX's portable format
-I file
Read file as an input archive. May be on a remote machine (see -F).
-k
Ignored. For backward compatibility.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (42 of 351) [15/ 05/ 2002 18: 03: 34] 99
99 Page 100 101
Linux Commands (Linux in a Nutshell, 3rd Edition)
-l, --link
Link files instead of copying.
-L, --dereference
Follow symbolic links.
-m, --preserve-modification-time
Retain previous file modification time.
-M msg, --message= msg
Print msg when switching media, as a prompt before switching to new media. Use variable %d in the
message as a numeric ID for the next medium. -M is valid only with -I or -O.

-n, --numeric-uid-gid
When verbosely listing contents, show user ID and group ID numerically.
--no-absolute-filenames
Create all copied-in files relative to the current directory.
--no-preserve-owner
Make all copied files owned by yourself, instead of the owner of the original. Useful only if you are a
privileged user.

-O file
Archive the output to file, which may be a file on another machine (see -F).
--only-verify-crc
For a CRC-format archive, verify the CRC of each file; don't actually copy the files in.
--quiet
Don't print the number of blocks copied.
-r
Rename files interactively.
-R [user][: group], --owner [user][: group]
Reassign file ownership and group information to the user's login ID (privileged users only).
-s, --swap-bytes
Swap bytes of each two-byte half-word.
-S, --swap-half-words
Swap half-words of each four-byte word.
--sparse

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (43 of 351) [15/ 05/ 2002 18: 03: 34] 100
100 Page 101 102
Linux Commands (Linux in a Nutshell, 3rd Edition)
For copy-out and copy-pass, write files that have large blocks of zeros as sparse files.

-t, --list
Print a table of contents of the input (create no files). When used with the -v option, resembles output of
ls -l.

-u, --unconditional
Unconditional copy; old files can overwrite new ones.
-v, --verbose
Print a list of filenames processed.
-V, --dot
Print a dot for each file read or written (this shows cpio at work without cluttering the screen).
--version
Print version number and then exit.
Examples
Generate a list of files whose names end in .old using find; use list as input to cpio:
find . -name "*. old" -print | cpio -ocBv > /dev/ rst8
Restore from a tape drive all files whose names contain save (subdirectories are created if needed):
cpio -icdv "* save*" < /dev/ rst8
Move a directory tree:
find . -depth -print | cpio -padm /mydir

cron cron
System administration command. Normally started in a system startup file. Execute commands at scheduled
times, as specified in users' files in /var/ cron/ tabs. Each file shares its name with the user who owns it. The files
are controlled via the command crontab.

crontab crontab [options] [file]
View, install, or uninstall your current crontab file. A privileged user can run crontab for another user by
supplying -u user. A crontab file is a list of commands, one per line, that will execute automatically at a given
time. Numbers are supplied before each command to specify the execution time. The numbers appear in five
fields, as follows:

Minute 0-59
Hour 0-23
Day of month 1-31
Month 1-12
Jan, Feb, Mar, ...

Day of week 0-6, with 0 = Sunday
Sun, Mon, Tue, ...

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (44 of 351) [15/ 05/ 2002 18: 03: 34] 101
101 Page 102 103

Linux Commands (Linux in a Nutshell, 3rd Edition)
Use a comma between multiple values, a hyphen to indicate a range, and an asterisk to indicate all possible
values. For example, assuming these crontab entries:

59 3 * * 5 find / -print | backup_ program
0 0 1,15 * * echo "Timesheets due" | mail user

The first command backs up the system files every Friday at 3: 59 a. m., and the second command mails a
reminder on the 1st and 15th of each month.

The superuser can always issue the crontab command. Other users must be listed in the file /etc/ cron. allow if it
exists; otherwise, they must not be listed in /etc/ cron. deny. If neither file exists, only the superuser can issue the
command.

Options
The -e, -l, and -r options are not valid if any files are specified.
-e
Edit the user's current crontab file (or create one).
-l
Display the user's crontab file on standard output.
-r
Delete the user's crontab file.
-u user
Indicates which user's crontab file will be acted upon.

csh csh [options] [file [arguments]]
C shell, a command interpreter into which all other commands are entered. For more information, see Chapter 8,
"csh and tcsh".

csplit csplit [options] file arguments
Separate file into context-based sections and place sections in files named xx00 through xxn (n < 100), breaking
file at each pattern specified in arguments. See also split.

Options
-Read
from standard input.
-b suffix, --suffix-format= suffix
Append suffix to output filename. This option causes -n to be ignored. suffix must specify how to convert
the binary integer to readable form by including exactly one of the following: %d, %i, %u, %o, %x, or
%X. The value of suffix determines the format for numbers as follows:

%d
Signed decimal

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (45 of 351) [15/ 05/ 2002 18: 03: 34] 102
102 Page 103 104
Linux Commands (Linux in a Nutshell, 3rd Edition)
%i
Same as %d
%u
Unsigned decimal
%o
Octal
%x
Hexadecimal
%X
Same as %x.
-f
prefix, --prefix= prefix
Name new files prefix00 through prefixn (default is xx00 through xxn).
-k, --keep-files
Keep newly created files, even when an error occurs (which would normally remove these files). This is
useful when you need to specify an arbitrarily large repeat argument, {n}, and you don't want an out-of-range
error to cause removal of the new files.

-n num, --digits= num
Use output filenames with numbers num digits long. The default is 2.
-s, -q, --silent, --quiet
Suppress all character counts.
-z, --elide-empty-files
Do not create empty output files. However, number as if those files had been created.
Arguments
Any one or a combination of the following expressions may be specified as arguments. Arguments containing
blanks or other special characters should be surrounded by single quotes.

/expr/[ offset]
Create file from the current line up to the line containing the regular expression expr. offset should be of
the form +n or -n, where n is the number of lines below or above expr.

%expr%[ offset]
Same as /expr/ except no file is created for lines previous to line containing expr.
num
Create file from current line up to (but not including) line number num. When followed by a repeat count
(number inside {}), put the next num lines of input into another output file.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (46 of 351) [15/ 05/ 2002 18: 03: 34] 103
103 Page 104 105
Linux Commands (Linux in a Nutshell, 3rd Edition)
{n}
Repeat argument n times. May follow any of the preceding arguments. Files will split at instances of expr
or in blocks of num lines. If * is given instead of n, repeat argument until input is exhausted.

Examples
Create up to 20 chapter files from the file novel:
csplit -k -f chap. novel '/ CHAPTER/ ' '{ 20} '
Create up to 100 address files (xx00 through xx99), each four lines long, from a database named address_ list:
csplit -k address_ list 4 {99}

ctags ctags [options] files
Create a list of function and macro names that are defined in the specified C, C++, FORTRAN, Java, Perl, yacc,
or other source files. The output list (named tags by default) contains lines of the form:

name file context
where name is the function or macro name, file is the source file in which name is defined, and context is a
search pattern that shows the line of code containing name. After the list of tags is created, you can invoke vi on
any file and type:

:set tags= tagsfile
:tag name

This switches the vi editor to the source file associated with the name listed in tagsfile (which you specify with -t).

etags produces an equivalent file for tags to be used with Emacs.
Options
-a, --append
Append tag output to existing list of tags.
-d, --defines
Include tag entries for C preprocessor definitions.
-i file, --include= file
Add a note to the tags file that file should be consulted in addition to the normal input file.
-l language, --language= language
Consider the files that follow this option to be written in language. Use the -h option for a list of
languages and their default filename extensions.

-o file, --output= file
Write to file.
-rregexp, --regex= regexp
Include a tag for each line that matches regexp in the files following this option.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (47 of 351) [15/ 05/ 2002 18: 03: 34] 104
104 Page 105 106
Linux Commands (Linux in a Nutshell, 3rd Edition)
-R, --no-regex
Don't include tags based on regular-expression matching for the files that follow this option.
-t, --typedefs
Include tag entries for typedefs.
-u, --update
Update tags file to reflect new locations of functions (e. g., when functions are moved to a different source
file). Old tags are deleted; new tags are appended.

-v, --vgrind
Print to standard output a listing (index) of each function, source file, and page number (1 page = 64
lines).

-w, --no-warn
Suppress warning messages.
-x, --cxref
Produce a listing of each function, and its line number, source file, and context.
-B, --backward-search
Search for tags backward through files.
-C, --c++
Expect .c and .h files to contain C++, not C, code.
-H, -h, --help
Print usage information and exit.
-S, --ignore-indentation
Normally ctags uses indentation to parse the tag file; this option tells it to rely on it less.
-T, --typedefs-and-c++
Include tag entries for typedefs, structs, enums, unions, and C++ member functions.
-V, --version
Print the version number and exit.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (48 of 351) [15/ 05/ 2002 18: 03: 34] 105
105 Page 106 107
Linux Commands (Linux in a Nutshell, 3rd Edition)
cut cut options [files]
Cut out selected columns or fields from one or more files. In the following options, list is a sequence of integers.
Use a comma between separate values and a hyphen to specify a range (e. g., 1-10, 15, 20 or 50-). See also paste
and join.

Options
-b
list, --bytes list
Specify list of positions; only bytes in these positions will be printed.
-c list, --characters list
Cut the column positions identified in list.
-d c, --delimiter c
Use with -f to specify field delimiter as character c (default is tab); special characters (e. g., a space) must
be quoted.

-f list, --fields list
Cut the fields identified in list.
-n
Don't split multibyte characters.
-s, --only-delimited
Use with -f to suppress lines without delimiters.
--output-delimiter= string
Use string as the output delimiter. By default, the output delimiter is the same as the input delimiter.
--help
Print help message and then exit.
--version
Print version information and then exit.
Examples
Extract usernames and real names from /etc/ passwd:
cut -d: -f1,5 /etc/ passwd
Find out who is logged on, but list only login names:
who | cut -d"" -f1
Cut characters in the fourth column of file, and paste them back as the first column in the same file:
cut -c4 file | paste -file

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (49 of 351) [15/ 05/ 2002 18: 03: 34] 106
106 Page 107 108
Linux Commands (Linux in a Nutshell, 3rd Edition)
date date [options] [+ format] [date]
Print the current date and time. You may specify a display format. format can consist of literal text strings
(blanks must be quoted) as well as field descriptors, whose values will appear as described in the following
entries (the listing shows some logical groupings). A privileged user can change the system's date and time.

Options
+format
Display current date in a nonstandard format. For example:
% date +"% A %j %n% k %p"
Tuesday 248
15 PM

The default is %a %b %e %T %Z %Y --e. g., Tue Sep 5 14: 59: 37 EDT 2000.
-d date, --date date
Display date, which should be in quotes and may be in the format d days or m months d days to print a
date in the future. Specify ago to print a date in the past. You may include formatting (see the "Format"
section that follows).

-f datefile, --file= datefile
Like -d but printed once for each line of datefile.
-I [timespec], --iso-8601[= timespec]
Display in ISO-8601 format. If specified, timespec can have one of the values date (for date only), hours,
minutes,
or seconds to get the indicated precision.

-r file, --reference= file
Display the time file was last modified.
-R, --rfc-822
Display the date in RFC 822 format.
--help
Print help message and exit.
--version
Print version information and exit.
-s date, --set date
Set the date.
-u, --universal
Set the date to Greenwich Mean Time, not local time.
Format
%

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (50 of 351) [15/ 05/ 2002 18: 03: 35] 107
107 Page 108 109
Linux Commands (Linux in a Nutshell, 3rd Edition)
Literal %.

-Do
not pad fields (default: pad fields with zeros).
_
Pad fields with space (default: zeros).
%a
Abbreviated weekday.
%b
Abbreviated month name.
%c
Country-specific date and time format.
%d
Day of month (01-31).
%h
Same as %b.
%j
Julian day of year (001-366).
%k
Hour in 24-hour format, without leading zeros (0-23).
%l
Hour in 12-hour format, without leading zeros (1-12).
%m
Month of year (01-12).
%n
Insert a new line.
%p
String to indicate AM or PM.
%r
Time in %I:% M:% S %p (12-hour) format.
%s

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (51 of 351) [15/ 05/ 2002 18: 03: 35] 108
108 Page 109 110
Linux Commands (Linux in a Nutshell, 3rd Edition)
Seconds since "The Epoch," 1970-01-01 00: 00: 00 UTC (a nonstandard extension).

%t
Insert a tab.
%w
Day of week (Sunday = 0).
%x
Country-specific date format.
%y
Last two digits of year (00-99).
%z
RFC 822-style numeric time zone.
%A
Full weekday.
%B
Full month name.
%D
Date in %m/% d/% y format.
%H
Hour in 24-hour format (00-23).
%I
Hour in 12-hour format (01-12).
%M
Minutes (00-59).
%S
Seconds (00-59).
%T
Time in %H:% M:% S format.
%U
Week number in year (00-53); start week on Sunday.
%V
Week number in year (01-52); start week on Monday.
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (52 of 351) [15/ 05/ 2002 18: 03: 35] 109
109 Page 110 111
Linux Commands (Linux in a Nutshell, 3rd Edition)
%W
Week number in year (00-53); start week on Monday.
%X
Country-specific time format.
%Y
Four-digit year (e. g., 1996).
%Z
Time zone name.
Strings for setting date
Strings for setting the date may be numeric or nonnumeric. Numeric strings consist of time, day, and year in the
format MMDDhhmm[[ CC] YY][. ss]. Nonnumeric strings may include month strings, time zones, a. m., and p. m.

time
A two-digit hour and two-digit minute (hhmm); hh uses 24-hour format.
day
A two-digit month and two-digit day of month (MMDD); default is current day and month.
year
The year specified as either the full four-digit century and year or just the two-digit year; the default is the
current year.

Examples
Set the date to July 1 (0701), 4 a. m. (0400), 1995 (95):
date 0701040095
The command:
date +" Hello% t Date is %D %n% t Time is %T"
produces a formatted date as follows:

Hello Date is 05/ 09/ 93
Time is 17: 53: 39

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (53 of 351) [15/ 05/ 2002 18: 03: 35] 110
110 Page 111 112
Linux Commands (Linux in a Nutshell, 3rd Edition)
dd dd options
Make a copy of an input file (if) using the specified conditions, and send the results to the output file (or
standard output if of is not specified). Any number of options can be supplied, although if and of are the most
common and are usually specified first. Because dd can handle arbitrary blocksizes, it is useful when converting
between raw physical devices.

Options
bs=
n
Set input and output blocksize to n bytes; this option overrides ibs and obs.
cbs=
n
Set the size of the conversion buffer (logical record length) to n bytes. Use only if the conversion flag is
ascii, ebcdic, ibm, block, or unblock.

conv= flags
Convert the input according to one or more (comma-separated) flags listed next. The first five flags are
mutually exclusive.

ascii
EBCDIC to ASCII.
ebcdic
ASCII to EBCDIC.
ibm
ASCII to EBCDIC with IBM conventions.
block
Variable-length records (i. e., those terminated by a newline) to fixed-length records.
unblock
Fixed-length records to variable-length.
lcase
Uppercase to lowercase.
ucase
Lowercase to uppercase.
noerror
Continue processing after read errors.
notrunc
Don't truncate output file.
swab

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (54 of 351) [15/ 05/ 2002 18: 03: 35] 111
111 Page 112 113
Linux Commands (Linux in a Nutshell, 3rd Edition)
Swap each pair of input bytes.
sync
Pad input blocks to ibs with trailing zeros.
count= n
Copy only n input blocks.
ibs= n
Set input blocksize to n bytes (default is 512).
if= file
Read input from file (default is standard input).
obs= n
Set output blocksize to n bytes (default is 512).
of= file
Write output to file (default is standard output).
seek= n
Skip n output-sized blocks from start of output file.
skip= n
Skip n input-sized blocks from start of input file.
--help
Print help message and then exit.
--version
Print the version number and then exit.
You can multiply size values (n) by a factor of 1024, 512, or 2 by appending the letter k, b, or w, respectively.
You can use the letter x as a multiplication operator between two numbers.

Examples
Convert an input file to all lowercase:
dd if= caps_ file of= small_ file conv= lcase
Retrieve variable-length data; write it as fixed-length to out:
data_ retrieval_ cmd | dd of= out conv= sync, block

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (55 of 351) [15/ 05/ 2002 18: 03: 35] 112
112 Page 113 114
Linux Commands (Linux in a Nutshell, 3rd Edition)
debugfs debugfs [[ option] device]
System administration command. Debug an ext2 filesystem. device is the special file corresponding to the device
containing the ext2 filesystem (e. g., /dev/ hda3).

Option
-w
Open the filesystem read-write.
Commands
cat
file
Dump the contents of an inode to standard output.
cd directory
Change the current working directory to directory.
chroot directory
Change the root directory to be the specified inode.
close
Close the currently open filesystem.
clri file
Clear the contents of the inode corresponding to file.
dump file out_ file
Dump the contents of an inode to out_ file.
expand_ dir directory
Expand directory.
find_ free_ block [goal]
Find first free block starting from goal (if specified) and allocate it.
find_ free_ inode [dir [mode]]
Find a free inode and allocate it.
freeb block
Mark block as not allocated.
freei file
Free the inode corresponding to file.
help
Print a list of commands understood by debugfs.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (56 of 351) [15/ 05/ 2002 18: 03: 35] 113
113 Page 114 115
Linux Commands (Linux in a Nutshell, 3rd Edition)
icheck block
Do block-to-inode translation.
initialize device blocksize
Create an ext2 filesystem on device.
kill_ file file
Remove file and deallocate its blocks.
ln source_ file dest_ file
Create a link.
ls [pathname]
Emulate the ls command.
modify_ inode file
Modify the contents of the inode corresponding to file.
mkdir directory
Make directory.
mknod file [p|[[ c| b] major minor]]
Create a special device file.
ncheck inode
Do inode-to-name translation.
open [-w] device
Open a filesystem.
pwd
Print the current working directory.
quit
Quit debugfs.
rm
file
Remove file.
rmdir directory
Remove directory.
setb block
Mark block as allocated.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (57 of 351) [15/ 05/ 2002 18: 03: 35] 114
114 Page 115 116
Linux Commands (Linux in a Nutshell, 3rd Edition)
seti file

Mark in use the inode corresponding to file.
show_ super_ stats
List the contents of the super block.
stat file
Dump the contents of the inode corresponding to file.
testb block
Test whether block is marked as allocated.
testi file
Test whether the inode corresponding to file is marked as allocated.
unlink file
Remove a link.
write source_ file file
Create a file in the filesystem named file, and copy the contents of source_ file into the destination file.

depmod depmod [options] modules
System administration command. Create a dependency file for the modules given on the command line. This
dependency file can be used by modprobe to automatically load the relevant modules. The normal use of
depmod is to include the line /sbin/ depmod -a in one of the files in /etc/ rc. d so the correct module dependencies
will be available after booting the system.

Options
-a
Create dependencies for all modules listed in /etc/ conf. modules.
-d
Debug mode. Show all commands being issued.
-e
Print a list of all unresolved symbols.
-v
Print a list of all processed modules.
Files
/etc/ conf. modules
Information about modules: which ones depend on others, and which directories correspond to particular
types of modules.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (58 of 351) [15/ 05/ 2002 18: 03: 35] 115
115 Page 116 117
Linux Commands (Linux in a Nutshell, 3rd Edition)
/sbin/ insmod, /sbin/ rmmod

Programs that depmod relies on.

df df [options] [name]
Report the amount of free disk space available on all mounted filesystems or on the given name. (df cannot
report on unmounted filesystems.) Disk space is shown in 1KB blocks (default) or 512-byte blocks (if the
environment variable POSIXLY_ CORRECT is set). name can be a device name (e. g., /dev/ hd*), the directory
name of a mounting point (e. g., /usr), or a directory name (in which case df reports on the entire filesystem in
which that directory is mounted).

Options
-a, --all
Include empty filesystems (those with 0 blocks).
--block-size= n
Show space as n-byte blocks.
-h, --human-readable
Print sizes in a format friendly to human readers (e. g., 1.9G instead of 1967156).
-H, --si
Like -h, but show as power of 1000 rather than 1024.
-i, --inodes
Report free, used, and percent-used inodes.
-k, --kilobytes
Print sizes in kilobytes.
-l, --local
Show local filesystems only.
-m, --megabytes
Print sizes in megabytes.
--no-sync
Show results without invoking sync first (i. e., without flushing the buffers). This is the default.
-P, --portability
Use POSIX output format (i. e., print information about each filesystem on exactly one line).
--sync
Invoke sync (flush buffers) before getting and showing sizes.
-t type, --type= type

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (59 of 351) [15/ 05/ 2002 18: 03: 35] 116
116 Page 117 118
Linux Commands (Linux in a Nutshell, 3rd Edition)
Show only type filesystems.

-T, --print-type
Print the type of each filesystem in addition to the sizes.
-x type, --exclude-type= type
Show only filesystems that are not of type type.
--help
Print help message and then exit.
--version
Print the version and then exit.

diff diff [options] [diroptions] file1 file2
Compare two text files. diff reports lines that differ between file1 and file2. Output consists of lines of context
from each file, with file1 text flagged by a < symbol and file2 text by a > symbol. Context lines are preceded by
the ed command (a, c, or d) that would be used to convert file1 to file2. If one of the files is -, standard input is
read. If one of the files is a directory, diff locates the filename in that directory corresponding to the other
argument (e. g., diff my_ dir junk is the same as diff my_ dir/ junk junk). If both arguments are directories, diff
reports lines that differ between all pairs of files having equivalent names (e. g., olddir/ program and
newdir/ program); in addition, diff lists filenames unique to one directory, as well as subdirectories common to
both. See also cmp.

Options
-a, --text
Treat all files as text files. Useful for checking to see if binary files are identical.
-b, --ignore-space-change
Ignore repeating blanks and end-of-line blanks; treat successive blanks as one.
-B, --ignore-blank-lines
Ignore blank lines in files.
-c
Context diff: print 3 lines surrounding each changed line.
-C n, --context[= n]
Context diff: print n lines surrounding each changed line. The default context is 3 lines.
-d, --minimal
To speed up comparison, ignore segments of numerous changes and output a smaller set of changes.
-Dsymbol, --ifdef= symbol
When handling C files, create an output file that contains all the contents of both input files, including
#ifdef and #ifndef directives that reflect the directives in both files.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (60 of 351) [15/ 05/ 2002 18: 03: 35] 117
117 Page 118 119
Linux Commands (Linux in a Nutshell, 3rd Edition)
-e, --ed

Produce a script of commands (a, c, d) to re-create file2 from file1 using the ed editor.
-F regexp, --show-function-line[= regexp]
For context and unified diff, show the most recent line containing regexp before each block of changed
lines.

-H
Speed output of large files by scanning for scattered small changes; long stretches with many changes
may not show up.

--help
Print brief usage message.
--horizon-lines= n
In an attempt to find a more compact listing, keep n lines on both sides of the changed lines when
performing the comparison.

-i, --ignore-case
Ignore case in text comparison. Uppercase and lowercase are considered the same.
-I regexp, --ignore-matching-lines= regexp
Ignore lines in files that match the regular expression regexp.
-l, --paginate
Paginate output by passing it to pr.
-L
label, --label label, --label= label
For context and unified diff, print label in place of the filename being compared. The first such option
applies to the first filename and the second option to the second filename.

--left-column
For two-column output (-y), show only left column of common lines.
-n, --rcs
Produce output in RCS diff format.
-N, --new-file
Treat nonexistent files as empty.
-p, --show-c-function
When handling files in C or C-like languages such as Java, show the function containing each block of
changed lines. Assumes -c but can also be used with a unified diff.

-P, --unidirectional-new-file
If two directories are being compared and the first lacks a file that is in the second, pretend that an empty
file of that name exists in the first directory.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (61 of 351) [15/ 05/ 2002 18: 03: 35] 118
118 Page 119 120
Linux Commands (Linux in a Nutshell, 3rd Edition)
-q, --brief
Output only whether files differ.
-r, --recursive
Compare subdirectories recursively.
-s, --report-identical-files
Indicate when files do not differ.
-S filename, --starting-file= filename
For directory comparisons, begin with the file filename, skipping files that come earlier in the standard
list order.

--suppress-common-lines
For two-column output (-y), do not show common lines.
-t, --expand-tabs
Produce output with tabs expanded to spaces.
-T, --initial-tab
Insert initial tabs into output to line up tabs properly.
-u
Unified diff: print old and new versions of lines in a single block, with 3 lines surrounding each block of
changed lines.

-U n, --unified[= n]
Unified diff: print old and new versions of lines in a single block, with n lines surrounding each block of
changed lines. The default context is 3 lines.

-v, --version
Print version number of this version of diff.
-w, --ignore-all-space
Ignore all whitespace in files for comparisons.
-W n, --width= n
For two-column output (-y), produce columns with a maximum width of n characters. Default is 130.
-x regexp, --exclude= regexp
Do not compare files in a directory whose names match regexp.
-X filename, --exclude-from= filename
Do not compare files in a directory whose names match patterns described in the file filename.
-y, --side-by-side

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (62 of 351) [15/ 05/ 2002 18: 03: 35] 119
119 Page 120 121
Linux Commands (Linux in a Nutshell, 3rd Edition)
Produce two-column output.
-n
For context and unified diff, print n lines of context. Same as specifying a number with -C or -U.

diff3 diff3 [options] file1 file2 file3
Compare 3 files and report the differences. No more than one of the files may be given as -(indicating that it is
to be read from standard input). The output is displayed with the following codes:

====
All three files differ.
==== 1
file1 is different.
==== 2
file2 is different.
==== 3
file3 is different.
diff3 is also designed to merge changes in two differing files based on a common ancestor file (i. e., when two
people have made their own set of changes to the same file). diff3 can find changes between the ancestor and
one of the newer files and generate output that adds those differences to the other new file. Unmerged changes
are places where both of the newer files differ from each other and at least one of them from the ancestor.
Changes from the ancestor that are the same in both of the newer files are called merged changes. If all three
files differ in the same place, it is called an overlapping change.

This scheme is used on the command line with the ancestor being file2, the second filename. Comparison is
made between file2 and file3, with those differences then applied to file1.

Options
-3, --easy-only
Create an ed script to incorporate into file1 unmerged, nonoverlapping differences between file1 and
file3.

-a, --text
Treat files as text.
-A, --show-all
Create an ed script to incorporate all changes, showing conflicts in bracketed format.
-e, --ed
Create an ed script to incorporate into file1 all unmerged differences between file2 and file3.
-E, --show-overlap
Create an ed script to incorporate unmerged changes, showing conflicts in bracketed format.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (63 of 351) [15/ 05/ 2002 18: 03: 35] 120
120 Page 121 122
Linux Commands (Linux in a Nutshell, 3rd Edition)
-x, --overlap-only

Create an ed script to incorporate into file1 all differences where all three files differ (overlapping
changes).

-X
Same as -x, but show only overlapping changes, in bracketed format.
-m, --merge
Create file with changes merged (not an ed script).
-L label, --label= label
Use label to replace filename in output.
-i
Append the w (save) and q (quit) commands to ed script output.
-T, --initial-tab
Begin lines with a tab instead of two spaces in output to line tabs up properly.
-v, --version
Print version information and then exit.

dip dip [options] [chat scriptfile]
System administration command. Set up or initiate dial-up Internet connections. dip can be used to establish
connections for users dialing out or dialing in. Commands can be used in interactive mode or placed in a script
file for use in dial-out connections. To establish dial-in connections, dip is often is used as a shell and may be
executed using the commands diplogin or diplogini.

Options
-a
In dial-in mode, prompt for username and password. Same as the diplogini command.
-i
Initiate a login shell for a dial-in connection. Same as the diplogin command.
-k
Kill the most recent dip process or the process running on the device specified by the -l option.
-l device
Used with the -k option. Specifies a tty device.
-m mtu
Maximum Transfer Unit. The default is 296.
-p protocol

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (64 of 351) [15/ 05/ 2002 18: 03: 35] 121
121 Page 122 123
Linux Commands (Linux in a Nutshell, 3rd Edition)
The protocol to use: SLIP, CSLIP, PPP, or TERM.

-t
Command mode. This is usually done for testing.
-v
Verbose mode.
Commands
Most of these commands can be used either in interactive mode or in a script file.
beep times
Beep the terminal the specified number of times.
bootp
Retrieve local and remote IP addresses using the BOOTP protocol.
break
Send a BREAK.
chatkey keyword code
Map a modem response keyword to a numeric code.
config [interface| routing] [pre| up| down| post] arguments
Modify interface characteristics or the routing table, before the link comes up, when it is up, when it
goes down, or after it is down. The syntax for arguments is the same as arguments for the ifconfig or
route commands.

databits 7| 8
Set the number of data bits.
dec $variable [value]
Decrement $variable by value. The default is 1.
default
Set default route to the IP address of the host connected to.
dial phonenumber [timeout]
Dial phonenumber. Abort if remote modem doesn't answer within timeout seconds. Set $errlvl according
to the modem response.

echo on| off
Enable or disable the display of modem commands.
exit [n]
Exit the script. Optionally return the number n as the exit status.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (65 of 351) [15/ 05/ 2002 18: 03: 35] 122
122 Page 123 124
Linux Commands (Linux in a Nutshell, 3rd Edition)
flush

Clear the input buffer.
get $variable [ask| remote [timeout]] value
Set $variable to value. If ask is specified, prompt the user for a value. If remote is specified, retrieve the
value from the remote system. Abort after timeout seconds.

goto label
Jump to the section identified by label.
help
List available commands.
if expr goto label
Jump to the section identified by label if the expression evaluates to true. An expression compares a
variable to a constant using one of these operators: =, !=, <, >, <=, or >=.

inc $variable [value]
Increment $variable by value. The default is 1.
init string
Set the string used to initialize the modem. The default is ATE0 Q0 V1 X1.
mode protocol
Set the connection protocol. Valid values are SLIP, CSLIP, PPP, and TERM. The default is SLIP.
netmask mask
Set the subnet mask.
parity E| O| N
Set the line parity to even, odd, or none.
password
Prompt user for password.
proxyarp
Install a proxy ARP entry in the local ARP table.
print $variable
Display the content of $variable.
psend command
Execute command in a shell, and send output to the serial device. Commands are executed using the
user's real UID.

port device

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (66 of 351) [15/ 05/ 2002 18: 03: 35] 123
123 Page 124 125
Linux Commands (Linux in a Nutshell, 3rd Edition)
Specify the serial device the modem is attached to.

quit
Exit with a nonzero exit status. Abort the connection.
reset
Reset the modem.
securid
Prompt user for the variable part of an ACE System SecureID password and send it together with the
stored prefix to the remote system.

securidf prefix
Store the fixed part of an ACE System SecureID password.
send string
Send string to the serial device.
shell command
Execute command in a shell using the user's real UID.
skey [timeout]
Wait for an S/ Key challenge, then prompt user for the secret key. Generate and send the response. Abort
if challenge is not received within timeout seconds. S/ Key support must be compiled into dip.

sleep time
Wait time seconds.
speed bits-per-second
Set the port speed. Default is 38400.
stopbits 1| 2
Set the number of stop bits.
term
Enable terminal mode. Pass keyboard input directly to the serial device.
timeout time
Set the number of seconds the line can be inactive before the link is closed.
wait text [timeout]
Wait timeout seconds for text to arrive from the remote system. If timeout is not specified, wait forever.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (67 of 351) [15/ 05/ 2002 18: 03: 35] 124
124 Page 125 126
Linux Commands (Linux in a Nutshell, 3rd Edition)
dirname dirname pathname
Print pathname excluding the last level. Useful for stripping the actual filename from a pathname. If there are no
slashes (no directory levels) in pathname, dirname prints . to indicate the current directory. See also basename.

dmesg dmesg [options]
System administration command. Display the system control messages from the kernel ring buffer. This buffer
stores all messages since the last system boot or the most recent ones, if the buffer has been filled.

Options
-c
Clear buffer after printing messages.
-n level
Set the level of system message that will display on console.

dnsdomainname dnsdomainname
TCP/ IP command. Print the system's DNS domain name. See also hostname.

domainname domainname [name]
NFS/ NIS command. Set or display name of current NIS domain. With no argument, domainname displays the
name of the current NIS domain. Only a privileged user can set the domain name by giving an argument; this is
usually done in a startup script.

dosfsck dosfsck [options] device
fsck. ext2 [options] device
System administration command. Similar to fsck, but specifically intended for MS-DOS filesystems. When
checking an MS-DOS filesystem, fsck calls this command. Normally dosfsck stores all changes in memory, then
writes them when checks are complete.

Options
-a
Automatically repair the system; do not prompt the user.
-A
Use the Atari version of the MS-DOS filesystem.
-d file
Drop the named file from the file allocation table. Force checking, even if kernel has already marked the
filesystem as valid. dosfsck will normally exit without checking if the system appears to be clean.

-l file
Consult file for a list of bad blocks, in addition to checking for others.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (68 of 351) [15/ 05/ 2002 18: 03: 35] 125
125 Page 126 127
Linux Commands (Linux in a Nutshell, 3rd Edition)
-n

Ensure that no changes are made to the filesystem. When queried, answer "no."
-p
"Preen." Repair all bad blocks noninteractively.
-t
Display timing statistics.
-v
Verbose.
-y
When queried, answer "yes."
-B size
Expect to find the superblock at size; if it's not there, exit.
-F
Flush buffer caches before checking.
-L file
Consult file for list of bad blocks instead of checking filesystem for them.

du du [options] [directories]
Print disk usage (as the number of 1KB blocks used by each named directory and its subdirectories; default is
current directory).

Options
-a, --all
Print usage for all files, not just subdirectories.
-b, --bytes
Print sizes in bytes.
-c, --total
In addition to normal output, print grand total of all arguments.
-D, --dereference-args
Follow symbolic links, but only if they are command-line arguments.
-h, --human-readable
Print sizes in human-reader-friendly format.
-H, --si

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (69 of 351) [15/ 05/ 2002 18: 03: 35] 126
126 Page 127 128
Linux Commands (Linux in a Nutshell, 3rd Edition)
Like -h, but show as power of 1000 rather than 1024.
-k, --kilobytes
Print sizes in kilobytes (this is the default).
-l, --count-links
Count the size of all files, whether or not they have already appeared (i. e., via a hard link).
-L, --dereference
Follow symbolic links.
--exclude= pattern
Exclude files that match pattern.
--max-depth= num
Report sizes for directories only down to num levels below the starting point (which is level 0).
-m, --megabytes
Print sizes in megabytes.
-s, --summarize
Print only the grand total for each named directory.
-S, --separate-dirs
Do not include the sizes of subdirectories when totaling the size of parent directories.
-x, --one-file-system
Display usage of files in current filesystem only.
-X, --exclude-from= file
Exclude files that match any pattern in file.
--help
Print help message and then exit.
--version
Print the version and then exit.

dumpe2fs dumpe2fs device
System administration command. Print information about device's superblock and blocks group.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (70 of 351) [15/ 05/ 2002 18: 03: 35] 127
127 Page 128 129
Linux Commands (Linux in a Nutshell, 3rd Edition)
dumpkeys dumpkeys [options]
Print information about the keyboard driver's translation tables to standard output. Further information is
available in the manual pages under keytables.

Options
-1, --separate-lines
Print one line for each modifier/ keycode pair and prefix plain to each unmodified keycode.
-ccharset, --charset= charset
Specify character set with which to interpret character code values. The default character set is iso-8859-
1.
The full list of valid character sets is available with the --help option.

--compose-only
Print compose key combinations only. Requires compose key support in the kernel.
-f, --full-table
Output in canonical, not short, form: for each key, print a row with modifier combinations divided into
columns.

--funcs-only
Print function key string definitions only; do not print key bindings or string definitions.
-h, --help
Print help message and the version.
-i, --short-info
Print in short-info format, including information about acceptable keycode keywords in the keytable files;
the number of actions that can be bound to a key; a list of the ranges of action codes (the values to the
right of a key definition); and the number of function keys that the kernel supports.

--keys-only
Print key bindings only; do not print string definitions.
-l, --long-info
Print the same information as in --short-info, plus a list of the supported action symbols and their
numeric values.

-n, --numeric
Print action code values in hexadecimal notation; do not attempt to convert them to symbolic notation.
-S num, --shape= num
Print using num to determine table shape. Values of num are:
0
Default

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (71 of 351) [15/ 05/ 2002 18: 03: 35] 128
128 Page 129 130
Linux Commands (Linux in a Nutshell, 3rd Edition)
1

Same as --full-table
2
Same as --separate-lines
3
One line for each keycode up to the first hole, then one line per modifier/ keycode pair

e2fsck e2fsck [options] device
fsck. ext2 [options] device
System administration command. Similar to fsck, but specifically intended for Linux Second Extended
Filesystems. When checking a second extended filesystem, fsck calls this command.

Options
-b
superblock
Use superblock instead of default superblock.
-d
Debugging mode.
-f
Force checking, even if kernel has already marked the filesystem as valid. e2fsck will normally exit
without checking if the system appears to be clean.

-l file
Consult file for a list of bad blocks, in addition to checking for others.
-n
Ensure that no changes are made to the filesystem. When queried, answer "no."
-p
"Preen." Repair all bad blocks noninteractively.
-t
Display timing statistics.
-v
Verbose.
-y
When queried, answer "yes."
-B size

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (72 of 351) [15/ 05/ 2002 18: 03: 35] 129
129 Page 130 131
Linux Commands (Linux in a Nutshell, 3rd Edition)
Expect to find the superblock at size; if it's not there, exit.

-F
Flush buffer caches before checking.
-L file
Consult file for list of bad blocks instead of checking filesystem for them.

echo echo [-n] [string]
This is the /bin/ echo command. echo also exists as a command built into the C shell and bash. The following
character sequences have special meanings:

\a
Alert (bell)
\b
Backspace
\c
Suppress trailing newline
\f
Form feed
\n
Newline
\r
Carriage return
\t
Horizontal tab
\v
Vertical tab
\\
Literal backslash
\nnn
The octal character whose ASCII code is nnn.
Options
-e
Enable character sequences with special meaning. (In some versions, this option is not required in order

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (73 of 351) [15/ 05/ 2002 18: 03: 35] 130
130 Page 131 132

Linux Commands (Linux in a Nutshell, 3rd Edition)
to make the sequences work.)

-E
Disable character sequences with special meaning.
-n
Suppress printing of newline after text.
--help
Print help message and then exit.
--version
Print version information and then exit.
Examples
/bin/ echo "testing printer" | lp
/bin/ echo "TITLE\ nTITLE" > file ; cat doc1 doc2 >> file
/bin/ echo "Warning: ringing bell \a"

egrep egrep [options] [regexp] [files]
Search one or more files for lines that match an extended regular expression regexp. egrep doesn't support the
regular expressions \(, \), \n, \<, \>, \{, or \} but does support the other expressions, as well as the extended set +,
?, |,
and ( ). Remember to enclose these characters in quotes. Regular expressions are described in Chapter 9,

"Pattern Matching". Exit status is 0 if any lines match, 1 if none match, and 2 for errors.

See grep for the list of available options. Also see fgrep. egrep typically runs faster than those commands.
Examples
Search for occurrences of Victor or Victoria in file:
egrep 'Victor( ia)* ' file
egrep '( Victor| Victoria) ' file

Find and print strings such as old. doc1 or new. doc2 in files, and include their line numbers:
egrep -n '( old| new)\. doc? ' files

emacs emacs [options] [files]
A text editor and all-purpose work environment. For more information, see Chapter 10, "The Emacs Editor".

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (74 of 351) [15/ 05/ 2002 18: 03: 35] 131
131 Page 132 133
Linux Commands (Linux in a Nutshell, 3rd Edition)
env env [option] [variable= value ... ] [command]
Display the current environment or, if an environment variable is specified, set it to a new value and display the
modified environment. If command is specified, execute it under the modified environment.

Options
-, -i, --ignore-environment
Ignore current environment entirely.
-u name, --unset name
Unset the specified variable.
--help
Print help message and then exit.
--version
Print version information and then exit.

etags etags [options] files
Create a list of function and macro names that are defined in the specified C, Pascal, FORTRAN, yacc, or flex
source files. The output list (named tags by default) contains lines of the form:

name file context
where name is the function or macro name, file is the source file in which name is defined, and context is a
search pattern that shows the line of code containing name. After the list of tags is created, you can invoke
Emacs on any file and type:

ESC-x visit-tags-table
You will be prompted for the name of the tag table; the default is TAGS. To switch to the source file associated
with the name listed in tagsfile, type:

ESC-x find-tag
You will be prompted for the tag you would like Emacs to search for. ctags produces an equivalent tags file for
use with vi.

Options
-a, --append
Append tag output to existing list of tags.
-d, --defines
Include tag entries for C preprocessor definitions.
-i file, --include= file
Add a note to the tags file that file should be consulted in addition to the normal input file.
-l language, --language= language

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (75 of 351) [15/ 05/ 2002 18: 03: 35] 132
132 Page 133 134

Linux Commands (Linux in a Nutshell, 3rd Edition)
Consider the files that follow this option to be written in language. Use the -h option for a list of
languages and their default filename extensions.

-o file, --output= file
Write to file.
-r regexp, --regex= regexp
Include a tag for each line that matches regexp in the files following this option.
-C, --c++
Expect .c and .h files to contain C++, not C, code.
-D, --no-defines
Do not include tag entries for C preprocessor definitions.
-H, -h, --help
Print usage information.
-R, --noregex
Don't include tags based on regular-expression matching for the files that follow this option.
-S, --ignore-indentation
Normally etags uses indentation to parse the tag file; this option tells it to rely on it less.
-V, --version
Print the version number.

ex ex [options] file
An interactive command-based editor. For more information, see Chapter 11, "The vi Editor".

expand expand [options] files
Convert tabs in given files (or standard input, if the file is named -) to appropriate number of spaces; write
results to standard output.

Options
-tabs, -t, --tabs
tabs
tabs is a comma-separated list of integers that specify the placement of tab stops. If exactly one integer is
provided, the tab stops are set to every integer spaces. By default, tab stops are 8 spaces apart. With -t
and --tabs, the list may be separated by whitespace instead of commas.

-i, --initial
Convert tabs only at the beginning of lines.
--help
Print help message and then exit.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (76 of 351) [15/ 05/ 2002 18: 03: 35] 133
133 Page 134 135
Linux Commands (Linux in a Nutshell, 3rd Edition)
--version
Print version information and then exit.

expr expr arg1 operator arg2 [ operator arg3 ... ]
Evaluate arguments as expressions and print the result. Arguments and operators must be separated by spaces. In
most cases, an argument is an integer, typed literally or represented by a shell variable. There are three types of
operators: arithmetic, relational, and logical, as well as keyword expressions. Exit status for expr is 0
(expression is nonzero and nonnull), 1 (expression is 0 or null), or 2 (expression is invalid).

Arithmetic operators
Use these to produce mathematical expressions whose results are printed:
+
Add arg2 to arg1.
-Subtract
arg2 from arg1.
*
Multiply the arguments.
/
Divide arg1 by arg2.
%
Take the remainder when arg1 is divided by arg2.
Addition and subtraction are evaluated last, unless they are grouped inside parentheses. The symbols *, (, and )
have meaning to the shell, so they must be escaped (preceded by a backslash or enclosed in single quotes).

Relational operators
Use these to compare two arguments. Arguments can also be words, in which case comparisons are defined by
the locale. If the comparison statement is true, the result is 1; if false, the result is 0. Symbols > and < must be
escaped.

=, ==
Are the arguments equal?
!=
Are the arguments different?
>
Is arg1 greater than arg2?
>=
Is arg1 greater than or equal to arg2?

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (77 of 351) [15/ 05/ 2002 18: 03: 35] 134
134 Page 135 136
Linux Commands (Linux in a Nutshell, 3rd Edition)
<

Is arg1 less than arg2?
<=
Is arg1 less than or equal to arg2?
Logical operators
Use these to compare two arguments. Depending on the values, the result can be arg1 (or some portion of it),
arg2, or 0. Symbols | and & must be escaped.

|
Logical OR; if arg1 has a nonzero (and nonnull) value, the result is arg1; otherwise, the result is arg2.
&
Logical AND; if both arg1 and arg2 have a nonzero (and nonnull) value, the result is arg1; otherwise, the
result is 0.

:
Like grep; arg2 is a pattern to search for in arg1. arg2 must be a regular expression. If part of the arg2
pattern is enclosed in \( \), the result is the portion of arg1 that matches; otherwise, the result is simply the
number of characters that match. By default, a pattern match always applies to the beginning of the first
argument (the search string implicitly begins with a ^). Start the search string with .* to match other parts
of the string.

Keywords
index
string character-list
Return the first position in string that matches the first possible character in character-list. Continue
through character-list until a match is found, or return 0.

length string
Return the length of string.
match string regex
Same as string : regex.
quote token
Treat token as a string, even if it would normally be a keyword or an operator.
substr string start length
Return a section of string, beginning with start, with a maximum length of length characters. Return null
when given a negative or nonnumeric start or length.

Examples
Division happens first; result is 10:
expr 5 + 10 / 2
Addition happens first; result is 7 (truncated from 7.5):

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (78 of 351) [15/ 05/ 2002 18: 03: 35] 135
135 Page 136 137
Linux Commands (Linux in a Nutshell, 3rd Edition)
expr \( 5 + 10 \) / 2
Add 1 to variable i. This is how variables are incremented in shell scripts:
i= `expr $i + 1
Print 1 (true) if variable a is the string "hello":
expr $a = hello
Print 1 (true) if b plus 5 equals 10 or more:
expr $b + 5 \>= 10
Find the 5th, 6th, and 7th letters of the word character:
expr substr character 5 3
In the examples that follow, variable p is the string "version. 100". This command prints the number of characters
in p:

expr $p : '.* ' Result is 11
Match all characters and print them:
expr $p : '\(.*\) ' Result is "version. 100"
Print the number of lowercase letters at the beginning of p:
expr $p : '[ a-z]* ' Result is 7
Match the lowercase letters at the beginning of p:
expr $p : '\([ a-z]*\) ' Result is "version"
Truncate $x if it contains five or more characters; if not, just print $x. (Logical OR uses the second argument
when the first one is 0 or null; i. e., when the match fails.)

expr $x : '\(.....\) ' \| $x
In a shell script, rename files to their first five letters:
mv $x `expr $x : '\(.....\) ' \| $x
(To avoid overwriting files with similar names, use mv -i.)

false false
A null command that returns an unsuccessful (nonzero) exit status. Normally used in bash scripts. See also true.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (79 of 351) [15/ 05/ 2002 18: 03: 35] 136
136 Page 137 138
Linux Commands (Linux in a Nutshell, 3rd Edition)
fdformat fdformat [options] device
Low-level format of a floppy disk. The device for a standard format is usually /dev/ fd0 or /dev/ fd1.
Option
-n
Do not verify format after completion.

fdisk fdisk [options] [device]
System administration command. Maintain disk partitions via a menu. fdisk displays information about disk
partitions, creates and deletes disk partitions, and changes the active partition. It is possible to assign a different
operating system to each of the four partitions, though only one partition is active at any given time. You can
also divide a physical partition into several logical partitions. The minimum recommended size for a Linux
system partition is 40MB. Normally, device will be /dev/ hda, /dev/ hdb, /dev/ sda, /dev/ sdb, /dev/ hdc, /dev/ hdd,
and so on. See also cfdisk.

Options
-l
List partition tables and exit.
-spartition
Display the size of partition, unless it is a DOS partition.
Commands
a
Toggle a bootable flag on current partition.
d
Delete current partition.
l
List all partition types.
m
Main menu.
n
Create a new partition; prompt for more information.
p
Print a list of all partitions and information about each.
q
Quit; do not save.
t
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (80 of 351) [15/ 05/ 2002 18: 03: 35] 137
137 Page 138 139
Linux Commands (Linux in a Nutshell, 3rd Edition)
Replace the type of the current partition.
u
Modify the display/ entry units, which must be cylinders or sectors.
v
Verify: check for errors; display a summary of the number of unallocated sectors.
w
Save changes; exit.

fetchmail fetchmail [options] [servers...]
System administration command. Retrieve mail from mail servers and forward it to the local mail delivery
system. fetchmail retrieves mail from servers that support the common mail protocols POP2, POP3, IMAP2bis,
and IMAP4. Messages are delivered via SMTP through port 25 on the local host and through your system's mail
delivery agent (such as sendmail), where they can be read through the user's mail client. fetchmail settings are
stored in the ~/. fetchmailrc file. Parameters and servers can also be set on the command line, which will override
settings in the .fetchmailrc file. fetchmail is compatible with the popclient program, and users can use both
without having to adjust file settings.

Options
-a, --all
Retrieve all messages from server, even ones that have already been seen but left on the server. The
default is to only retrieve new messages.

-A type, --auth type
Specify the type of authentication. type may be: password, kerberos_ v5, or kerberos. Authentication
type is usually established by fetchmail by default, so this option isn't very useful.

-B n, --fetchlimit n
Set the maximum number of messages (n) accepted from a server per query.
-b n, --batchlimit n
Set the maximum number of messages sent to an SMTP listener per connection. When this limit is
reached, the connection will be broken and reestablished. The default of 0 means no limit.

-c, --check
Check for mail on a single server without retrieving or deleting messages. Works with IMAP but not well
with other protocols, if at all.

-D [domain], --smtpaddress [domain]
Specify the domain name placed in RCPT TO lines sent to SMTP. The default is the local host.
-E header, --envelope header
Change the header assumed to contain the mail's envelope address (usually "X-Envelope-to:") to header.
-e n, --expunge n

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (81 of 351) [15/ 05/ 2002 18: 03: 35] 138
138 Page 139 140
Linux Commands (Linux in a Nutshell, 3rd Edition)
Tell an IMAP server to EXPUNGE (i. e., purge messages marked for deletion) after n deletes. A setting of
0 indicates expunging only at the end of the session. Normally, an expunge occurs after each delete.

-F, --flush
For POP3 and IMAP servers, remove previously retrieved messages from the server before retrieving
new ones.

-f file, --fetchmailrc file
Specify a nondefault name for the fetchmail configuration file.
-I specification, --interface specification
Require that the mail server machine is up and running at a specified IP address (or range) before polling.
The specification is given as interface/ ipaddress/ mask. The first part indicates the type of TCP
connection expected (sl0, ppp0, etc.), the second is the IP address, and the third is the bit mask for the IP,
assumed to be 255.255.255.255.

-K, --nokeep
Delete all retrieved messages from the mail server.
-k, --keep
Keep copies of all retrieved messages on the mail server.
-l size, --limit size
Set the maximum message size that will be retrieved from a server. Messages larger than this size will be
left on the server and marked unread.

-M interface, --monitor interface
In daemon mode, monitor the specified TCP/ IP interface for any activity besides itself, and skip the poll
if there is no other activity. Useful for PPP connections that automatically time out with no activity.

-m command, --mda command
Pass mail directly to mail delivery agent, rather than send to port 25. The command is the path and
options for the mailer, such as /usr/ lib/ sendmail -oem. A %T in the command will be replaced with the
local delivery address, and an %F will be replaced with the message's From address.

-n, --norewrite
Do not expand local mail IDs to full addresses. This option will disable expected addressing and should
only be used to find problems.

-P n, --port n
Specify a port to connect to on the mail server. The default port numbers for supported protocols are
usually sufficient.

-p proto, --protocol proto
Specify the protocol to use when polling a mail server. proto can be:
POP2
Post Office Protocol 2.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (82 of 351) [15/ 05/ 2002 18: 03: 35] 139
139 Page 140 141
Linux Commands (Linux in a Nutshell, 3rd Edition)
POP3

Post Office Protocol 3.
APOP
POP3 with MD5 authentication.
RPOP
POP3 with RPOP authentication.
KPOP
POP3 with Kerberos v4 authentication on port 1109.
IMAP
IMAP2bis, IMAP4, or IMAP4rev1. fetchmail autodetects their capabilities.
IMAP-K4
IMAP4 or IMAP4rev1 with Kerberos v4 authentication.
IMAP-GSS
IMAP4 or IMAP4rev1 with GSSAPI authentication.
ETRN
ESMTP.
-Q string, --qvirtual string
Remove the prefix string, which is the local user's hostid, from the address in the envelope header (such
as "Delivered-To:").

-r folder, --folder folder
Retrieve the specified mail folder from the mail server.
-s, --silent
Suppress status messages during a fetch.
-U, --uidl
For POP3, track the age of kept messages via unique ID listing.
-u name, --username name
Specify the user name to use when logging into the mail server.
-V, --version
Print the version information for fetchmail and display the options set for each mail server. Performs no
fetch.

-v, --verbose
Display all status messages during a fetch.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (83 of 351) [15/ 05/ 2002 18: 03: 35] 140
140 Page 141 142
Linux Commands (Linux in a Nutshell, 3rd Edition)
-Z nnn, --antispam nnn
Specify the SMTP error nnn to signal a spam block from the client. If nnn is -1, this option is disabled.

fgrep fgrep [options] pattern [files]
Search one or more files for lines that match a literal text string pattern. Exit status is 0 if any lines match, 1 if
not, and 2 for errors.

See grep for the list of available options. Also see egrep.
Examples
Print lines in file that don't contain any spaces:
fgrep -v '' file
Print lines in file that contain the words in spell_ list:
fgrep -f spell_ list file

file file [options] files
Classify the named files according to the type of data they contain. file checks the magic file (usually
/usr/ share/ magic) to identify some file types.

Options
-b
Brief mode; do not prepend filenames to output lines.
-c
Check the format of the magic file (files argument is invalid with -c). Usually used with -m.
-f
file
Read the names of files to be checked from file.
-L
Follow symbolic links. By default, symbolic links are not followed.
-m file
Search for file types in file instead of /usr/ share/ magic.
-n
Flush standard output after checking a file.
-s
Check files that are block or character special files in addition to checking ordinary files.
-v

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (84 of 351) [15/ 05/ 2002 18: 03: 35] 141
141 Page 142 143
Linux Commands (Linux in a Nutshell, 3rd Edition)
Print the version.

-z
Attempt checking of compressed files.
Many file types are understood. Output lists each filename, followed by a brief classification such as:
ascii text
c program text
c-shell commands
data
empty
iAPX 386 executable
directory
[nt] roff, tbl, or eqn input text
shell commands
symbolic link to ../ usr/ etc/ arp

Example
List all files that are deemed to be troff/ nroff input:
file * | grep roff

find find [pathnames] [conditions]
An extremely useful command for finding particular groups of files (numerous examples follow this
description). find descends the directory tree beginning at each pathname and locates files that meet the
specified conditions. The default pathname is the current directory. The most useful conditions include -print
(which is the default if no other expression is given), -name and -type (for general use), -exec and -size (for
advanced users), and -mtime and -user (for administrators).

Conditions may be grouped by enclosing them in \( \) (escaped parentheses), negated with ! (use \! in the C
shell), given as alternatives by separating them with -o, or repeated (adding restrictions to the match; usually
only for -name, -type, -perm). Modification refers to editing of a file's contents. Change refers to modification,
permission or ownership changes, and so on; therefore, for example, -ctime is more inclusive than -atime or -mtime.

Conditions and actions
-atime +n | -n |
n
Find files that were last accessed more than n (+ n), less than n (-n), or exactly n days ago. Note that find
changes the access time of directories supplied as pathnames.

-ctime +n | -n | n
Find files that were changed more than n (+ n), less than n (-n), or exactly n days ago. A change is
anything that changes the directory entry for the file, such as a chmod.

-depth
Descend the directory tree, skipping directories and working on actual files first (and then the parent
directories). Useful when files reside in unwritable directories (e. g., when using find with cpio).

-exec command { } \;
Run the Linux command, from the starting directory on each file matched by find (provided command
executes successfully on that file; i. e., returns a 0 exit status). When command runs, the argument { }
substitutes the current file. Follow the entire sequence with an escaped semicolon (\;).

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (85 of 351) [15/ 05/ 2002 18: 03: 35] 142
142 Page 143 144
Linux Commands (Linux in a Nutshell, 3rd Edition)
-follow
Follow symbolic links and track the directories visited (don't use this with -type l).
-group
gname
Find files belonging to group gname. gname can be a group name or a group ID number.
-inum n
Find files whose inode number is n.
-links n
Find files having n links.
-mount, -xdev
Search for files that reside only on the same filesystem as pathname.
-mtime +n | -n | n
Find files that were last modified more than n (+ n), less than n (-n), or exactly n days ago. A modification
is a change to a file's data.

-name pattern
Find files whose names match pattern. Filename metacharacters may be used but should be escaped or
quoted.

-newer file
Find files that have been modified more recently than file; similar to -mtime. Affected by -follow only if
it occurs after -follow on the command line.

-ok command { }\;
Same as -exec but prompts user to respond with y before command is executed.
-perm nnn
Find files whose permission flags (e. g., rwx) match octal number nnn exactly (e. g., 664 matches -rw-rw-r--).
Use a minus sign before nnn to make a "wildcard" match of any unspecified octal digit (e. g., -perm -600
matches -rw-******, where * can be any mode).

-print
Print the matching files and directories, using their full pathnames. Return true.
-regex pattern
Like -path but uses grep-style regular expressions instead of the shell-like globbing used in -name and -path.

-size n[ c]
Find files containing n blocks, or if c is specified, n characters long.
-type c

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (86 of 351) [15/ 05/ 2002 18: 03: 35] 143
143 Page 144 145
Linux Commands (Linux in a Nutshell, 3rd Edition)
Find files whose type is c. c can be b (block special file), c (character special file), d (directory), p (fifo
or named pipe), l (symbolic link), s (socket), or f (plain file).

-user user
Find files belonging to user (name or ID).
-daystart
Calculate times from the start of the day today, not 24 hours ago.
-maxdepth num
Do not descend more than num levels of directories.
-mindepth num
Begin applying tests and actions only at levels deeper than num levels.
-noleaf
Normally, find assumes that each directory has at least two hard links that should be ignored (a hard link
for its name and one for "."; i. e., two fewer "real" directories than its hard link count indicates). -noleaf
turns off this assumption, a useful practice when find runs on non-Unix-style filesystems. This forces
find to examine all entries, assuming that some might prove to be directories into which it must descend
(a time-waster on Unix).

-amin +n | -n | n
Find files last accessed more than n (+ n), less than n (-n), or exactly n minutes ago.
-anewer file
Find files that were accessed after file was last modified. Affected by -follow when after -follow on the
command line.

-cmin +n | -n | n
Find files last changed more than n (+ n), less than n (-n), or exactly n minutes ago.
-cnewer file
Find files that were changed after they were last modified. Affected by -follow when after -follow on the
command line.

-empty
Continue if file is empty. Applies to regular files and directories.
-false
Return false value for each file encountered.
-fstype type
Match files only on type filesystems. Acceptable types include minix, ext, ext2, xia, msdos, umsdos,
vfat, proc, nfs, iso9660, hpfs, sysv, smb,
and ncpfs.

-gid num
Find files with numeric group ID of num.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (87 of 351) [15/ 05/ 2002 18: 03: 35] 144
144 Page 145 146
Linux Commands (Linux in a Nutshell, 3rd Edition)
-ilname pattern
A case-insensitive version of -lname.
-iname
pattern
A case-insensitive version of -name.
-ipath
pattern
A case-insensitive version of -path.
-iregex
pattern
A case-insensitive version of -regex.
-lname
pattern
Search for files that are symbolic links, pointing to files named pattern. pattern can include shell
metacharacters and does not treat / or . specially. The match is case-insensitive.

-mmin +n | -n | n
Find files last modified more than n (+ n), less than n (-n), or exactly n minutes ago.
-nouser
The file's user ID does not correspond to any user.
-nogroup
The file's group ID does not correspond to any group.
-path pattern
Find files whose names match pattern. Expect full pathnames relative to the starting pathname (i. e., do
not treat / or . specially).

Examples
List all files (and subdirectories) in your home directory:
find $HOME -print
List all files named chapter1 in the /work directory:
find /work -name chapter1 -print
List all files beginning with memo owned by ann:
find /work -name 'memo* ' -user ann -print
Search the filesystem (begin at root) for manpage directories:
find / -type d -name 'man* ' -print
Search the current directory, look for filenames that don't begin with a capital letter, and send them to the
printer:

find . \! -name '[ A-Z]* ' -exec lpr {}\;

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (88 of 351) [15/ 05/ 2002 18: 03: 35] 145
145 Page 146 147
Linux Commands (Linux in a Nutshell, 3rd Edition)
Find and compress files whose names don't end with .gz:
gzip `find . \! -name '*. gz' -print
Remove all empty files on the system (prompting first):
find / -size 0 -ok rm {} \;
Search the system for files that were modified within the last two days (good candidates for backing up):
find / -mtime -2 -print
Recursively grep for a pattern down a directory tree:
find /book -print | xargs grep '[ Nn] utshell'
If the files kt1 and kt2 exist in the current directory, their names can be printed with the command:
$ find . -name 'kt[ 0-9] '
./ kt1
./ kt2

Since the command prints these names with an initial ./ path, you need to specify the ./ when using the -path
option:

$ find . -path './ kt[ 0-9] '
./ kt1
./ kt2

The -regex option uses a complete pathname, like -path, but treats the following argument as a regular
expression rather than a glob pattern (although in this case the result is the same):

$ find . -regex './ kt[ 0-9] '
./ kt1
./ kt2

finger finger [options] users
Display data about one or more users, including information listed in the files .plan and .project in each user's
home directory. You can specify each user either as a login name (exact match) or as a first or last name (display
information on all matching names). Networked environments recognize arguments of the form user@ host and
@host.

Options
-l
Force long format (default): everything included by the -s option and home directory, home phone, login
shell, mail status, .plan, .project, and .forward.

-m
Suppress matching of users' "real" names.
-p
Omit .plan and .project files from display.
-s

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (89 of 351) [15/ 05/ 2002 18: 03: 35] 146
146 Page 147 148
Linux Commands (Linux in a Nutshell, 3rd Edition)
Show short format: login name, real name, terminal name, write status, idle time, office location, and
office phone number.

fingerd in. fingerd [option]
TCP/ IP command. Remote user information server. fingerd provides a network interface to the finger program.
It listens for TCP connections on the finger port and, for each connection, reads a single input line, passes the
line to finger, and copies the output of finger to the user on the client machine. fingerd is started by inetd and
must have an entry in inetd's configuration file, /etc/ inetd. conf.

Option
-w
Include additional information, such as uptime and the name of the operating system.

flex flex [options] [file]
flex (Fast Lexical Analyzer Generator) is a faster variant of lex. It generates a lexical analysis program (named
lex. yy. c) based on the regular expressions and C statements contained in one or more input files. See also bison,
yacc,
and the O'Reilly book lex & yacc by John Levine, Tony Mason, and Doug Brown.

Options
-b
Generate backup information to lex. backup.
-d
Debug mode.
-f
Use faster compilation (limited to small programs).
-h
Help summary.
-i
Scan case-insensitively.
-l
Maximum lex compatibility.
-o file
Write output to file instead of lex. yy. c.
-p
Print performance report.
-s
Exit if the scanner encounters input that does not match any of its rules.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (90 of 351) [15/ 05/ 2002 18: 03: 35] 147
147 Page 148 149
Linux Commands (Linux in a Nutshell, 3rd Edition)
-t
Print to standard out. (By default, flex prints to lex. yy. c.)
-v
Print a summary of statistics.
-w
Suppress warning messages.
-B
Generate batch (noninteractive) scanner.
-F
Use the fast scanner table representation.
-I
Generate an interactive scanner (default).
-L
Suppress #line directives in lex. yy. c.
-P prefix
Change default yy prefix to prefix for all globally visible variable and function names.
-V
Print version number.
-7
Generate a 7-bit scanner.
-8
Generate an 8-bit scanner (default).
-+
Generate a C++ scanner class.
-C
Compress scanner tables but do not use equivalence classes.
-Ca
Align tables for memory access and computation. This creates larger tables but gives faster performance.
-Ce
Construct equivalence classes. This creates smaller tables and sacrifices little performance (default).

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (91 of 351) [15/ 05/ 2002 18: 03: 35] 148
148 Page 149 150
Linux Commands (Linux in a Nutshell, 3rd Edition)
-Cf

Generate full scanner tables, not compressed.
-CF
Generate faster scanner tables, like -F.
-Cm
Construct metaequivalence classes (default).
-Cr
Bypass use of the standard I/ O library. Instead use read() system calls.

fmt fmt [options] [files]
Convert text to specified width by filling lines and removing newlines. Concatenate files on the command line,
or read text from standard input if -(or no file) is specified. By default, preserve blank lines, spacing, and
indentation. fmt attempts to break lines at the end of sentences and to avoid breaking lines after a sentence's first
word or before its last.

Options
-c, --crown-margin
Crown margin mode. Do not change each paragraph's first two lines' indentation. Use the second line's
indentation as the default for subsequent lines.

-p prefix, --prefix= prefix
Format only lines beginning with prefix.
-s, --split-only
Suppress line-joining.
-t, --tagged-paragraph
Tagged paragraph mode. Same as crown mode when the indentation of the first and second lines differs.
If the indentation is the same, treat the first line as its own separate paragraph.

-u, --uniform-spacing
Print exactly one space between words and two between sentences.
-w width, --width= width
Set output width to width. The default is 75.
--help
Print help message and then exit.
--version
Print version information and then exit.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (92 of 351) [15/ 05/ 2002 18: 03: 35] 149
149 Page 150 151
Linux Commands (Linux in a Nutshell, 3rd Edition)
fold fold [option] [files]
Break the lines of the named files so that they are no wider than the specified width (default is 80). fold breaks
lines exactly at the specified width, even in the middle of a word. Reads from standard input when given -as a
file.

Options
-b, --bytes
Count bytes, not columns (i. e., consider tabs, backspaces, and carriage returns to be one column).
-s, --spaces
Break at spaces only, if possible.
-w, --width width
Set the maximum line width to width. Default is 80.

formail formail [options]
Filter standard input into mailbox format. If no sender is apparent, provide the sender foo@ bar. By default,
escape bogus From lines with >.

Options
+skip
Do not split first skip messages.
-total
Stop after splitting total messages.
-a headerfield
Append headerfield to header, unless it already exists. If headerfield is Message-ID or Resent-Message-ID
with no contents, generate a unique message ID.

-b
Do not escape bogus From lines.
-c
When header fields are more than one line long, concatenate the lines.
-d
Do not assume that input must be in strict mailbox format.
-e
Allow messages to begin one immediately after the other; do not require empty space between them.
-f
Do not edit non-mailbox-format lines. By default, formail prepends From to such lines.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (93 of 351) [15/ 05/ 2002 18: 03: 35] 150
150 Page 151 152
Linux Commands (Linux in a Nutshell, 3rd Edition)
-i headerfield

Append headerfield whether or not it already exists. Rename each existing headerfield to Old-headerfield,
unless they are empty.

-k
For use only with -r. Keep the body as well as the fields specified by -r.
-m
minfields
Require at least minfields before recognizing the beginning of a new message. Default is 2.
-n
Allow simultaneous formail processes to run.
-p prefix
Escape lines with prefix instead of >.
-q
Do not display write errors, duplicate messages, and mismatched Content-Length fields. This is the
default; use -q-to turn it off.

-r
Throw away all existing fields, retaining only X-Loop, and generate autoreply header instead. You can
preserve particular fields with the -i option.

-s
Must be the last option; everything following it will be assumed to be its arguments. Divide input to
separate mail messages, and pipe them to the program specified or concatenate them to standard output
(by default).

-t
Assume sender's return address to be valid. (By default, formail favors machine-generated addresses.)
-u headerfield
Delete all but the first occurrence of headerfield.
-x headerfield
Display the contents of headerfield on a single line.
-z
When necessary, add a space between field names and contents. Remove (" zap") empty fields.
-A headerfield
Append headerfield whether or not it already exists.
-B
Assume that input is in BABYL rmail format.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (94 of 351) [15/ 05/ 2002 18: 03: 35] 151
151 Page 152 153
Linux Commands (Linux in a Nutshell, 3rd Edition)
-D maxlen idcache

Remember old message IDs (in idcache, which will grow no larger than approximately maxlen). When
splitting, refuse to output duplicate messages. Otherwise, return true on discovering a duplicate. With -r,
look at the sender's mail address instead of the message ID.

-I headerfield
Append headerfield whether or not it already exists. Remove existing fields.
-R oldfield newfield
Change all fields named oldfield to newfield.
-U headerfield
Delete all but the last occurrence of headerfield.
-Y
Format in traditional Berkeley style (i. e., ignore Content-Length fields).
-X headerfield
Display the field name and contents of headerfield on a single line.

free free [options]
Display statistics about memory usage: total free, used, physical, swap, shared, and buffers used by the kernel.
Options
-b
Calculate memory in bytes.
-k
Default. Calculate memory in kilobytes.
-m
Calculate memory in megabytes.
-o
Do not display "buffer adjusted" line. The -o switch disables the display "-/+ buffers" line.
-s time
Check memory usage every time seconds.
-t
Display all totals on one line at the bottom of output.
-V
Display version information.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (95 of 351) [15/ 05/ 2002 18: 03: 35] 152
152 Page 153 154
Linux Commands (Linux in a Nutshell, 3rd Edition)
fsck fsck [options] [filesystem] ...
System administration command. Call the filesystem checker for the appropriate system type, to check and
repair filesystems. If a filesystem is consistent, the number of files, number of blocks used, and number of
blocks free are reported. If a filesystem is inconsistent, fsck prompts before each correction is attempted. fsck's
exit code can be interpreted as the sum of all of those conditions that apply:

1
Errors were found and corrected.
2
Reboot suggested.
4
Errors were found but not corrected.
8
fsck
encountered an operational error.
16
fsck
was called incorrectly.
128
A shared library error was detected.
Options
--
Pass all subsequent options to filesystem-specific checker. All options that fsck doesn't recognize will
also be passed.

-r
Interactive mode; prompt before making any repairs.
-s
Serial mode.
-t fstype
Specify the filesystem type. Do not check filesystems of any other type.
-A
Check all filesystems listed in /etc/ fstab.
-N
Suppress normal execution; just display what would be done.
-R

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (96 of 351) [15/ 05/ 2002 18: 03: 35] 153
153 Page 154 155
Linux Commands (Linux in a Nutshell, 3rd Edition)
Meaningful only with -A: check all filesystems listed in /etc/ fstab except the root filesystem.

-T
Suppress printing of title.
-V
Verbose mode.

fsck. minix fsck. minix [options] device
System administration command. Similar to fsck, but specifically intended for Linux MINIX filesystems.
Options
-a
Automatic mode; repair without prompting.
-f
Force checking, even if kernel has already marked the filesystem. fsck. minix will normally exit without
checking if the system appears to be clean.

-l
List filesystems.
-m
Enable MINIX-like "mode not cleared" warnings.
-r
Interactive mode; prompt before making any repairs.
-s
Display information about superblocks.
-v
Verbose mode.

ftp ftp [options] [hostname]
Transfer files to and from remote network site hostname. ftp prompts the user for a command. The commands
are listed after the options. Some of the commands are toggles, meaning they turn on a feature when it is off and
vice versa.

Options
-d
Enable debugging.
-g

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (97 of 351) [15/ 05/ 2002 18: 03: 35] 154
154 Page 155 156
Linux Commands (Linux in a Nutshell, 3rd Edition)
Disable filename globbing.

-i
Turn off interactive prompting.
-n
No autologin upon initial connection.
-v
Verbose. Show all responses from remote server.
Commands
![
command [args]]
Invoke an interactive shell on the local machine. If arguments are given, the first is taken as a command
to execute directly, with the rest of the arguments as that command's arguments.

$ macro-name [args]
Execute the macro macro-name that was defined with the macdef command. Arguments are passed to the
macro unglobbed.

account [passwd]
Supply a supplemental password that will be required by a remote system for access to resources once a
login has been successfully completed. If no argument is given, the user will be prompted for an account
password in a nonechoing mode.

append local-file [remote-file]
Append a local file to a file on the remote machine. If remote-file is not given, the local filename is used
after being altered by any ntrans or nmap setting. File transfer uses the current settings for type, format,
mode,
and structure.

ascii
Set the file transfer type to network ASCII (default).
bell
Sound a bell after each file transfer command is completed.
binary
Set file transfer type to support binary image transfer.
bye
Terminate FTP session and then exit ftp.
case
Toggle remote computer filename case mapping during mget. The default is off. When case is on, files
on the remote machine with all-uppercase names will be copied to the local machine with all-lowercase
names.

cd remote-directory

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (98 of 351) [15/ 05/ 2002 18: 03: 35] 155
155 Page 156 157
Linux Commands (Linux in a Nutshell, 3rd Edition)
Change working directory on remote machine to remote-directory.
cdup
Change working directory of remote machine to its parent directory.
chmod [mode] [remote-file]
Change file permissions of remote-file. If options are omitted, the command prompts for them.
close
Terminate FTP session and return to command interpreter.
cr
Toggle carriage return stripping during ASCII-type file retrieval.
delete remote-file
Delete file remote-file on remote machine.
debug [debug-value]
Toggle debugging mode. If debug-value is specified, it is used to set the debugging level.
dir [remote-directory] [local-file]
Print a listing of the contents in the directory remote-directory, and, optionally, place the output in local-file.
If no directory is specified, the current working directory on the remote machine is used. If no local
file is specified or -is given instead of the filename, output comes to the terminal.

disconnect
Synonym for close.
form
format
Set the file transfer form to format. Default format is file.
get remote-file [local-file]
Retrieve the remote-file and store it on the local machine. If the local filename is not specified, it is given
the same name it has on the remote machine, subject to alteration by the current case, ntrans, and nmap
settings. If local file is -, output comes to the terminal.

glob
Toggle filename expansion for mdelete, mget, and mput. If globbing is turned off, the filename
arguments are taken literally and not expanded.

hash
Toggle hash-sign (#) printing for each data block transferred.
help [command]
Print help information for command. With no argument, ftp prints a list of commands.
idle [seconds]

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (99 of 351) [15/ 05/ 2002 18: 03: 35] 156
156 Page 157 158
Linux Commands (Linux in a Nutshell, 3rd Edition)
Get/ set idle timer on remote machine. seconds specifies the length of the idle timer; if omitted, the current
idle timer is displayed.

image
Same as binary.
lcd [directory]
Change working directory on local machine. If directory is not specified, the user's home directory is
used.

ls [remote-directory] [local-file]
Print listing of contents of directory on remote machine, in a format chosen by the remote machine. If
remote-directory is not specified, current working directory is used.

macdef macro-name
Define a macro. Subsequent lines are stored as the macro macro-name; a null line terminates macro input
mode. When $i is included in the macro, loop through arguments, substituting the current argument for $i
on each pass. Escape $ with \.

mdelete remote-files
Delete the remote-files on the remote machine.
mdir remote-files local-file
Like dir, except multiple remote files may be specified.
mget remote-files
Expand the wildcard expression remote-files on the remote machine and do a get for each filename thus
produced.

mkdir directory-name
Make a directory on the remote machine.
mls remote-files local-file
Like nlist, except multiple remote files may be specified, and the local file must be specified.
mode [mode-name]
Set file transfer mode to mode-name. Default mode is stream mode.
modtime [file-name]
Show last modification time of the file on the remote machine.
mput [local-files]
Expand wildcards in local-files given as arguments and do a put for each file in the resulting list.
newer remote-file [local-file]
Get file if remote file is newer than local file.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (100 of 351) [15/ 05/ 2002 18: 03: 35] 157
157 Page 158 159
Linux Commands (Linux in a Nutshell, 3rd Edition)
nlist [remote-directory] [local-file]

Print list of files of a directory on the remote machine to local-file (or the screen if local-file is not
specified). If remote-directory is unspecified, the current working directory is used.

nmap [inpattern outpattern]
Set or unset the filename mapping mechanism. The mapping follows the pattern set by inpattern, a
template for incoming filenames, and outpattern, which determines the resulting mapped filename. The
sequences $1 through $9 are treated as variables, for example, the inpattern $1.$ 2, along with the input
file readme. txt, would set $1 to readme and $2 to txt. An outpattern of $1. data would result in an output
file of readme. data. $0 corresponds to the complete filename. [string1, string2] is replaced by string1,
unless that string is null, in which case it's replaced by string2.

ntrans [inchars [outchars ]]
Set or unset the filename character translation mechanism. Characters in a filename matching a character
in inchars are replaced with the corresponding character in outchars. If no arguments are specified, the
filename mapping mechanism is unset. If arguments are specified:

m Characters in remote filenames are translated during mput and put commands issued without a
specified remote target filename.

m Characters in local filenames are translated during mget and get commands issued without a
specified local target filename.

open host [port]
Establish a connection to the specified host FTP server. An optional port number may be supplied, in
which case ftp will attempt to contact an FTP server at that port.

prompt
Toggle interactive prompting.
proxy ftp-command
Execute an FTP command on a secondary control connection (i. e., send commands to two separate
remote hosts simultaneously).

put local-file [remote-file]
Store a local file on the remote machine. If remote-file is left unspecified, the local filename is used after
processing according to any ntrans or nmap settings in naming the remote file. File transfer uses the
current settings for type, file, structure, and transfer mode.

pwd
Print name of the current working directory on the remote machine.
quit
Synonym for bye.
quote
arg1 arg2...
Send the arguments specified, verbatim, to the remote FTP server.
recv remote-file [local-file]
Synonym for get.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (101 of 351) [15/ 05/ 2002 18: 03: 35] 158
158 Page 159 160
Linux Commands (Linux in a Nutshell, 3rd Edition)
reget remote-file [local-file]

Retrieve a file (like get), but restart at the end of local-file. Useful for restarting a dropped transfer.
remotehelp [command-name]
Request help from the remote FTP server. If command-name is specified, remote help for that command
is returned.

remotestatus [filename]
Show status of the remote machine, or, if filename is specified, filename on remote machine.
rename [from] [to]
Rename file from on remote machine to to.
reset
Clear reply queue.
restart marker
Restart the transfer of a file from a particular byte count.
rmdir [directory-name]
Delete a directory on the remote machine.
runique
Toggle storing of files on the local system with unique filenames. When this option is on, rename files as
.1 or .2, and soon, as appropriate, to preserve unique filenames, and report each such action. Default value
is off.

send local-file [remote-file]
Synonym for put.
sendport
Toggle the use of PORT commands.
site [command]
Get/ set site-specific information from/ on remote machine.
size filename
Return size of filename on remote machine.
status
Show current status of ftp.
struct [struct-
name]
Set the file transfer structure to struct-name. By default, stream structure is used.
sunique

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (102 of 351) [15/ 05/ 2002 18: 03: 35] 159
159 Page 160 161
Linux Commands (Linux in a Nutshell, 3rd Edition)
Toggle storing of files on remote machine under unique filenames.

system
Show type of operating system running on remote machine.
tenex
Set file transfer type to that needed to talk to TENEX machines.
trace
Toggle packet tracing.
type [type-name]
Set file transfer type to type-name. If no type is specified, the current type is printed. The default type is
network ASCII.

umask [mask]
Set user file-creation mode mask on the remote site. If mask is omitted, the current value of the mask is
printed.

user username [password] [account]
Identify yourself to the remote FTP server. ftp will prompt the user for the password, if not specified and
the server requires it, and the account field.

verbose
Toggle verbose mode.
? [command]
Same as help.

ftpd in. ftpd [options]
TCP/ IP command. Internet File Transfer Protocol server. The server uses the TCP protocol and listens at the port
specified in the ftp service specification. ftpd is started by inetd and must have an entry in inetd's configuration
file, /etc/ inetd. conf.

Options
-d
Write debugging information to the syslog.
-l

Log each FTP session in the syslog.
-Tmaxtimeout

Set maximum timeout period in seconds. Default limit is 15 minutes.
-ttimeout

Set timeout period to timeout seconds.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (103 of 351) [15/ 05/ 2002 18: 03: 35] 160
160 Page 161 162
Linux Commands (Linux in a Nutshell, 3rd Edition)
fuser fuser [options] [files | filesystems]
Identify processes that are using a file or filesystem. fuser outputs the process IDs of the processes that are using
the files or local filesystems. Each process ID is followed by a letter code: c if process is using file as current
directory, e if executable, f if an open file, m if a shared library, and r if the root directory. Any user with
permission to read /dev/ kmem and /dev/ mem can use fuser, but only a privileged user can terminate another
user's process. fuser does not work on remote (NFS) files.

If more than one group of files is specified, the options may be respecified for each additional group of files. A
lone dash (-) cancels the options currently in force, and the new set of options applies to the next group of files.

Options
-Return
all options to defaults.
-signal
Send signal instead of SIGKILL.
-a
Display information on all specified files, even if they are not being accessed by any processes.
-i
Request user confirmation to kill a process. Ignored if -k is not also specified.
-k
Send SIGKILL signal to each process.
-l
List signal names.
-m
Expect files to exist on a mounted filesystem; include all files accessing that filesystem.
-s
Silent.
-u
User login name, in parentheses, also follows process ID.
-v
Verbose.
-V
Display version information.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (104 of 351) [15/ 05/ 2002 18: 03: 35] 161
161 Page 162 163
Linux Commands (Linux in a Nutshell, 3rd Edition)
g++ g++ [options] files
Invoke gcc with the options necessary to make it recognize C++. g++ recognizes all the file extensions gcc does,
in addition to C++ source files (. C, .cc, or .cxx files) and C++ preprocessed files (. ii files). See also gcc.

gated gated [options]
TCP/ IP command. Gateway routing daemon. gated handles multiple routing protocols and replaces routed and
any routing daemons that speak the Hello, EGP, or BGP routing protocols. gated currently handles the RIP,
BGP, EGP, Hello, and OSPF routing protocols and can be configured to perform all or any combination of the
five.

Options
-c
Parse configuration file for syntax errors, then exit gated, leaving a dump file in /usr/ tmp/ gated_ dump.
-f config_ file
Use alternate configuration file, config_ file. Default is /etc/ gated. conf.
-n
Do not modify kernel's routing table.
-t [trace_ options]
Start gated with the specified tracing options enabled. If no flags are specified, assume general. The
trace flags are:

adv
Management of policy blocks.
all
Includes normal, policy, route, state, task, and timer.
general
Includes normal and route.
iflist
The kernel interface list.
normal
Normal protocols instances.
parse
Lexical analyzer and parser.
policy
Instances in which policy is applied to imported and exported routes.
route
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (105 of 351) [15/ 05/ 2002 18: 03: 35] 162
162 Page 163 164

Linux Commands (Linux in a Nutshell, 3rd Edition)
Any changes to routing table.
state
State machine transitions.
symbols
Symbols read from kernel --note that they are read before the configuration file is parsed, so this
option must be specified on the command line.

task
System tasks and interfaces.
timer
Timer usage.
-C
Parse configuration file for errors and set exit code to indicate if there were any (1) or not (0), then exit.
-N
Do not daemonize.

gawk gawk [options] `script' [var= value...] [files]
gawk [options] -f scriptfile [var= value...] [files]
The GNU version of awk, a program that does pattern matching, record processing, and other forms of text
manipulation. For more information, see Chapter 13, "The gawk Scripting Language".

gcc gcc [options] files
Compile one or more C source files (file. c), assembler source files (file. s), or preprocessed C source files (file. i).
If the file suffix is not recognizable, assume that the file is an object file or library. gcc automatically invokes the
link editor ld (unless -c, -S, or -E is supplied). In some cases, gcc generates an object file having a .o suffix and a
corresponding root name. By default, output is placed in a. out. gcc accepts many system-specific options not
covered here.

Note: gcc is the GNU form of cc; on most Linux systems, the command cc will invoke gcc. The command g++
will invoke gcc with the appropriate options for interpreting C++.

Options
-a
Provide profile information for basic blocks.
-ansi
Enforce full ANSI conformance.
-b machine
Compile for use on machine type.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (106 of 351) [15/ 05/ 2002 18: 03: 35] 163
163 Page 164 165
Linux Commands (Linux in a Nutshell, 3rd Edition)
-c
Create linkable object file for each source file, but do not call linker.
-dD
Print #defines.
-dM
Suppress normal output. Print series of #defines that are in effect at the end of preprocessing.
-dN
Print #defines with macro names only, not arguments or values.
-fno-asm
Do not recognize asm, inline, or typeof as keywords. Implied by -ansi.
-fno-builtin
Do not recognize built-in functions unless they begin with two underscores.
-fno-gnu-keywords
Do not recognize classof, headof, signature, sigof, or typeof as keywords.
-fno-ident
Do not respond to #ident commands.
-fsigned-bitfields
-funsigned-bitfields
-fno-signed-bitfields
-fno-unsigned-bitfields

Set default control of bitfields to signed or unsigned if not explicitly declared.
-fsigned-char
Cause the type char to be signed.
-fsyntax-only
Check for syntax errors. Do not attempt to actually compile.
-funsigned-char
Cause the type char to be unsigned.
-g
Include debugging information for use with gdb.
-glevel
Provide level amount of debugging information. level must be 1, 2, or 3, with 1 providing the least
amount of information. The default is 2.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (107 of 351) [15/ 05/ 2002 18: 03: 35] 164
164 Page 165 166
Linux Commands (Linux in a Nutshell, 3rd Edition)
-idirafter dir

Include dir in the list of directories to search when an include file is not found in the normal include path.
-include file
Process file before proceeding to the normal input file.
-imacros file
Process the macros in file before proceeding to the normal input file.
-iprefix prefix
When adding directories with -iwithprefix, prepend prefix to the directory's name.
-isystem dir
Add dir to the list of directories to be searched when a system file cannot be found in the main include
path.

-iwithprefix dir
Append dir to the list of directories to be searched when a header file cannot be found in the main include
path. If -iprefix has been set, prepend that prefix to the directory's name.

-llib
Link to lib.
-nostartfiles
Force linker to ignore standard system startup files.
-nostdinc
Search only specified, not standard, directories for header files.
-nostdinc++
Suppress searching of directories believed to contain C++-specific header files.
-nostdlib
Suppress linking to standard library files.
-o file
Specify output file as file. Default is a. out.
-p
Provide profile information for use with prof.
-pedantic
Warn verbosely.
-pedantic-errors
Err in every case in which -pedantic would have produced a warning.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (108 of 351) [15/ 05/ 2002 18: 03: 35] 165
165 Page 166 167
Linux Commands (Linux in a Nutshell, 3rd Edition)
-pg
Provide profile information for use with gprof.
-pipe
Transfer information between stages of compiler by pipes instead of temporary files.
-s
Remove all symbol table and relocation information from the executable.
-save-temps
Save temporary files in the current directory when compiling.
-static
Suppress linking to shared libraries.
-traditional
Attempt to behave like a traditional C compiler.
-traditional-cpp
Cause the preprocessor to attempt to behave like a traditional C preprocessor.
-trigraphs
Include trigraph support.
-u symbol
Force the linker to search libraries for a definition of symbol and to link to them, if found.
-undef
Define only those constants required by the language standard, not system-specific constants like unix.
-v
Verbose mode. Display commands as they are executed, gcc version number, and preprocessor version
number.

-w
Suppress warnings.
-x language
Expect input file to be written in language, which may be c, objective-c, c-header, c++, cpp-output,
assembler,
or assembler-with-cpp. If none is specified as language, guess the language by filename
extension.

-Aquestion( answer)
If the preprocessor encounters a conditional such as #if question, assert answer in response. To turn off
standard assertions, use -A-.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (109 of 351) [15/ 05/ 2002 18: 03: 37] 166
166 Page 167 168
Linux Commands (Linux in a Nutshell, 3rd Edition)
-Bpath

Specify the path directory in which the compiler files are located.
-C
Retain comments during preprocessing. Meaningful only with -E.
-Dname[=
def]
Define name with value def as if by a #define. If no =def is given, name is defined with value 1. -D has
lower precedence than -U.

-E
Preprocess the source files, but do not compile. Print result to standard output.
-Idir
Include dir in list of directories to search for include files. If dir is -, search those directories that were
specified by -I before the -I-only when #include "file" is specified, not #include <file>.

-Ldir
Search dir in addition to standard directories.
-M
Instead of compiling, print a rule suitable for inclusion in a makefile that describes dependencies of the
source file based on its #include directives. Implies -E.

-MD
Similar to -M, but sends dependency information to files ending in .d in addition to ordinary compilation.
-MG
Used with -M or -MM. Suppress error messages if an included file does not exist; useful if the included
file is automatically generated by a build.

-MMD
Similar to -MD, but record only user header file information, not system header file information.
-MM
Similar to -M, but limit the rule to non-standard #include files; that is, only files declared through
#include "file" and not those declared through #include <file>.

-H
Print pathnames of included files, one per line, on standard error.
-O[ level]
Optimize. level should be 1, 2, 3, or 0. The default is 1. 0 turns off optimization; 3 optimizes the most.
-P
Preprocess input without producing line-control information used by next pass of C compiler. Meaningful
only with -E.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (110 of 351) [15/ 05/ 2002 18: 03: 37] 167
167 Page 168 169
Linux Commands (Linux in a Nutshell, 3rd Edition)
-S
Compile source files into assembler code, but do not assemble.
-Uname
Remove any initial definition of name, where name is a reserved symbol predefined by the preprocessor
or a name defined on a -D option. Names predefined by cpp are unix and i386.

-V version
Attempt to run gcc version version.
-W
Warn more verbosely than normal.
-Wl, option
Invoke linker with option, which may be a comma-separated list.
-Wa, option
Call assembler with option, which may be a comma-separated list.
-Waggregate-return
Warn if any functions return structures or unions are defined or called.
-Wall
Enable -W, -Wchar-subscripts, -Wcomment, -Wformat, -Wimplicit, -Wparentheses, -Wreturn-type,
-Wswitch, -Wtemplate-debugging, -Wtrigraphs, -Wuninitialized,
and -Wunused.

-Wcast-align
Warn when encountering instances in which pointers are cast to types that increase the required
alignment of the target from its original definition.

-Wcast-qual
Warn when encountering instances in which pointers are cast to types that lack the type qualifier with
which the pointer was originally defined.

-Wchar-subscripts
Warn when encountering arrays with subscripts of type char.
-Wcomment
Warn when encountering the beginning of a nested comment.
-Wconversion
Warn in particular cases of type conversions.
-Werror
Exit at the first error.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (111 of 351) [15/ 05/ 2002 18: 03: 37] 168
168 Page 169 170
Linux Commands (Linux in a Nutshell, 3rd Edition)
-Wformat

Warn about inappropriately formatted printfs and scanfs.
-Wimplicit
Warn when encountering implicit function or parameter declarations.
-Winline
Warn about illegal inline functions.
-Wmissing-declarations
Warn if a global function is defined without a previous declaration.
-Wmissing-prototypes
Warn when encountering global function definitions without previous prototype declarations.
-Wnested-externs
Warn if an extern declaration is encountered within a function.
-Wno-import
Don't warn about use of #import.
-Wp,
options
Pass options to the preprocessor. Multiple options are separated by commas. Not a warning parameter.
-Wparentheses
Enable more verbose warnings about omitted parentheses.
-Wpointer-arith
Warn when encountering code that attempts to determine the size of a function or void.
-Wredundant-decls
Warn if anything is declared more than once in the same scope.
-Wreturn-type
Warn about functions defined without return types or with improper return types.
-Wshadow
Warn when a local variable shadows another local variable.
-Wstrict-prototypes
Insist that argument types be specified in function declarations and definitions.
-Wswitch
Warn about switches that skip the index for one of their enumerated types.
-Wtemplate-debugging
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (112 of 351) [15/ 05/ 2002 18: 03: 37] 169
169 Page 170 171
Linux Commands (Linux in a Nutshell, 3rd Edition)
Warn if debugging is not available for C++ templates.
-Wtraditional
Warn when encountering code that produces different results in ANSI C and traditional C.
-Wtrigraphs
Warn when encountering trigraphs.
-Wuninitialized
Warn when encountering uninitialized automatic variables.
-Wunused
Warn about unused variables and functions.
-Xlinker option
Pass an option to the linker. A linker option with an argument requires two -Xs, the first specifying the
option and the second specifying the argument.

Pragma directives
#pragma interface [header-
file]
Used in header files to force object files to provide definition information via references, instead of
including it locally in each file. C++-specific.

#pragma implementation [header-file]
Used in main input files to force generation of full output from header-file (or, if it is not specified, from
the header file with the same base name as the file containing the pragma directive). This information will
be globally visible. Normally the specified header file contains a #pragma interface directive.

gdb gdb [options] [program [core| pid]]
GDB (GNU DeBugger) allows you to step through C, C++, and Modula-2 programs in order to find the point at
which they break. The program to be debugged is normally specified on the command line; you can also specify
a core or, if you want to investigate a running program, a process ID.

Options
-s
file, -symbols= file
Consult file for symbol table. With -e, also uses file as the executable.
-e file, -exec= file
Use file as executable, to be read in conjunction with source code. May be used in conjunction with -s to
read symbol table from the executable.

-c file, -core= file
Consult file for information provided by a core dump.
-x file, -command= file

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (113 of 351) [15/ 05/ 2002 18: 03: 37] 170
170 Page 171 172
Linux Commands (Linux in a Nutshell, 3rd Edition)
Read gdb commands from file.

-d directory, -directory= directory
Include directory in path that is searched for source files.
-n, -nx
Ignore .gdbinit file.
-q, -quiet
Suppress introductory and copyright messages.
-batch
Exit after executing all the commands specified in .gdbinit and -x files. Print no startup messages.
-cd= directory
Use directory as gdb's working directory.
-f, -fullname
Show full filename and line number for each stack frame.
-b bps
Set line speed of serial device used by GDB to bps.
-tty= device
Set standard in and standard out to device.
Common commands
These are just some of the more common gdb commands; there are too many commands to list all of them here:
bt
Print the current location within the program and a stack trace showing how the current location was
reached. (where does the same thing.)

break
Set a breakpoint in the program.
cd
Change the current working directory.
clear
Delete the breakpoint where you just stopped.
commands
List commands to be executed when breakpoint is hit.
c

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (114 of 351) [15/ 05/ 2002 18: 03: 37] 171
171 Page 172 173
Linux Commands (Linux in a Nutshell, 3rd Edition)
Continue execution from a breakpoint.

delete
Delete a breakpoint or a watchpoint; also used in conjunction with other commands.
display
Cause variables or expressions to be displayed when program stops.
down
Move down one stack frame to make another function the current one.
frame
Select a frame for the next continue command.
info
Show a variety of information about the program. For instance, info breakpoints shows all outstanding
breakpoints and watchpoints.

jump
Start execution at another point in the source file.
kill
Abort the process running under gdb's control.
list
List the contents of the source file corresponding to the program being executed.
next
Execute the next source line, executing a function in its entirety.
print
Print the value of a variable or expression.
pwd
Show the current working directory.
ptype
Show the contents of a datatype, such as a structure or C++ class.
quit
Exit gdb.
reverse-search
Search backward for a regular expression in the source file.
run

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (115 of 351) [15/ 05/ 2002 18: 03: 37] 172
172 Page 173 174
Linux Commands (Linux in a Nutshell, 3rd Edition)
Execute the program.

search
Search for a regular expression in the source file.
set variable
Assign a value to a variable.
signal
Send a signal to the running process.
step
Execute the next source line, stepping into a function if necessary.
undisplay
Reverse the effect of the display command; keep expressions from being displayed.
until
Finish the current loop.
up
Move up one stack frame to make another function the current one.
watch
Set a watchpoint (i. e., a data breakpoint) in the program.
whatis
Print the type of a variable or function.

gdc gdc [options] command
TCP/ IP command. Administer gated. Various commands start and stop the daemon, send signals to it, maintain
the configuration files, and manage state and core dumps.

Options
-c
size
Specify maximum core dump size.
-f size
Specify maximum file dump size.
-m size
Specify maximum data segment size.
-n
Suppress editing of the kernel forwarding table.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (116 of 351) [15/ 05/ 2002 18: 03: 37] 173
173 Page 174 175
Linux Commands (Linux in a Nutshell, 3rd Edition)
-q
Quiet mode: suppress warnings and log errors to syslogd instead of standard error.
-s size
Specify maximum stack size.
-t seconds
Wait seconds seconds (default is 10) for gated to complete specified operations at start and stop time.
Commands
BACKOUT
Restore /etc/ gated. conf from /etc/ gated. conf-, whether or not the latter exists.
backout
Restore /etc/ gated. conf from /etc/ gated. conf-, assuming the latter exists.
checkconf
Report any syntax errors in /etc/ gated. conf.
checknew
Report any syntax errors in /etc/ gated. conf+.
COREDUMP
Force gated to core dump and exit.
createconf
Create an empty /etc/ gated. conf+ if one does not already exist, and set it to mode 664, owner root, group
gdmaint.

dump
Force gated to dump to /usr/ tmp/ gated_ dump and then continue normal operation.
interface
Reload interface configuration.
KILL
Terminate immediately (ungracefully).
modeconf
Set all configuration files to mode 664, owner root, group gdmaint.
newconf
Make sure that /etc/ gated. conf+ exists and move it to /etc/ gated. conf. Save the old /etc/ gated. conf as
/etc/ gated. conf-.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (117 of 351) [15/ 05/ 2002 18: 03: 37] 174
174 Page 175 176
Linux Commands (Linux in a Nutshell, 3rd Edition)
reconfig

Reload configuration file.
restart
Stop and restart gated.
rmcore
Remove any gated core files.
rmdmp
Remove any gated state dump files.
rmparse
Remove any gated files that report on parse errors. These are generated by the checkconf and checknew
commands.

running
Exit with zero status if gated is running and nonzero if it is not.
start
Start gated, unless it is already running, in which case return an error.
stop
Stop gated as gracefully as possible.
term
Terminate gracefully.
toggletrace
Toggle tracing.
Files
/etc/ gcd. conf+
The test configuration file. Once you're satisfied that it works, you should run gated newconf to install it
as /etc/ gated. conf.

/etc/ gated. conf-A
backup of the old configuration file.
/etc/ gated. conf--
A backup of the backup of the old configuration file.
/etc/ gated. conf
The actual configuration file.
/etc/ gated. pid
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (118 of 351) [15/ 05/ 2002 18: 03: 37] 175
175 Page 176 177
Linux Commands (Linux in a Nutshell, 3rd Edition)
gated's process ID.
/usr/ tmp/ gated_ dump
The state dump file.
/usr/ tmp/ gated_ parse
A list of the parse errors generated by reading the configuration file.

getkeycodes getkeycodes
Print the kernel's scancode-to-keycode mapping table.

getty getty [options] port [speed [term [lined]]]
System administration command. Set terminal type, modes, speed, and line discipline. Linux systems may use
agetty instead, which uses a different syntax. getty is invoked by init. It is the second process in the series init-getty-
login-shell,
which ultimately connects a user with the Linux system. getty reads the user's login name and
invokes the login command with the user's name as an argument. While reading the name, getty attempts to
adapt the system to the speed and type of device being used.

You must specify a port argument, which getty will use to attach itself to the device /dev/ port. getty will then
scan the defaults file, usually /etc/ default/ getty, for runtime values and parameters. These may also be specified,
for the most part, on the command line, but the values in the defaults file take precedence. The speed argument is
used to point to an entry in the file /etc/ gettydefs, which contains the initial baud rate, tty settings, and login
prompt and final speed and settings for the connection. The first entry is the default in /etc/ gettydefs. term
specifies the type of terminal, with lined the optional line discipline to use.

Options
-c
file
Check the gettydefs file. file is the name of the gettydefs file. Produces the files' values and reports parsing
errors to standard output.

-d file
Use a different default file.
-h
Do not force a hangup on the port when initializing.
-r delay
Wait for single character from port, then wait delay seconds before proceeding.
-t timeout
If no username is accepted within timeout seconds, close connection.
-w string
Wait for string characters from port before proceeding.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (119 of 351) [15/ 05/ 2002 18: 03: 37] 176
176 Page 177 178
Linux Commands (Linux in a Nutshell, 3rd Edition)
gprof gprof [options] [object_ file]
Display the profile data for an object file. The file's symbol table is compared with the call graph profile file
gmon. out (previously created by compiling with gcc -pg).

Options
-a
Do not display statically declared functions. Since their information might still be relevant, append it to
the information about the functions loaded immediately before.

-b
Do not display information about each field in the profile.
-c
Consult the object file's text area to attempt to determine the program's static call graph. Display static-only
parents and children with call counts of 0.

-e routine
Do not display entries for routine and its descendants.
-f routine
Print only routine, but include time spent in all routines.
-k from to
Remove arcs between the routines from and to.
-s
Summarize profile information in the file gmon. sum.
-v
Print version and exit.
-z
Include zero-usage calls.
-E routine
Do not display entries for routine and its descendants or include time spent on them in calculations for
total time.

-F routine
Print only information about routine. Do not include time spent in other routines.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (120 of 351) [15/ 05/ 2002 18: 03: 37] 177
177 Page 178 179

Linux Commands (Linux in a Nutshell, 3rd Edition)
grep grep [options] pattern [files]
Search one or more files for lines that match a regular expression pattern. Regular expressions are described in
Chapter 9, "Pattern Matching". Exit status is 0 if any lines match, 1 if none match, and 2 for errors. See also

egrep and fgrep.

Options
-a, --text
Don't suppress output lines with binary data; treat as text.
-b, --byte-offset

Print the byte offset within the input file before each line of output.
-b, --byte-offset

Print the byte offset within the input file before each line of output.
-c, --count

Print only a count of matched lines. With -v or --revert-match option, count nonmatching lines.
-d action, --directories= action

Define an action for processing directories. Possible actions are:
read
Read directories like ordinary files (default).
skip

Skip directories.
recurse

Recursively read all files under each directory. Same as -r.
-e
pattern, --regexp= pattern

Search for pattern. Same as specifying a pattern as an argument, but useful in protecting patterns
beginning with -.
-f file, --file= file

Take a list of patterns from file, one per line.
-h, --no-filename

Print matched lines but not filenames (inverse of -l).
-i, --ignore-case

Ignore uppercase and lowercase distinctions.
-l, --files-with-matches

List the names of files with matches but not individual matched lines; scanning per file stops on the first
match.
-n, --line-number

Print lines and their line numbers.
-q, --quiet, --silent

Suppress normal output in favor of quiet mode; the scanning stops on the first match.
-r, --recursive

Recursively read all files under each directory. Same as -d recurse.
-s, --no-messages

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (121 of 351) [15/ 05/ 2002 18: 03: 37] 178
178 Page 179 180
Linux Commands (Linux in a Nutshell, 3rd Edition)
Suppress error messages about nonexistent or unreadable files.
-v, --revert-match

Print all lines that don't match pattern.
-w, --word-regexp

Match on whole words only. Words are divided by characters that are not letters, digits, or underscores.
-x, --line-regexp

Print lines only if pattern matches the entire line.
-A num, --after-context= num

Print num lines of text that occur after the matching line.
-B num, --before-context= num

Print num lines of text that occur before the matching line.
-C[ num], --context=[ num], -num

Print num lines of leading and trailing context. Default context is 2 lines.
-L, --files-without-match

List files that contain no matching lines.
-V, --version

Print the version number and then exit.
Examples
List the number of users who use tcsh:
grep -c /bin/ tcsh /etc/ passwd
List header files that have at least one #include directive:
grep -l '^# include' /usr/ include/*
List files that don't contain pattern:
grep -c pattern files | grep :0

groff groff [options] [files]
troff [options] [files]
Frontend to the groff document-formatting system, which normally runs troff along with a postprocessor
appropriate for the selected output device. Options without arguments can be grouped after a single dash (-). A
filename of -denotes standard input.

Options
-a
Generate an ASCII approximation of the typeset output.
-b
Print a backtrace.
-C

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (122 of 351) [15/ 05/ 2002 18: 03: 37] 179
179 Page 180 181
Linux Commands (Linux in a Nutshell, 3rd Edition)
Enable compatibility mode.

-dcs, -dname= s
Define the character c or string name to be the string s.
-e
Preprocess with eqn.
-E
Don't print any error messages.
-ffam
Use fam as the default font family.
-Fdir
Search dir for subdirectories with DESC and font files before the default /usr/ lib/ groff/ font.
-h
Print a help message.
-i
Read standard input after all files have been processed.
-l
Send the output to a printer (as specified by the print command in the device description file).
-Larg
Pass arg to the spooler. Each argument should be passed with a separate -L option.
-mname
Read the macro file tmac. name.
-Mdir
Search directory dir for macro files before the default directory /usr/ lib/ groff/ tmac.
-nnum
Set the first page number to num.
-N
Don't allow newlines with eqn delimiters; equivalent to eqn's -N option.
-olist
Output only pages specified in list, which is a comma-separated list of page ranges.
-p
Preprocess with pic.
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (123 of 351) [15/ 05/ 2002 18: 03: 37] 180
180 Page 181 182
Linux Commands (Linux in a Nutshell, 3rd Edition)
-Parg
Pass arg to the postprocessor. Each argument should be passed with a separate -P option.
-rcn, -name= n
Set the number register c or name to n. c is a single character and n is any troff numeric expression.
-R
Preprocess with refer.
-s
Preprocess with soelim.
-S
Use safer mode (i. e., pass the -S option to pic and use the -msafer macros with troff).
-t
Preprocess with tbl.
-Tdev
Prepare output for device dev; the default is ps.
-v
Make programs run by groff print out their version number.
-V
Print the pipeline on stdout instead of executing it.
-wname
Enable warning name. You can specify multiple -w options. See the troff manpage for a list of warnings.
-Wname
Disable warning name. You can specify multiple -W options. See the troff manpage for a list of
warnings.

-z
Suppress troff output (except error messages).
-Z
Do not postprocess troff output. Normally groff automatically runs the appropriate postprocessor.
Devices
ascii
Typewriter-like device

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (124 of 351) [15/ 05/ 2002 18: 03: 37] 181
181 Page 182 183
Linux Commands (Linux in a Nutshell, 3rd Edition)
dvi

TeX dvi format
latin1
Typewriter-like devices using the ISO Latin-1 character set
ps
PostScript
X75
75-dpi X11 previewer
X100
100-dpi X11 previewer
lj4
HP LaserJet4-compatible (or other PCL5-compatible) printer
Environment variables
GROFF_ COMMAND_ PREFIX
If set to be X, groff will run Xtroff instead of troff.
GROFF_ FONT_ PATH
Colon-separated list of directories in which to search for the devname directory.
GROFF_ TMAC_ PATH
Colon-separated list of directories in which to search for the macro files.
GROFF_ TMPDIR
If set, temporary files will be created in this directory; otherwise, they will be created in TMPDIR (if set)
or /tmp (if TMPDIR is not set).

GROFF_ TYPESETTER
Default device.
PATH
Search path for commands that groff executes.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (125 of 351) [15/ 05/ 2002 18: 03: 37] 182
182 Page 183 184
Linux Commands (Linux in a Nutshell, 3rd Edition)
groupadd groupadd [options] group
System administration command. Create new group account group.
Options
-ggid
Assign numerical group ID. (By default, the first available number above 500 is used.) The value must be
unique unless the -o option is used.

-o
Accept a nonunique gid with the -g option.

groupdel groupdel group
System administration command. Remove group from system account files. You may still need to find and
change permissions on files that belong to the removed group.

groupmod groupmod [options] group
System administration command. Modify group information for group.
Options
-g
gid
Change the numerical value of the group ID. Any files that have the old gid will have to be changed
manually. The new gid must be unique unless the -o option is used.

-n name
Change the group name to name.
-o
Override. Accept a nonunique gid.

groups groups [options] [users]
Show the groups that each user belongs to (default user is the owner of the current group). Groups are listed in
/etc/ passwd and /etc/ group.

Options
--help
Print help message.
--version
Print version information.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (126 of 351) [15/ 05/ 2002 18: 03: 37] 183
183 Page 184 185
Linux Commands (Linux in a Nutshell, 3rd Edition)
grpck grpck [option] [files]
System administration command. Remove corrupt or duplicate entries in the /etc/ group and /etc/ gshadow files.
Generate warnings for other errors found. grpck will prompt for a "yes" or "no" before deleting entries. If the
user replies "no," the program will exit. If run in a noninteractive mode, the reply to all prompts is "no."
Alternate group and gshadow files can be checked. If other errors are found, the user will be encouraged to run
the groupmod command.

Option
-n
Noninteractive mode.
Exit codes
0
Success.
1
Syntax error.
2
One or more bad group entries found.
3
Could not open group files.
4
Could not lock group files.
5
Could not write group files.

grpconv grpconv
grpunconv
System administration command. Like pwconv, the grpconv command creates a shadowed group file to keep
your encrypted group passwords safe from password cracking programs. grpconv creates the /etc/ gshadow file
based on your existing /etc/ groups file and replaces your encrypted password entries with x. If you add new
entries to the /etc/ groups file, you can run grpconv again to transfer the new information to /etc/ gshadow. It will
ignore entries that already have a password of x and convert those that do not. grpunconv restores the encrypted
passwords to your /etc/ groups file and removes the /etc/ gshadow file.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (127 of 351) [15/ 05/ 2002 18: 03: 37] 184
184 Page 185 186
Linux Commands (Linux in a Nutshell, 3rd Edition)
gs gs [options] [files]
An interpreter for Adobe Systems' PostScript and PDF (Portable Document Format) languages; used for
document processing. With -in place of files, standard input is used.

Options
--
filename arg1 ...
Take the next argument as a filename, but use all remaining arguments to define ARGUMENTS in
userdict (not systemdict) as an array of those strings, before running the file.

-gnumber1xnumber2
Specify width and height of device; intended for systems like the X Window System.
-q
Quiet startup.
-rnumber, -rnumber1xnumber2
Specify X and Y resolutions (for the benefit of devices, such as printers, that support multiple X and Y
resolutions). If only one number is given, it is used for both X and Y resolutions.

-Dname= token, -dname= token
Define a name in systemdict with the given definition. The token must be exactly one token (as defined
by the token operator) and must not contain any whitespace.

-Dname, -dname
Define a name in systemdict with a null value.
-Idirectories
Adds the designated list of directories at the head of the search path for library files.
-Sname= string, -sname= string
Define a name in systemdict with a given string as value.
Special names
-dDISKFONTS
Causes individual character outlines to be loaded from the disk the first time they are encountered.
-dNOBIND
Disables the bind operator. Useful only for debugging.
-dNOCACHE
Disables character caching. Useful only for debugging.
-dNODISPLAY
Suppresses the normal initialization of the output device. May be useful when debugging.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (128 of 351) [15/ 05/ 2002 18: 03: 37] 185
185 Page 186 187
Linux Commands (Linux in a Nutshell, 3rd Edition)
-dNOPAUSE

Disables the prompt and pause at the end of each page.
-dNOPLATFONTS
Disables the use of fonts supplied by the underlying platform (e. g., the X Window System).
-dSAFER
Disables the deletefile and renamefile operators and the ability to open files in any mode other than read-only.

-dWRITESYSTEMDICT
Leaves systemdict writable.
-sDEVICE= device
Selects an alternate initial output device.
-sOUTPUTFILE= filename
Selects an alternate output file (or pipe) for the initial output device.

gunzip gunzip [options] [files]
Uncompress files compressed by gzip. See gzip for a list of options.

gzexe gzexe [option] [files]
Compress executables. When run, these files automatically uncompress, thus trading time for space. gzexe
creates backup files (filename~), which should be removed after testing the original.

Option
-d
Decompress files.

gzip gzip [options] [files]
gunzip [options] [files]
zcat [options] [files]
Compress specified files (or read from standard input) with Lempel-Ziv coding (LZ77). Rename compressed file
to filename. gz; keep ownership modes and access/ modification times. Ignore symbolic links. Uncompress with
gunzip, which takes all of gzip's options, except those specified. zcat is identical to gunzip -c and takes the
options -fhLV, described here. Files compressed with the compress command can be decompressed using these
commands.

Options
-n, --fast, --best
Regulate the speed of compression using the specified digit n, where -1 or --fast indicates the fastest
compression method (less compression) and -9 or --best indicates the slowest compression method (most
compression). The default compression level is -6.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (129 of 351) [15/ 05/ 2002 18: 03: 37] 186
186 Page 187 188
Linux Commands (Linux in a Nutshell, 3rd Edition)
-a, --ascii
ASCII text mode: convert end-of-lines using local conventions. This option is supported only on some
non-Unix systems.

-c, --stdout, --to-stdout
Print output to standard output, and do not change input files.
-d, --decompress, --uncompress
Same as gunzip.
-f, --force
Force compression. gzip would normally prompt for permission to continue when the file has multiple
links, its .gz version already exists, or it is reading compressed data to or from a terminal.

-h --help
Display a help screen and then exit.
-l, --list
Expects to be given compressed files as arguments. Files may be compressed by any of the following
methods: gzip, deflate, compress, lzh, and pack. For each file, list uncompressed and compressed sizes
(the latter being always -1 for files compressed by programs other than gzip), compression ratio, and
uncompressed name. With -v, also print compression method, the 32-bit CRC of the uncompressed data,
and the timestamp. With -N, look inside the file for the uncompressed name and timestamp.

-L, --license
Display the gzip license and quit.
-n, --no-name
When compressing, do not save the original filename and timestamp by default. When decompressing, do
not restore the original filename if present, and do not restore the original timestamp if present. This
option is the default when decompressing.

-N, --name
Default. Save original name and timestamp. When decompressing, restore original name and timestamp.
-q, --quiet
Print no warnings.
-r, --recursive
When given a directory as an argument, recursively compress or decompress files within it.
-S suffix, --suffix suffix
Append .suffix. Default is gz. A null suffix while decompressing causes gunzip to attempt to decompress
all specified files, regardless of suffix.

-t, --test
Test compressed file integrity.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (130 of 351) [15/ 05/ 2002 18: 03: 37] 187
187 Page 188 189
Linux Commands (Linux in a Nutshell, 3rd Edition)
-v, --verbose
Print name and percent size reduction for each file.
-V, --version
Display the version number and compilation options.

halt halt [options]
System administration command. Insert a note in the file /var/ log/ wtmp; if the system is in runlevel 0 or 6, stop
all processes; otherwise, call shutdown -nf.

Options
-d
Suppress writing to /var/ log/ wtmp.
-f
Call halt even when shutdown -nf would normally be called (i. e., force a call to halt, even when not in
runlevel 0 or 6).

-n
Suppress normal call to sync.
-w
Suppress normal execution; simply write to /var/ log/ wtmp.

head head [options] [files]
Print the first few lines (default is 10) of one or more files. If files is missing or -, read from standard input. With
more than one file, print a header for each file.

Options
-c
num[ bkm], --bytes num
Print first num bytes or, if num is followed by b, k, or m, first num 512-byte blocks, 1-kilobyte blocks, or
1-megabyte blocks.

--help
Display help and then exit.
-n num, --lines num, -num
Print first num lines. Default is 10.
-q, --quiet, --silent
Quiet mode; never print headers giving filenames.
-v, --verbose
Print filename headers, even for only one file.
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (131 of 351) [15/ 05/ 2002 18: 03: 37] 188
188 Page 189 190
Linux Commands (Linux in a Nutshell, 3rd Edition)
--version
Output version information and then exit.
Examples
Display the first 20 lines of phone_ list:
head -20 phone_ list
Display the first 10 phone numbers having a 202 area code:
grep '( 202) ' phone_ list | head

host host [options] host [server]
host [options] zone [server]
System administration command. Print information about specified hosts or zones in DNS. Hosts may be IP
addresses or hostnames; host converts IP addresses to hostnames by default and appends the local domain to
hosts without a trailing dot. Default servers are determined in /etc/ resolv. conf. For more information about hosts
and zones, try Chapters 1 and 2 of DNS and BIND by Paul Albitz and Cricket Liu, published by O'Reilly &
Associates.

Options
-a
Same as -t ANY.
-c
class
Search for specified resource record class (IN, INTERNET, CS, CSNET, CH, CHAOS, HS, HESIOD,
ANY, or *). Default is IN.

-d
Debugging mode. -dd is a more verbose version.
-e
Do not print information about domains outside of specified zone. For hostname queries, do not print
"additional information" or "authoritative nameserver."

-f file
Output to file as well as standard out.
-i
Given an IP address, return the corresponding in-addr. arpa address, class (always PTR), and hostname.
-l zone
List all machines in zone.
-m
Print only MR, MG, and MB records; recursively expand MR (renamed mail box) and MG (mail group)

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (132 of 351) [15/ 05/ 2002 18: 03: 37] 189
189 Page 190 191
Linux Commands (Linux in a Nutshell, 3rd Edition)
records to MB (mail box) records.

-o
Do not print output to standard out.
-p [server]
For use with -l. Query only the zone's primary nameserver (or server) for zone transfers, instead of those
authoritative servers that respond. Useful for testing unregistered zones.

-q
Quiet. Suppress warning, but not error, messages.
-r
Do not ask contacted server to query other servers, but require only the information that it has cached.
-t type
Look for type entries in the resource record. type may be A, NS, PTR, ANY, or * (all).
-u
Use TCP, not UDP.
-v
Verbose. Include all fields from resource record, even time-to-live and class, as well as "additional
information" and "authoritative nameservers" (provided by the remote nameserver).

-vv
Very verbose. Include information about host's defaults.
-w
Never give up on queried server.
-x
Allow multiple hosts or zones to be specified. If a server is also specified, the argument must be preceded
by -X.

-A
For hostnames, look up the associated IP address, and then reverse look up the hostname, to see if a
match occurs. For IP addresses, look up the associated hostname, and determine whether the host
recognizes that address as its own. For zones, check IP addresses for all hosts. Exit silently if no
incongruities are discovered.

-C
Similar to -l, but also check to see if the zone's name servers are really authoritative. The zone's SOA
(start of authority) records specify authoritative name servers (in NS fields). Those servers are queried; if
they do not have SOA records, host reports a lame delegation. Other checks are made as well.

-D
Similar to -H but include the names of hosts with more than one address per defined name.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (133 of 351) [15/ 05/ 2002 18: 03: 37] 190
190 Page 191 192
Linux Commands (Linux in a Nutshell, 3rd Edition)
-E
Similar to -H but do not treat extra-zone hosts as errors. Extra-zone hosts are hosts in an undefined
subdomain.

-F file
Redirect standard out to file, and print extra resource record output only on standard out.
-G zone
Similar to -H but include the names of gateway hosts.
-H zone
Print the number of unique hosts within zone. Do not include aliases. Also list all errors found (extra-zone
names, duplicate hosts).

-I chars
Do not print warnings about domain names containing illegal characters chars, such as _.
-L level
For use with -l. List all delegated zones within this zone, up to level deep, recursively.
-P servers
For use with -l. servers should be a comma-separated list. Specify preferred hosts for secondary servers to
use when copying over zone data. Highest priority is given to those servers that match the most domain
components in a given part of servers.

-R
Treat non-fully-qualified hostnames as BIND does, searching each component of the local domain.
-S
For use with -l. Print all hosts within the zone to standard out. Do not print hosts within subzones. Include
class and IP address. Print warning messages (illegal names, lame delegations, missing records, etc.) to
standard error.

-T
Print time-to-live values (how long information about each host will remain cached before the
nameserver refreshes it).

-X server
Specify a server to query, and allow multiple hosts or zones to be specified.
-Z
When printing recource records, include trailing dot in domain names, and print time-to-live value and
class name.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (134 of 351) [15/ 05/ 2002 18: 03: 37] 191
191 Page 192 193
Linux Commands (Linux in a Nutshell, 3rd Edition)
hostid hostid
Print the ID number in hexadecimal of the current host.

hostname hostname [option] [nameofhost]
Set or print name of current host system. A privileged user can set the hostname with the nameofhost argument.
Option
-a, --alias
Display the alias name of the host (if used).
-d, --domain
Print DNS domain name.
-f, --fqdn, --long
Print fully qualified domain name.
-F file, --file file
Consult file for hostname.
-h, --help
Print a help message and then exit.
-i, --ip-address
Display the IP address( es) of the host.
-s, --short
Trim domain information from the printed name.
-v, --verbose
Verbose mode.
-V, --version
Print version information and then exit.
-y, --yp, --nis
Display the NIS domain name. A privileged user can set a new NIS domain name with nameofhost.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (135 of 351) [15/ 05/ 2002 18: 03: 37] 192
192 Page 193 194
Linux Commands (Linux in a Nutshell, 3rd Edition)
hwclock hwclock [options]
System administration command. Read or set the hardware clock. This command maintains change information
in /etc/ adjtime, which can be used to adjust the clock based on how much it drifts over time. hwclock replaces
the clock command. The single-letter options are included for compatibility with the older command.

Options
You may specify only one of the following options:
-a
Adjust the hardware clock based on information in /etc/ adjtime and set the system clock to the new time.
--adjust
Adjust the hardware clock based on information in /etc/ adjtime.
--date date
Meaningful only with the --set option. date is a string appropriate for use with the date command.
--debug
Print information about what hwclock is doing.
-r, --show
Print the current time stored in the hardware clock.
-s, --hctosys
Set the system time in accordance with the hardware clock.
--set
Set the hardware clock according to the time given in the --date parameter.
--test
Do not actually change anything. This is good for checking syntax.
-u, --utc
The hardware clock is stored in Universal Coordinated Time.
--version
Print version and exit.
-w, --systohc
Set the hardware clock in accordance with the system time.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (136 of 351) [15/ 05/ 2002 18: 03: 37] 193
193 Page 194 195
Linux Commands (Linux in a Nutshell, 3rd Edition)
icmpinfo icmpinfo [options]
TCP/ IP command. Intercept and interpret ICMP packets. Print the address and name of the message's sender, the
source port, the destination port, the sequence, and the packet size. By default, provide information only about
packets that are behaving oddly.

Options
-k
Kill the syslogd process begun by -l.
-l
Record via syslogd. Only a privileged user may use this option.
-n
Use IP addresses instead of hostnames.
-p
Suppress decoding of port number: do not attempt to guess the name of the service that is listening at that
port.

-s
Include IP address of interface that received the packet, in case there are several interfaces on the host
machine.

-v
Verbose. Include information about normal ICMP packets. You may also specify -vv and -vvv for extra
verbosity.

id id [options] [username]
Display information about yourself or another user: user ID, group ID, effective user ID and group ID if
relevant, and additional group IDs.

Options
-g, --group
Print group ID only.
-G, --groups
Print supplementary groups only.
-n, --name
With -u, -g, or -G, print user or group name, not number.
-r, --real
With -u, -g, or -G, print real, not effective, user ID or group ID.
-u, --user

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (137 of 351) [15/ 05/ 2002 18: 03: 37] 194
194 Page 195 196
Linux Commands (Linux in a Nutshell, 3rd Edition)
Print user ID only.

--help
Print help message and then exit.
--version
Print version information.

identd in. identd [options] [kernelfile [kmemfile]]
TCP/ IP command. Provide the name of the user whose process is running a specified TCP/ IP connection. You
may specify the kernel and its memory space.

Options
-a
ip_ address
Bind to ip_ address. Useful only with -b. By default, bind to the INADDR_ ANY address.
-b

Run standalone; not for use with inetd.
-d

Allow debugging requests.
-ggid

Attempt to run in the group gid. Useful only with -b.
-i

Run as a daemon, one process per request.
-l

Log via syslogd.
-m

Allow multiple requests per session.
-n

Return user IDs instead of usernames.
-N

Do not provide a user's name or user ID if the file .noident exists in the user's home directory.
-o

When queried for the type of operating system, always return OTHER.
-pport

Listen at port instead of the default, port 113.
-tseconds

Exit if no new requests have been received before seconds seconds have passed. Note that, with -i or -w,
the next new request will result in identd being restarted. Default is infinity (never exit).
-uuid

Attempt to run as uid. Useful only with -b.
-V

Print version and exit.
-w

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (138 of 351) [15/ 05/ 2002 18: 03: 37] 195
195 Page 196 197
Linux Commands (Linux in a Nutshell, 3rd Edition)
Run as a daemon, one process for all requests.

ifconfig ifconfig [interface]
ifconfig [interface address_ family parameters addresses]
TCP/ IP command. Assign an address to a network interface and/ or configure network interface parameters.
ifconfig is typically used at boot time to define the network address of each interface on a machine. It may be
used at a later time to redefine an interface's address or other parameters. Without arguments, ifconfig displays
the current configuration for a network interface. Used with a single interface argument, ifconfig displays that
particular interface's current configuration.

Arguments
interface
String of the form name unit, for example, en0.
address_ family
Since an interface may receive transmissions in differing protocols, each of which may require separate
naming schemes, you can specify the address_ family to change the interpretation of the remaining
parameters. You may specify inet (the default; for TCP/ IP), ax25 (AX. 25 Packet Radio), ddp (Appletalk
Phase 2), or ipx (Novell).

Parameters
The following parameters may be set with ifconfig:
allmulti/-allmulti
Enable/ disable sending of incoming frames to the kernel's network layer.
arp/-arp
Enable/ disable use of the Address Resolution Protocol in mapping between network-level
addresses and link-level addresses.

broadcast
(inet only.) Specify address to use to represent broadcasts to the network. Default is the address
with a host part of all 1s (i. e., x. y. z. 255 for a class C network).

debug/-debug
Enable/ disable driver-dependent debugging code.
dest_ address
Specify the address of the correspondent on the other end of a point-to-point link.
down
Mark an interface "down" (unresponsive).
hw class address
Set the interface's hardware class and address. class may be ether (Ethernet), ax25 (AX. 25 Packet
Radio), or ARCnet.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (139 of 351) [15/ 05/ 2002 18: 03: 38] 196
196 Page 197 198
Linux Commands (Linux in a Nutshell, 3rd Edition)
irq addr
Set the device's interrupt line.
metric n
Set routing metric of the interface to n. Default is 0.
mtu num
Set the interface's Maximum Transfer Unit (MTU).
multicast
Set the multicast flag.
netmask mask
(inet only.) Specify how much of the address to reserve for subdividing networks into
subnetworks. mask can be specified as a single hexadecimal number with a leading 0x, with a dot
notation Internet address, or with a pseudonetwork name listed in the network table /etc/ networks.

pointopoint/-pointopoint [address]
Enable/ disable point-to-point interfacing, so that the connection between the two machines is
dedicated.

up
Mark an interface "up" (ready to send and receive).
trailers/-trailers
Request/ disable use of a "trailer" link-level encapsulation when sending.
address
Either a hostname present in the hostname database (/ etc/ hosts), or an Internet address expressed in the
Internet standard dot notation.

imake imake options
C preprocessor (cpp) interface to the make utility. imake (for include make) solves the portability problem of
make by allowing machine dependencies to be kept in a central set of configuration files, separate from the
descriptions of the various items to be built. The targets are contained in the Imakefile, a machine-independent
description of the targets to be built, written as cpp macros. imake uses cpp to process the configuration files
and the Imakefile, and to generate machine-specific Makefiles, which can then be used by make.

One of the configuration files is a template file, a master file for imake. This template file (default is
Imake. tmpl) #includes the other configuration files that contain machine dependencies such as variable
assignments, site definitions, and cpp macros, and directs the order in which the files are processed. Each file
affects the interpretation of later files and sections of Imake. tmpl. Comments may be included in imake
configuration files, but the initial # needs to be preceded with an empty C comment:

/**/#
For more information, see cpp and make. Also check out the Nutshell Handbook Software Portability with
imake,
by Paul DuBois.

Options

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (140 of 351) [15/ 05/ 2002 18: 03: 38] 197
197 Page 198 199
Linux Commands (Linux in a Nutshell, 3rd Edition)
-Ddefine
Set directory-specific variables. This option is passed directly to cpp.
-e
Execute the generated Makefile. Default is to leave this to the user.
-f filename
Name of per-directory input file. Default is Imakefile.
-Idirectory
Directory in which imake template and configuration files may be found. This option is passed directly to
cpp.

-s filename
Name of make description file to be generated. If filename is a --, the output is written to stdout. The
default is to generate, but not execute, a Makefile.

-Ttemplate
Name of master template file used by cpp. This file is usually located in the directory specified with the -I
option. The default file is Imake. tmpl.

-v
Print the cpp command line used to generate the Makefile.
Tools
Following is a list of tools used with imake:
makedepend [options]
files
Create header file dependencies in Makefiles. make-depend reads the named input source files in
sequence and parses them to process #include, #define, #undef, #ifdef, #ifndef, #endif, #if, and #else
directives so it can tell which #include directives would be used in a compilation. makedepend
determines the dependencies and writes them to the Makefile. make then knows which object files must
be recompiled when a dependency has changed. makedepend has the following options:

--options --
Ignore any unrecognized options following a double hyphen. A second double hyphen terminates
this action. Recognized options between the hyphens are processed normally.

-a
Append dependencies to any existing ones instead of replacing existing ones.
-ffilename
Write dependencies to filename instead of to Makefile.
-m
Print a warning when encountering a multiple inclusion.
-sstring
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (141 of 351) [15/ 05/ 2002 18: 03: 38] 198
198 Page 199 200
Linux Commands (Linux in a Nutshell, 3rd Edition)
Use string as delimiter in file, instead of # DO NOT DELETE THIS LINE --make depend
depends on it.

-v
Verbose. List all files included by main source file.
-Dname
Define name with the given value (first form) or with value 1 (second form).
-Idir
Add directory dir to the list of directories searched.
-Ydir
Search only dir for include files. Ignore standard include directories.
mkdirhier dir...
Create directory dir and all missing parent directories during file installation operations.
xmkmf [option] [topdir] [curdir]
Bootstrap a Makefile from an Imakefile. topdir specifies the location of the project root directory. curdir
(usually omitted) is specified as a relative pathname from the top of the build tree to the current directory.
The -a option is equivalent to the following command sequence:

% xmkmf
% make Makefiles
% make includes
% make depend

Configuration files
Following is a list of the imake configuration files:
Imake. tmpl
Master template for imake. Imake. tmpl includes all the other configuration files, plus the Imakefile in the
current directory.

Imake. params
Contains definitions that apply across sites and vendors.
Imake. rules
Contains cpp macro definitions that are configured for the current platform. The macro definitions are fed
into imake, which runs cpp to process the macros. Newlines (line continuations) are indicated by the
string @@\ (double at sign, backslash).

site. def
Contains site-specific (as opposed to vendor-specific) information, such as installation directories, what
set of programs to build, and any special versions of programs to use during the build. The site. def file
changes from machine to machine.

Project. tmpl

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (142 of 351) [15/ 05/ 2002 18: 03: 38] 199
199 Page 200 201
Linux Commands (Linux in a Nutshell, 3rd Edition)
File containing X-specific variables.
Library. tmpl
File containing library rules.
Server. tmpl
File containing server-specific rules.
.cf
The .cf files are the vendor-specific VendorFiles that live in Imake. vb. A .cf file contains platform-specific
definitions, such as version numbers of the operating system and the compiler and workarounds
for missing commands. The definitions in .cf files override the defaults, defined in Imake. params.

The Imakefile
The Imakefile is a per-directory file that indicates targets to be built and installed and rules to be applied. imake
reads the Imakefile and expands the rules into Makefile target entries. An Imakefile may also include definitions
of make variables and list the dependencies of the targets. The dependencies are expressed as cpp macros,
defined in Imake. rules. Whenever you change an Imakefile, you need to rebuild the Makefile and regenerate
header file dependencies. For more information on imake, see Software Portability with imake by Paul DuBois.

imapd imapd
TCP/ IP command. The Interactive Mail Access Protocol (IMAP) server daemon. imapd is invoked by inetd and
listens on port 143 for requests from IMAP clients. IMAP allows mail programs to access remote mailboxes as if
they were local. IMAP is a richer protocol than POP because it allows a client to retrieve message-level
information from a server mailbox instead of the entire mailbox. IMAP can be used for online and offline
reading. The popular Pine mail client contains support for IMAP.

inetd inetd [option] [configuration_ file]
TCP/ IP command. Internet services daemon. inetd listens on multiple ports for incoming connection requests.
When it receives one, it spawns the appropriate server. When started, inetd reads its configuration information
from either configuration_ file, or from the default configuration file /etc/ inetd. conf. It then issues a call to
getservbyname, creates a socket for each server, and binds each socket to the port for that server. It does a listen
on all connection-based sockets, then waits, using select for a connection or datagram.

When a connection request is received on a listening socket, inetd does an accept, creating a new socket. It then
forks, dups, and execs the appropriate server. The invoked server has I/ O to stdin, stdout, and stderr done to the
new socket, connecting the server to the client process.

When there is data waiting on a datagram socket, inetd forks, dups, and execs the appropriate server, passing it
any server program arguments. A datagram server has I/ O to stdin, stdout, and stderr done to the original
socket. If the datagram socket is marked as wait, the invoked server must process the message before inetd
considers the socket available for new connections. If the socket is marked nowait, inetd continues to process
incoming messages on that port.

The following servers may be started by inetd: bootpd, bootpgw, fingerd, ftpd, imapd, popd, rexecd, rlogind,
rshd, talkd, telnetd,
and tftpd. Do not arrange for inetd to start named, routed, rwhod, sendmail, listen, or
any NFS server.

inetd rereads its configuration file when it receives a hangup signal, SIGHUP. Services may be added, deleted,
or modified when the configuration file is reread.

Option
-d

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (143 of 351) [15/ 05/ 2002 18: 03: 38] 200
200 Page 201 202
Linux Commands (Linux in a Nutshell, 3rd Edition)
Turn on socket-level debugging and print debugging information to stdout.
Files
/etc/ inetd. conf
Default configuration file.
/var/ run/ inetd. pid
inetd's process ID.

info info [options] [topics]
GNU hypertext reader: display online documentation previously built from Texinfo input. Info files are arranged
in a hierarchy and can contain menus for subtopics. When entered without options, the command displays the
top-level info file (usually /usr/ local/ info/ dir). When topics are specified, find a subtopic by choosing the first
topic from the menu in the top-level info file, the next topic from the new menu specified by the first topic, and
so on. The initial display can also be controlled by the -f and -n options.

Options
-d
directories, --directory directories
Search directories, a colon-separated list, for info files. If this option is not specified, use the INFOPATH
environment variable or the default directory (usually /usr/ local/ info).

--dribble file
Store each keystroke in file, which can be used in a future session with the --restore option to return to
this place in info.

-f file, --file file
Display specified info file.
-n node, --node node
Display specified node in the info file.
-o file, --output file
Copy output to file instead of displaying it at the screen.
--help
Display brief help.
--restore file
When starting, execute keystrokes in file.
--subnodes
Display subtopics.
--version
Display version.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (144 of 351) [15/ 05/ 2002 18: 03: 38] 201
201 Page 202 203
Linux Commands (Linux in a Nutshell, 3rd Edition)
--vi-keys
Use vi-like key bindings.

init init [option] [runlevel]
System administration command.
Option
-t
seconds
When changing runlevels, send SIGKILL seconds after SIGTERM. Default is 20.
Files
init
is the first process run by any Unix machine at boot time. It verifies the integrity of all filesystems and then
creates other processes, using fork and exec, as specified by /etc/ inittab. Which processes may be run are
controlled by runlevel. All process terminations are recorded in /var/ run/ utmp and /var/ log/ wtmp. When the
runlevel changes, init sends SIGTERM and then, after 20 seconds, SIGKILL to all processes that cannot be run
in the new runlevel.

Runlevels
The current runlevel may be changed by telinit, which is often just a link to init. The default runlevels vary from
distribution to distribution, but these are standard:

0
Halt the system.
1, s, S
Single-user mode.
6
Reboot the system.
q, Q
Reread /etc/ inittab.
Check the /etc/ inittab file for runlevels on your system.

insmod insmod [options] file [symbol= value ...]
System administration command. Load the module file into the kernel, changing any symbols that are defined on
the command line. If the module file is named file. o or file. mod, the module will be named file.

Options
-f
Force loading of module, even if some problems are encountered.
-m
Output a load map.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (145 of 351) [15/ 05/ 2002 18: 03: 38] 202
202 Page 203 204
Linux Commands (Linux in a Nutshell, 3rd Edition)
-o name
Name module name instead of attempting to name it from the object file's name.
-x
Do not export: do not add any external symbols from the module to the kernel's symbol table.

install install [options] [file] directories
System administration command. Used primarily in makefiles to update files. install copies files into user-specified
directories. It will not overwrite a file. Similar to cp but attempts to set permission modes, owner, and
group.

Options
-d, --directory
Create any missing directories.
-g group, --group group
Set group ID of new file to group (privileged users only).
-m mode, --mode mode
Set permissions of new file to mode (octal or symbolic). By default, the mode is 0755.
-o [owner], --owner [owner]
Set ownership to owner or, if unspecified, to root (privileged users only).
-s, --strip
Strip symbol tables.

ipchains ipchains command [options]
System administration command. Edit IP firewall rules in the 2.2 Linux kernel. A 2.2 Linux kernel compiled
with firewall support will examine the headers of all network packets and compare them to matching rules to see
what it should do with the packet. A firewall rule consists of some matching criteria and a target, a result to be
applied if the packet matches the criteria. The rules are organized into chains. You can use these rules to build a
firewall or just reject certain kinds of network connections.

Firewall rules are organized into chains, an ordered checklist that the kernel works through looking for matches.
There are three built-in chains input, output, and forward. Packets entering the system are tested against the
input chain. Those exiting the system are checked against the output chain. If an incoming packet is destined
for some other system, it is checked against the forward chain. Each of these chains has a default target, a
policy, in case no match is found. User-defined chains can be created and used as targets for packets, but they
have no default policies. If no match can be found in a user-defined chain, the packet is returned to the chain
from which it was called and tested against the next rule in that chain.

ipchains only changes the rules in the running kernel. When the system is powered off, all those changes are
lost. You can use the ipchains-save command to make a script you can later run with ipchains-restore to restore
your firewall settings. Such a script is often called at boot up and many distributions have an ipchains
initialization script that uses the output from ipchains-save.

Commands

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (146 of 351) [15/ 05/ 2002 18: 03: 38] 203
203 Page 204 205
Linux Commands (Linux in a Nutshell, 3rd Edition)
ipchains is always invoked with one of the following commands:

-A chain rules, --append chain rules
Append new rules to chain.
-I chain number rules, --insert <chain number rules
Insert rules into chain at the ordinal position given by number.
-D chain rules, --delete chain rules
Delete rules from chain. Rules can be specified by their ordinal number in the chain as well as by a
general rule description.

-R chain number rule, --replace chain number rule
Replace a rule in chain. The rule to be replaced is specified by its ordinal number.
-C chain rule, --check chain rules
Construct a network packet that matches the given rule and check how chain will handle it. The rule must
describe the source, destination, protocol, and interface of the packet to be constructed.

-L [chain], --list $PARAMETER
List the rules in chain. If no chain is specified, list the rules in all chains.
-ML, --masquerading --list
List masquerading connections.
-MS tcp tcpfin udp, --masquerading --set tcp tcpfin udp
Set timeout value in seconds for masquerading connections. -MS always takes three parameters
specifying the timeout values for TCP sessions, TCP sessions that have received a FIN packet, and UDP
packets.

-F chain, --flush chain
Remove all rules from chain.
-Z [chain], --zero [chain]
Reset the packet and byte counters in chain. If no chain is specified, all chains will be reset. When used
without specifying a chain and combined with the -L command, it lists the current counter values before
they are reset.

-N chain, --new-chain chain
Create a new chain. The chain's name must be unique.
-X [chain], --delete-chain chain
Delete chain. Only user-defined chains can be deleted, and there can be no references to the chain to be
deleted. If no argument is given, all user-defined chains will be deleted.

-P chain target, --policy chain target
Set the policy for a built-in chain; the target itself cannot be a chain.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (147 of 351) [15/ 05/ 2002 18: 03: 38] 204
204 Page 205 206
Linux Commands (Linux in a Nutshell, 3rd Edition)
-h [icmp]

Print a brief help message. If the option icmp is given, print a list of valid ICMP types.
Targets
A target can be the name of a chain or one of the following special values:
ACCEPT
Let the packet through.
DENY
Drop the packet.
MASQ
Masquerade the packet so it appears that it originated from the current system. Reverse packets from
masqueraded connections are unmasqueraded automatically. This is a legal target for only the forward
chain, or user-defined chains used in forwarding packets. To use this target, the kernel must be compiled
with support for IP masquerading.

REDIRECT [port]
Redirect incoming packets to a local port on which you are running a transparent proxy program. If the
specified port is 0 or is not given, the destination port of the packet is used as the redirection port.
REDIRECT is only a legal target for the input chain or user-defined chains used in handling incoming
packets. The kernel must be compiled with support for transparent proxies.

REJECT
Drop the packet and send an ICMP message back to the sender indicating the packet was dropped.
RETURN
Return to the chain from which this chain was called and check the next rule. If RETURN is the target of
a rule in a built-in chain, then the built-in chain's default policy is applied.

Rule specification parameters
These options are used to create rules for use with the preceding commands. Rules consist of some matching
criteria and usually a target to jump to (-j) if the match is made. Many of the parameters for these matching rules
can be expressed as a negative with an exclamation point (!) meaning "not." Those rules will match everything
except the given parameter.

-p [!] name, --protocol [!]$ PARAMETER
Match packets of protocol name. The value of name can be given as a name or number as found in the
file /etc/ protocols. The most common values are tcp, udp, icmp, or the special value all. The number 0 is
equivalent to all, and this is the default value when this option is not used.

-s [!] address[/ mask] [!] [port], --source [!] address[/ mask] [!] [port]
Specifies the source address and port of the packet that will match this rule. The address may be supplied
as a hostname, a network name, or an IP address. The optional mask is the netmask to use and may be
supplied either in the traditional form (e. g., /255.255.255.0) or in the modern form (e. g., /24). The
optional port specifies the TCP, UDP, or ICMP type that will match. You may supply a port specification
only if you've supplied the -p parameter with one of the tcp, udp or icmp protocols. A colon can be used
to indicate an inclusive range of ports or ICMP values to be used. (e. g., 20: 25 for ports 20 through 25). If
the first port parameter is missing, the default value is 0. If the second is omitted, the default value is
65535.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (148 of 351) [15/ 05/ 2002 18: 03: 38] 205
205 Page 206 207
Linux Commands (Linux in a Nutshell, 3rd Edition)
-d [!] address[/ mask] [!] [port], --destination [!] address[/ mask] [port]
Match packets with the destination address. The syntax for this command's parameters is the same as for
the -s option.

-j target, --jump target
Jump to a special target or a user-defined chain. If this option is not specified for a rule, matching the rule
only increases the rule's counters and the packet is tested against the next rule.

-i [!] name, --interface name
Match packets from interface name[+]. name is the network interface used by your system (e. g., eth0 or
ppp0). A + can be used as a wildcard, so ppp+ would match any interface name beginning with ppp.

[!] -f, [!]--fragment $PARAMETER
The rule applies to everything but the first fragment of a fragmented packet.
--source-port [!] port
Match packets from the source port. The syntax for specifying ports can be found in the preceding
description of the -s option.

--destination-port [!] port
Match packets with the destination port. The syntax for specifying ports can be found in the preceding
description of the -s option.

--icmp-type [!] type
Match packets with ICMP type name or number of type.
Options
-b, --bidirectional
Put rule in both the input and output chain so packets will be matched in both directions.
-v, --verbose
Verbose mode.
-n, --numeric
Print all IP address and port numbers in numeric form. By default, names are displayed when possible.
-l, --log
Log information for the matching packet to the system log.
-t andmask xormask, --TOS andmask xormask
Change the Type of Service field in the packet's header. The TOS field is first ANDed with the 8-bit
hexadecimal mask andmask, then XORed with the 8-bit hexadecimal mask xormask. Rules that would
affect the least significant bit (LSB) portion of the TOS field are rejected.

-x, --exact
Expand all numbers in a listing (-L). Display the exact value of the packet and byte counters instead of

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (149 of 351) [15/ 05/ 2002 18: 03: 38] 206
206 Page 207 208
Linux Commands (Linux in a Nutshell, 3rd Edition)
rounded figures.

[!] -y, --syn
Match only incoming TCP connection requests, those with the SYN bit set and the ACK and FIN bits
cleared. This blocks incoming TCP connections but leaves outgoing connections unaffected.

--line-numbers
Used with the -L command. Add the line number to the beginning of each rule in a listing indicating its
position in the chain.

--no-warnings
Disable all warnings

ipchains-restore ipchains-restore [options]
System administration command. Restore firewall rules. ipchains-restore takes commands generated by
ipchains-save and uses them to restore the firewall rules for each chain. Often used by initialization scripts to
restore firewall settings on boot.

Options
-f
Force updates of existing chains without asking.
-v
Print rules as they are being restored.
-p
If a nonexisting chain is targeted by a rule, create it.

ipchains-save ipchains-save [chain] [option]
System administration command. Print the IP firewall rules currently stored in the kernel to stdout. If no chain
is given, all chains will be printed. Output is usually redirected to a file, which can later be used by ipchains-restore
to restore the firewall.

Option
-v
Print out rules to stderr as well as stdout, making them easier to see when redirecting output.

ipfwadm ipfwadm category command parameters [options]
ipfwadm -M [ -l | -s ] [options]
Administer a firewall and its rules, firewall accounting, and IP masquerading in the 2.0 Linux kernel. This
command is replaced with ipchains in the 2.2 kernel, and ipchains is replaced by iptables in the 2.4 kernel.

There are four categories of rules: IP packet accounting, IP input firewall, IP output firewall, and IP forwarding
firewall. The rules are maintained in lists, with a separate list for each category. See the manpage for ipfw( 4) for
a more detailed description of how the lists work.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (150 of 351) [15/ 05/ 2002 18: 03: 38] 207
207 Page 208 209
Linux Commands (Linux in a Nutshell, 3rd Edition)
Each ipfwadm command specifies only one category and one rule. To create a secure firewall, you issue
multiple ipfwadm commands; the combination of their rules work together to ensure that your firewall operates
as you intend it to. The second form of the command is for masquerading. The commands -l and -s described in
the later list are the only ones that can be used with the masquerading category, -M.

Categories
One of the following flags is required to indicate the category of rules to which the command that follows the
category applies.

-A [direction]
IP accounting rules. Optionally, a direction can be specified:
in
Count only incoming packets.
out
Count only outgoing packets.
both
Count both incoming and outgoing packets; this is the default.
-F
IP forwarding firewall rules.
-I
IP input firewall rules.
-M
IP masquerading administration. Can be used only with the -l or -s command.
-O
IP output firewall rules.
Commands
The category is followed by a command indicating the specific action to be taken. Unless otherwise specified,
only one action can be given on a command line. For the commands that can include a policy, the valid policies
are:

accept
Allow matching packets to be received, sent, or forwarded.
deny
Block matching packets from being received, sent, or forwarded.
reject
Block matching packets from being received, sent, or forwarded and also return an ICMP error message
to the sending host.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (151 of 351) [15/ 05/ 2002 18: 03: 38] 208
208 Page 209 210
Linux Commands (Linux in a Nutshell, 3rd Edition)
The commands are:

-a [policy]
Append one or more rules to the end of the rules for the category. No policy is specified for accounting
rules. For firewall rules, a policy is required. When the source and/ or destination names resolve to more
than one address, a rule is added for each possible address combination.

-c
Check whether this IP packet would be accepted, denied, or rejected by the type of firewall represented
by this category. Valid only when the category is -I, -O, or -F. Requires the -V parameter to be specified
(see "Parameters," later).

-d [policy]
Delete one or more entries from the list of rules for the category. No policy is specified for accounting
rules. The parameters specified with this command must exactly match the parameters from an append or
insert command, or no match will be found and the rule will not be removed. Only the first matching rule
in the list of rules is deleted.

-f
Remove (flush) all rules for the category.
-h
Display a help message with a brief description of the command syntax. Specified with no category:
% ipfwadm -h
-i [policy]
Insert a new rule at the beginning of the selected list for the category. No policy is specified for
accounting rules. For firewall rules, a policy is required. When the source and/ or destination names
resolve to more than one address, a rule is added for each possible address combination.

-l
List all rules for the category. This option may be combined with the -z option to reset the packet and
byte counters after listing their current values. Unless the -x option is also specified, the packet and byte
counters are shown as numberK or numberM, rounded to the nearest integer. See also the -e option
described under "Options" later.

-p policy
Change the default policy for the selected type of firewall to policy. The default policy is used when no
matching rule is found. Valid only with -I, -O, or -F.

-s tcp tcpfin udp
Set the masquerading timeout values; valid only with -M. The three parameters are required and represent
the timeout value in seconds for TCP sessions, TCP sessions after receiving a FIN packet, and UDP
packets, respectively. A timeout value of 0 preserves the current timeout value of the corresponding
entry.

-z
Reset the packet and byte counters for all rules in the category. This command may be combined with the
-l command.

Parameters
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (152 of 351) [15/ 05/ 2002 18: 03: 38] 209
209 Page 210 211
Linux Commands (Linux in a Nutshell, 3rd Edition)
The following parameters can be specified with the -a, -i, -d, or -c commands, except as noted. Multiple
parameters can be specified on a single ipfwadm command line.

-D address[/ mask] [port ...]
The destination specification (optional). See the description of -S for the syntax, default values, and other
requirements. ICMP types cannot be specified with -D.

-P protocol
The protocol of the rule or packet; possible values are tcp, udp, icmp, or all. Defaults to all, which
matches all protocols. -P cannot be specified with the -c command.

-S address[/ mask] [port ...]
The source IP address, specified as a hostname, a network name, or an IP address. The source address and
mask default to 0.0.0.0/ 0. If -S is specified, -P must also be specified. The optional mask is specified as a
network mask or as the number of 1s on the left of the network mask (e. g., a mask of 24 is equivalent to
255.255.255.0). The mask defaults to 32. One or more values of port may optionally be specified,
indicating what ports or ICMP types the rule applies to. The default is all. Ports may be specified by their
/etc/ services entry. The syntax for indicating a range of ports is:

lowport: highport
For example:
-S 172.29.16.1/ 24 ftp: ftp-data
-V address
The address of the network interface the packet is received from (if category is -I) or is being sent to (if
category is -O). address can be a hostname or an IP address, and defaults to 0.0.0.0, which matches any
interface address. -V is required with the -c command:

-V 172.29.16.1
-W name
Identical to -V but takes a device name instead of its address:
-W ppp0
Options
-b
Bidirectional mode. The rule matches IP packets in both directions. This option is valid only with the -a, -i,
and -d commands.

-e
Extended output. Used with the -l command to also show the interface address and any rule options.
When listing firewall rules, also shows the packet and byte counters and the TOS (Type of Service)
masks. When used with -M, also shows information related to delta sequence numbers.

-k
Match TCP acknowledgment packets (i. e., only TCP packets with the ACK bit set). This option is
ignored for all other protocols and is valid only with the -a, -i, and -d commands.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (153 of 351) [15/ 05/ 2002 18: 03: 38] 210
210 Page 211 212
Linux Commands (Linux in a Nutshell, 3rd Edition)
-m

Accept masquerade packets for forwarding, making them appear to have originated from the local host.
Recognizes reverse packets and automatically demasquerades them, bypassing the forwarding firewall.
This option is valid only in forwarding firewall rules with policy accept. The kernel must have been
compiled with CONFIG_ IP_ MASQUERADE defined.

-n
Numeric output. Print IP addresses and port numbers in numeric format.
-o
Log packets that match this rule to the kernel log. This option is valid only with the -a, -i, and -d
commands. The kernel must have been compiled with CONFIG_ IP_ FIREWALL_ VERBOSE defined.

-r [port]
Redirect packets to a local socket, even if they were sent to a remote host. If port is 0 (the default), the
packet's destination port is used. This option is valid only in input firewall rules with policy accept. The
kernel must have been compiled with CONFIG_ IP_ TRANSPARENT_ PROXY defined.

-t andmask xormask
Specify masks used for modifying the TOS field in the IP header. When a packet is accepted (with or
without masquerading) by a firewall rule, its TOS field is bitwise ANDed with andmask, and the result is
bitwise XORed with xormask. The masks are specified as 8-bit hexadecimal values. This option is valid
only with the -a, -i, and -d commands and has no effect when used with accounting rules or with firewall
rules for rejecting or denying a packet.

-v
Verbose output. Print detailed information about the rule or packet to be added, deleted, or checked. This
option is valid only with the -a, -i, -d, and -c commands.

-x
Expand numbers. Display the exact value of the packet and byte counters, instead of a rounded value.
This option is valid only when the counters are being listed anyway (see also the -e option).

-y
Match TCP packets with the SYN bit set and the ACK bit cleared. This option is ignored for packets of
other protocols and is valid only with the -a, -i, and -d commands.

iptables iptables command [options]
System administration command. Configure netfilter filtering rules. In the 2.4 kernel, the ipchains firewall
capabilities are replaced with the netfilter kernel module. netfilter can be configured to work just like ipchains,
but it also comes with the module iptables, which is similar to ipchains but extensible. iptables rules consist of
some matching criteria and a target, a result to be applied if the packet matches the criteria. The rules are
organized into chains. You can use these rules to build a firewall, masquerade your local area network, or just
reject certain kinds of network connections.

There are three built-in tables for iptables, one for network filtering (filter), one for Network Address
Translation (nat), and the last for specialized packet alterations (mangle). Firewall rules are organized into
chains, ordered check lists of rules that the kernel works through looking for matches. The filter table has three
built-in chains: INPUT, OUTPUT, and FORWARD. The INPUT and OUTPUT chains handle packets
originating from or destined for the host system. The FORWARD chain handles mail just passing through the
host system. The nat table also has three built-in chains: PREROUTING, POSTROUTING, and OUTPUT.
mangle
has only two chains: PREROUTING and OUTPUT.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (154 of 351) [15/ 05/ 2002 18: 03: 38] 211
211 Page 212 213
Linux Commands (Linux in a Nutshell, 3rd Edition)
netfilter checks packets entering the system. After applying any PREROUTING rules it passes them to the
INPUT chain or to the FORWARD chain if the packet is just passing through. Upon leaving, the system
packets are passed to the OUTPUT chain and then on to any POSTROUTING rules. Each of these chains has a
default target, a policy, in case no match is found. User-defined chains can also be created and used as targets for
packets but do not have default policies. If no match can be found in a user-defined chain, the packet is returned
to the chain from which it was called and tested against the next rule in that chain.

iptables only changes the rules in the running kernel. When the system is powered off, all changes are lost. You
can use the iptables-save command to make a script you can run with iptables-restore to restore your firewall
settings. Such a script is often called at bootup. Many distributions will have an iptables initialization script that
uses the output from iptables-save.

Commands
iptables
is always invoked with one of the following commands:
-A chain rules, --append chain rules
Append new rules to chain.
-I chain number rules, --insert chain number rules
Insert rules into chain at the ordinal position given by number.
-D chain rules, --delete chain rules
Delete rules from chain. Rules can be specified by their ordinal number in the chain as well as by a
general rule description.

-R chain number rule, --replace chain number rule
Replace a rule in chain. The rule to be replaced is specified by its ordinal number.
-C chain rule, --check chain rules
Check how chain will handle a network packet that matches the given rule. The rule must describe the
source, destination, protocol, and interface of the packet to be constructed.

-L [chain], --list $PARAMETER
List the rules in chain or all chains if chain is not specified.
-F [chain], --flush chain
Remove all rules from chain or from all chains if chain is not specified.
-Z [chain], --zero chain
Zero the packet and byte counters in chain. If no chain is specified, all chains will be reset. When used
without specifying a chain and combined with the -L command, it lists the current counter values before
they are reset chain.

-N chain, --new-chain chain
Create a new chain. The chain's name must be unique. This is how user-defined chains are created.
-X [chain], --delete-chain chain
Delete the specified user-defined chain or all user-defined chains if no chain is specified.
-P chain target, --policy chain target

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (155 of 351) [15/ 05/ 2002 18: 03: 38] 212
212 Page 213 214
Linux Commands (Linux in a Nutshell, 3rd Edition)
Set the default policy for a built-in chain; the target itself cannot be a chain.
-E old-chain new-chain, --rename-chain old-chain new-chain
Rename old-chain to new-chain.
-h [icmp]
Print a brief help message. If the option icmp is given, print a list of valid ICMP types.
Targets
A target may be the name of a chain or one of the following special values.
ACCEPT
Let the packet through.
DROP
Drop the packet.
QUEUE
Send packets to the user space for processing.
RETURN
Stop traversing the current chain and return to the point in the previous chain from which this one was
called. If RETURN is the target of a rule in a built-in chain, the built-in chain's default policy is applied.

Rule specification parameters
These options are used to create rules for use with the preceding commands. Rules consist of some matching
criteria and usually a target to jump to (-j) if the match is made. Many of the parameters for these matching rules
can be expressed as a negative with an exclamation point (!) meaning "not." Those rules will match everything
except the given parameter.

-p [!] name, --protocol [!]$ PARAMETER
Match packets of protocol name. The value of name can be given as a name or number as found in the
file /etc/ protocols. The most common values are tcp, udp, icmp, or the special value all. The number 0 is
equivalent to all and this is the default value when this option is not used. If there are extended matching
rules associated with the specified protocol, they will be loaded automatically. You need not use the -m
option to load them.

-s [!] address[/ mask] [!] [port], --source [!] address[/ mask] [!] [port]
Match packets with the source address. The address may be supplied as a hostname, a network name, or
an IP address. The optional mask is the netmask to use and may be supplied either in the traditional form
(e. g., /255.255.255.0) or in the modern form (e. g., /24).

-d [!] address[/ mask] [!] [port], --destination [!] address[/ mask] [port]
Match packets from the destination address. See the description of -s for the syntax of this option.
-j target, --jump target
Jump to a special target or a user-defined chain. If this option is not specified for a rule, matching the rule
only increases the rule's counters, and the packet is tested against the next rule.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (156 of 351) [15/ 05/ 2002 18: 03: 38] 213
213 Page 214 215
Linux Commands (Linux in a Nutshell, 3rd Edition)
-i [!] name[+], --in-interface name[+]
Match packets being received from interface name. name is the network interface used by your system
(e. g., eth0 or ppp0). A + can be used as a wildcard, so ppp+ would match any interface name beginning
with ppp

-o [!] name[+], --out-interface name[+]
Match packets being sent from interface name. See the description of -i for the syntax for name.
[!] -f, [!]--fragment $PARAMETER
The rule applies only to the second or further fragments of a fragmented packet.
Options
-v, --verbose
Verbose mode.
-n, --numeric
Print all IP address and port numbers in numeric form. By default, text names are displayed when
possible.

-x, --exact
Expand all numbers in a listing (-L). Display the exact value of the packet and byte counters instead of
rounded figures.

-m module, --match
Explicitly load matching rule extensions associated with module. See the following section, "Match
Extensions."

-h [icmp], --help [icmp]
Print help message. If icmp is specified, a list of valid ICMP type names will be printed. -h can also be
used with the -m option to get help on an extension module.

--line-numbers
Used with the -L command. Add the line number to the beginning of each rule in a listing, indicating its
position in the chain.

Match extensions
Several kernel modules come with netfilter to extend matching capabilities of rules. Those associated with
particular protocols are loaded automatically when the -p option is used to specify the protocol. Others need to
be loaded explicitly with the -m option.

tcp
Loaded when -p tcp is the only protocol specified.
--source-port [!] [port][: port], --sport [!] [port][: port]
Match the specified source ports. Using the colon specifies an inclusive range of services to
match. If the first port is omitted, 0 is the default. If the second port is omitted, 65535 is the
default. You can also use a dash instead of a colon to specify the range.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (157 of 351) [15/ 05/ 2002 18: 03: 38] 214
214 Page 215 216
Linux Commands (Linux in a Nutshell, 3rd Edition)
--destination-port [!] [port][: port], --dport [!] [port][: port]

Match the specified destination ports. The syntax is the same as for --source-port.
--tcp-flags [!]
mask comp
Match the packets with the TCP flags specified by mask and comp. mask is a comma-separated list
of flags that should be examined. comp is a comma-separated list of flags that must be set for the
rule to match. Valid flags are SYN, ACK, FIN, RST, URG, PSH, ALL, and NONE.

[!] --syn
Match packets with the SYN bit set and the ACK and FIN bits cleared. These are packets that
request TCP connections; blocking them prevents incoming connections. Shorthand for --tcp-flags
SYN, RST, ACK SYN.

udp
Loaded when -p udp is the only protocol specified.
--source-port [!] [port][: port], --sport [!] [port][: port]
Match the specified source ports. The syntax is the same as for the --source-port option of the
TCP extension.

--destination-port [!] [port][: port], --dport [!] [port][: port]
Match the specified destination ports. The syntax is the same as for --source-port option of the
TCP extension.

icmp
Loaded when -p icmp is the only protocol specified.
--icmp-type [!] type
Match the specified icmp type. type may be a numeric ICMP type or one of the ICMP type names
shown by the command iptables -p icmp -h.

mac
Loaded explicitly with the -m option.
--mac-source [!] address
Match the source address that transmitted the packet. address must be given in colon-separated
hexbyte notation (for example, --mac-source 00: 60: 08: 91: CC: B7.

limit
Loaded explicitly with the -m option. The limit extensions are used to limit the number of packets
matched. This is useful when combined with the LOG target. Rules using this extension match until the
specified limit is reached.

--limit rate
Match addresses at the given rate. rate is specified as a number with an optional /second, /minute,
hour,
or /day suffix. When this option is not set, the default is '3/ hour'.

--limit-burst [number]

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (158 of 351) [15/ 05/ 2002 18: 03: 38] 215
215 Page 216 217
Linux Commands (Linux in a Nutshell, 3rd Edition)
Set the maximum number of packets to match in a burst. Once the number has been reached, no
more packets are matched for this rule until the number has recharged. It recharges at the rate set
by the --limit option. When not specified, the default is 5.

multiport
Loaded explicitly with the -m option. The multiport extensions match sets of source or destination ports.
These rules can be used only in conjunction with -p tcp and -p udp. Up to 15 ports can be specified in a
comma-separated list.

--source-port [ports]
Match the given source ports.
--destination-port [ports]
Match the given destination ports.
--port [ports]
Match if the packet has the same source and destination port and that port is one of the given
ports.

mark
Loaded explicitly with the -m option. This module works with the MARK extension target:
--mark value[/ mask]
Match the given unsigned mark value. If a mask is specified, it is logically ANDed with the mark
before comparison.

owner
Loaded explicitly with the -m option. The owner extensions match a local packet's creator's user, group
process, and session IDs. This makes sense only as a part of the OUTPUT chain.

--uid-owner userid
Match packets created by a process owned by userid.
--gid-owner groupid
Match packets created by a process owned by groupid.
--pid-owner processid
Match packets created by process ID processid.
--sid-owner sessionid
Match packets created by a process in the session sessionid.
state
Loaded explicitly with the -m option. This module matches the connection state of a packet.
--state states
Match the packet if it has one of the states in the comma-separated list states. Valid states are
INVALID, ESTABLISHED, NEW, and RELATED.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (159 of 351) [15/ 05/ 2002 18: 03: 38] 216
216 Page 217 218
Linux Commands (Linux in a Nutshell, 3rd Edition)
tos
Loaded explicitly with the -m option. This module matches the Type of Service field in a packet's header.
--tos value
Match the packet if it has a TOS of value. value can be a numeric value or a Type of Service
name. iptables -m tos -h will give you a list of valid TOS values.

Target extensions
Extension targets are optional additional targets supported by separate kernel modules. They have their own
associated options.

LOG
Log the packet's information in the system log.
--log-level level
Set the syslog level by name or number (as defined by syslog. conf).
--log-prefix prefix
Begin each log entry with the string prefix. The prefix string may be up to 30 characters long.
--log-tcp-sequence
Log the TCP sequence numbers. This is a security risk if your log is readable by users.
--log-tcp-options
Log options from the TCP packet header.
--log-ip-options
Log options from the IP packet header.
MARK
Used to mark packets with an unsigned integer value you can use later with the mark matching
extension. Valid only with the mangle table.

--set-mark value
Mark the packet with value.
REJECT
Drop the packet and, if appropriate, send an ICMP message back to the sender indicating the packet was
dropped. If the packet was an ICMP error message, an unknown ICMP type, or a nonhead fragment, or if
too many ICMP messages have already been sent to this address, no message is sent.

--reject-with type
Send the specified ICMP message type. Valid values are icmp-net-unreachable, icmp-host-
unreachable, icmp-port-unreachable,
or icmp-proto-unreachable. If the packet was an ICMP
ping packet, type may also be echo-reply.

TOS

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (160 of 351) [15/ 05/ 2002 18: 03: 38] 217
217 Page 218 219
Linux Commands (Linux in a Nutshell, 3rd Edition)
Set the Type of Service field in the IP header. TOS is a valid target only for rules in the mangle table.
--set-tos value
Set the TOS field to value. You can specify this as an 8-bit value or as a TOS name. You can get a
list of valid names using iptables -j TOS -h.

SNAT
Modify the source address of the packet and all future packets in the current connection. SNAT is valid
only as a part of the POSTROUTING chain in the nat table.

--to-source address[-address][ port-port]
Specify the new source address or range of addresses. If a tcp or udp protocol has been specified
with the -p option, source ports may also be specified. If none is specified, map the new source to
the same port if possible. If not, map ports below 512 to other ports below 512, those between 512
and 1024 to other ports below 1024, and ports above 1024 to other ports above 1024.

DNAT
Modify the destination address of the packet and all future packets in the current connection. DNAT is
valid only as a part of the POSTROUTING chain in the nat table.

--to-destination address[-address][ port-port]
Specify the new destination address or range of addresses. The arguments for this option are the
same as the --to-source argument for the SNAT extension target.

MASQUERADE
Masquerade the packet so it appears that it originated from the current system. Reverse packets from
masqueraded connections are unmasqueraded automatically. This is a legal target only for chains in the
nat table that handle incoming packets and should be used only with dynamic IP addresses (like dial-up.)
For static addresses use DNAT.

--to-ports port[-port]
Specify the port or range of ports to use when masquerading. This option is only valid if a tcp or
udp protocol has been specified with the -p option. If this option is not used, the masqueraded
packet's port will not be changed.

REDIRECT [--to-port port]
Redirect the packet to a local port. This is useful for creating transparent proxies.
--to-ports port[-port]
Specify the port or range of ports on the local system to which the packet should be redirected.
This option is valid only if a tcp or udp protocol has been specified with the -p option. If this
option is not used, the redirected packet's port will not be changed.

iptables-restore iptables-restore [file]
System administration command. Restore firewall rules. iptables-restore takes commands generated by iptables-save
and uses them to restore the firewall rules for each chain. Often used by initialization scripts to restore
firewall settings on boot. file is the name of a file whose contents were generated by iptables-save. If not
specified, the command takes its input from stdin. This command was not completed at the time this book went
to print. There may be options not listed here.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (161 of 351) [15/ 05/ 2002 18: 03: 38] 218
218 Page 219 220
Linux Commands (Linux in a Nutshell, 3rd Edition)
iptables-save iptables-save [chain]
System administration command. Print the IP firewall rules currently stored in the kernel to stdout. If no chain is
given, all chains will be printed. Output may be redirected to a file that can later be used by iptables-restore to
restore the firewall. This command was not completed at the time this book went to print. There may be options
not listed here.

ispell ispell [options] [files]
Compare the words of one or more named files with the system dictionary. Display unrecognized words on the
top of the screen, accompanied by possible correct spellings, and allow editing, via a series of commands.

Options
-b
Back up original file in filename. bak.
-d
file
Search file instead of standard dictionary file.
-m
Suggest different root/ affix combinations.
-n
Expect nroff or troff input file.
-p file
Search file instead of personal dictionary file.
-t
Expect TeX or LaTeX input file.
-w chars
Consider chars to be legal, in addition to a-z and A-Z.
-x
Do not back up original file.
-B
Search for missing blanks (resulting in concatenated words) in addition to ordinary misspellings.
-C
Do not produce error messages in response to concatenated words.
-L number
Show number lines of context.
-M

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (162 of 351) [15/ 05/ 2002 18: 03: 38] 219
219 Page 220 221
Linux Commands (Linux in a Nutshell, 3rd Edition)
List interactive commands at bottom of screen.

-N
Suppress printing of interactive commands.
-P
Do not attempt to suggest more root/ affix combinations.
-S
Sort suggested replacements by likelihood that each is correct.
-T type
Expect all files to be formatted by type.
-W n
Never consider words that are n characters or less to be misspelled.
-V
Use hat notation (^ L) to display control characters and M-to display characters with the high bit set.
Interactive Commands
?
Display help screen.
space character
Accept the word in this instance.
number
Replace with suggested word that corresponds to number.
!command
Invoke shell and execute command in it. Prompt before exiting.
a
Accept word as correctly spelled, but do not add it to personal dictionary.
i
Accept word and add it (capitalized, if so in file) to personal dictionary.
l
Search system dictionary for words.
q
Exit without saving.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (163 of 351) [15/ 05/ 2002 18: 03: 38] 220
220 Page 221 222
Linux Commands (Linux in a Nutshell, 3rd Edition)
r

Replace word.
u
Accept word and add lowercase version of it to personal dictionary.
x
Skip to the next file, saving changes.
^L
Redraw screen.
^Z
Suspend ispell.

join join [options] file1 file2
Join lines of two sorted files by matching on a common field. If either file1 or file2 is -, read from standard input.
Options
-a
filenum
Print a line for each unpairable line in file filenum, in addition to the normal output.
-e string
Replace missing input fields with string.
-i, --ignore-case
Ignore case differences when comparing keys.
-1 fieldnum1
Join field in file1 is fieldnum1. Default is the first field.
-2 fieldnum2
Join field in file2 is fieldnum2. Default is the first field.
-o fieldlist
Order the output fields according to fieldlist, where each entry in the list is in the form filenum. fieldnum.
Entries are separated by commas or blanks.

-t char
Specifies the field-separator character (default is whitespace ).
-v filenum
Print only unpairable lines from file filenum.
--help

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (164 of 351) [15/ 05/ 2002 18: 03: 38] 221
221 Page 222 223
Linux Commands (Linux in a Nutshell, 3rd Edition)
Print help message and then exit.
--version
Print the version number and then exit.

kbd_ mode kbd_ mode [option]
Print or set the current keyboard mode, which may be RAW, MEDIUMRAW, or XLATE.
Options
-a
Set mode to XLATE (ASCII mode).
-k
Set mode to MEDIUMRAW (keycode mode).
-s
Set mode to RAW (scancode mode).
-u
Set mode to UNICODE (UTF-8 mode).

kbdrate kbdrate [options]
System administration command. Control the rate at which the keyboard repeats characters, as well as its delay
time. Using this command without options sets a repeat rate of 10.9 characters per second; the default delay is
250 milliseconds. When Linux boots, however, it sets the keyboard rate to 30 characters per second.

Options
-s
Suppress printing of messages.
-r rate
Specify the repeat rate, which must be one of the following numbers (all in characters per second): 2.0,
2.1, 2.3, 2.5, 2.7, 3.0, 3.3, 3.7, 4.0, 4.3, 4.6, 5.0, 5.5, 6.0, 6.7, 7.5, 8.0, 8.6, 9.2, 10.0, 10.9, 12.0, 13.3,
15.0, 16.0, 17.1, 18.5, 20.0, 21.8, 24.0, 26.7, or 30.0.

-d delay
Specify the delay, which must be one of the following (in milliseconds): 250, 500, 750, or 1000.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (165 of 351) [15/ 05/ 2002 18: 03: 38] 222
222 Page 223 224
Linux Commands (Linux in a Nutshell, 3rd Edition)
kerneld kerneld
System administration command. kerneld automatically loads kernel modules when they are needed, thereby
reducing kernel memory usage from unused loaded modules and replacing manual loading of modules with
modprobe or insmod. If a module has not been used for more than one minute, kerneld automatically removes
it.

kerneld comes with the modules-utilities package and is set up during kernel configuration; its functionality is
provided by interactions between that package and the kernel. kerneld is aware of most common types of
modules. When more than one possible module can be used for a device (such as a network driver), kerneld
uses the configuration file /etc/ conf. modules, which contains path information and aliases for all loadable
modules, to determine the correct module choice.

kerneld can also be used to implement dial-on-demand networking, such as SLIP or PPP connections. The
network connection request can be processed by kerneld to load the proper modules and set up the connection to
the server.

kill kill [option] IDs
This is the /bin/ kill command; there is also a shell command of the same name. Send a signal to terminate one or
more process IDs. You must own the process or be a privileged user. If no signal is specified, TERM is sent.

Options
-l
List all signals.
-p
Print the process ID of the named process, but don't send it a signal. To use this option, specify the full
path (e. g., /bin/ kill -p).

-signal
The signal number (from /usr/ include/ sys/ signal. h) or name (from kill -l). With a signal number of 9
(HUP), the kill cannot be caught by the process; use this to kill a process that a plain kill doesn't
terminate. The default is TERM.

killall killall [options] names
Kill processes by command name. If more than one process is running the specified command, kill all of them.
Treat command names that contain a / as files; kill all processes that are executing that file.

Options
-signal
Send signal to process (default is TERM). signal may be a name or number.
-e
Require an exact match to kill very long names (i. e., longer than 15 characters). Normally, killall kills
everything that matches within the first 15 characters. With -e, such entries are skipped. (Use -v to print a
message for each skipped entry.)

-g
Kill the process group to which the process belongs.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (166 of 351) [15/ 05/ 2002 18: 03: 38] 223
223 Page 224 225
Linux Commands (Linux in a Nutshell, 3rd Edition)
-i

Prompt for confirmation before killing processes.
-l
List known signal names.
-q
Quiet; do not complain of processes not killed.
-v
Verbose: after killing process, report success and process ID.
-V
Print version information.
-w
Wait for all killed processes to die. Note that killall may wait forever if the signal was ignored or had no
effect, or if the process stays in zombie state.

killall5 killall5
The System V equivalent of killall, this command kills all processes except those on which it depends.

klogd klogd [options]
System administration command. Control which kernel messages are displayed on the console; prioritize all
messages, and log them through syslogd. On many operating systems, syslogd performs all the work of klogd,
but on Linux the features are separated. Kernel messages are gleaned from the /proc filesystem and from system
calls to syslogd. By default, no messages appear on the console. Messages are sorted into 8 levels, 0-7, and the
level number is prepended to each message.

Priority levels
0
Emergency situation (KERN_ EMERG).
1
A crucial error has occurred (KERN_ ALERT).
2
A serious error has occurred (KERN_ CRIT).
3
An error has occurred (KERN_ ERR).
4
A warning message (KERN_ WARNING).

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (167 of 351) [15/ 05/ 2002 18: 03: 38] 224
224 Page 225 226
Linux Commands (Linux in a Nutshell, 3rd Edition)
5

The situation is normal but should be checked (KERN_ NOTICE).
6
Information only (KERN_ INFO).
7
Debugging messages (KERN_ DEBUG).
Options
-c
level
Print all messages of a higher priority (lower number) than level to the console.
-d
Debugging mode.
-f file
Print all messages to file; suppress normal logging.
-k file
Use file as source of kernel symbols.
-n
Avoid autobackgrounding. This is needed when klogd is started from init.
-o
One-shot mode. Prioritize and log all current messages, then immediately exit.
-s
Suppress reading of messages from the /proc filesystem.
Files
/usr/ include/ linux/ kernel. h, /usr/ include/ sys/ syslog. h
Sources for definitions of each logging level
/proc/ kmsg
A file examined by klogd for messages
/var/ run/ klogd. pid
klogd's process ID

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (168 of 351) [15/ 05/ 2002 18: 03: 38] 225
225 Page 226 227
Linux Commands (Linux in a Nutshell, 3rd Edition)
ksyms ksyms [options]
System administration command. Print a list of all exported kernel symbols (name, address, and defining
module, if applicable).

Options
-a
Include symbols from unloaded modules.
-h
Suppress header message.
-m
Include starting address and size. Useful only for symbols in loaded modules.
File
/proc/ ksyms
Another source of the same information

lastlog lastlog [options]
System administration command. Print the last login times for system accounts. Login information is read from
the file /var/ log/ lastlog.

Options
-tn
Print only logins more recent than n days ago.
-uname
Print only login information for user name.

ld ld [options] objfiles
Combine several objfiles, in the specified order, into a single executable object module (a. out by default). ld is
the link editor and is often invoked automatically by compiler commands.

Options
-c
file
Consult file for commands.
-d, -dc, -dp
Force the assignment of space to common symbols.
-defsym symbol= expression
Create the global symbol with the value expression.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (169 of 351) [15/ 05/ 2002 18: 03: 38] 226
226 Page 227 228
Linux Commands (Linux in a Nutshell, 3rd Edition)
-e symbol

Set symbol as the address of the output file's entry point.
-i
Produce a linkable output file; attempt to set its magic number to OMAGIC.
-larch
Include the archive file arch in the list of files to link.
-m linker
Emulate linker.
-n
Make text read-only; attempt to set NMAGIC.
-noinhibit-exec
Produce output file even if errors are encountered.
-o output
Place output in output, instead of a. out.
-oformat format
Specify output format.
-r
Produce a linkable output file; attempt to set its magic number to OMAGIC.
-s
Do not include any symbol information in output.
-shared
Create a shared library.
-sort-common
Do not sort global common symbols by size.
-t
Announce each input file's name as it is processed.
-u symbol
Force symbol to be undefined.
-v, --version
Show version number.
--verbose
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (170 of 351) [15/ 05/ 2002 18: 03: 38] 227
227 Page 228 229
Linux Commands (Linux in a Nutshell, 3rd Edition)
Print information about ld; print the names of input files while attempting to open them.
-warn-common
Warn when encountering common symbols combined with other constructs.
-warn-once
Provide only one warning per undefined symbol.
-x
With -s or -S, delete all local symbols that begin with L.
-L
dir
Search directory dir before standard search directories (this option must precede the -l option that
searches that directory).

-M
Display a link map on standard out.
-Map file
Print a link map to file.
-N
Allow reading of and writing to both data and text; mark ouput if it supports Unix magic numbers; do not
page-align data.

-R file
Obtain symbol names and addresses from file, but suppress relocation of file and its inclusion in output.
-S
Do not include debugger symbol information in output.
-Tbss address
Begin bss segment of output at address.
-Tdata address
Begin data segment of output at address.
-Ttext address
Begin text segment of output at address.
-Ur
Synonymous with -r except when linking C++ programs, where it resolves constructor references.
-X
With -s or -S, delete local symbols beginning with L.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (171 of 351) [15/ 05/ 2002 18: 03: 38] 228
228 Page 229 230
Linux Commands (Linux in a Nutshell, 3rd Edition)
-V

Show version number and emulation linkers for -m option.

ldconfig ldconfig [options] directories
System administration command. Examine the libraries in the given directories, /etc/ ld. so. conf, /usr/ lib, and /lib;
update links and cache where necessary. Usually run in startup files or after the installation of new shared
libraries.

Options
-D
Debug. Suppress all normal operations.
-l
Library mode. Expect libraries as arguments, not directories. Manually link specified libraries.
-n
Suppress examination of /usr/ lib and /lib and reading of /etc/ ld. so. conf; do not cache.
-N
Do not cache; only link.
-p
Print all directories and candidate libraries in the cache. Expects no arguments.
-v
Verbose. Include version number, and announce each directory as it is scanned and links as they are
created.

-X
Do not link; only rebuild cache.
Files
/lib/ ld. so
Linker and loader.
/etc/ ld. so. conf
List of directories that contain libraries.
/etc/ ld. so. cache
List of the libraries found in those libraries mentioned in /etc/ ld. so. conf.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (172 of 351) [15/ 05/ 2002 18: 03: 38] 229
229 Page 230 231
Linux Commands (Linux in a Nutshell, 3rd Edition)
ldd ldd [options] programs
Display a list of the shared libraries each program requires.
Options
-v
Display ldd's version.
-V
Display the linker's version.

less less [options] [filename]
less is a program for paging through files or other output. It was written in reaction to the perceived
primitiveness of more (hence its name). Some commands may be preceded by a number.

Options
-[ z]
num
Set number of lines to scroll to num. Default is one screenful. A negative num sets the number to num
lines less than the current number.

+[+] command
Run command on startup. If command is a number, jump to that line. The option ++ applies this
command to each file in the command-line list.

-?
Print help screen. Ignore all other options; do not page through file.
-a
When searching, begin after last line displayed. (Default is to search from second line displayed.)
-bbuffers
Use buffers buffers for each file (default is 10). Buffers are 1 kilobyte in size.
-c
Redraw screen from top, not bottom.
-d
Suppress dumb-terminal error messages.
-e
Automatically exit after reaching EOF twice.
-f
Force opening of directories and devices; do not print warning when opening binaries.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (173 of 351) [15/ 05/ 2002 18: 03: 38] 230
230 Page 231 232
Linux Commands (Linux in a Nutshell, 3rd Edition)
-g

Highlight only string found by past search command, not all matching strings.
-hnum
Never scroll backward more than num lines at once.
-i
Make searches case-insensitive, unless the search string contains uppercase letters.
-jnum
Position target line on line num of screen. Target line can be the result of a search or a jump. Count lines
beginning from 1 (top line). A negative num is counted back from bottom of screen.

-kfile
Read file to define special key bindings.
-m
Display more-like prompt, including percent of file read.
-n
Do not calculate line numbers. Affects -m and -M options and = and v commands (disables passing of
line number to editor).

-ofile
When input is from a pipe, copy output to file as well as to screen. (Prompt for overwrite authority if file
exists.)

-ppattern
At startup, search for first occurrence of pattern.
m
Set medium prompt (specified by -m).
M
Set long prompt (specified by -M).
=
Set message printed by = command.
-q
Disable ringing of bell on attempts to scroll past EOF or before beginning of file. Attempt to use visual
bell instead.

-r
Display "raw" control characters, instead of using ^x notation. Sometimes leads to display problems.
-s

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (174 of 351) [15/ 05/ 2002 18: 03: 38] 231
231 Page 232 233
Linux Commands (Linux in a Nutshell, 3rd Edition)
Print successive blank lines as one line.
-ttag
Edit file containing tag. Consult ./ tags (constructed by ctags).
-u
Treat backspaces and carriage returns as printable input.
-w
Print lines after EOF as blanks instead of tildes (~).
-xn
Set tab stops to every n characters. Default is 8.
-yn
Never scroll forward more than n lines at once.
-B
Do not automatically allocate buffers for data read from a pipe. If -b specifies a number of buffers,
allocate that many. If necessary, allow information from previous screens to be lost.

-C
Redraw screen by clearing it and then redrawing from top.
-E
Automatically exit after reaching EOF once.
-G
Never highlight matching search strings.
-I
Make searches case-insensitive, even when the search string contains uppercase letters.
-M
Prompt more verbosely than with -m, including percentage, line number, and total lines.
-N
Print line number before each line.
-Ofile
Similar to -o but does not prompt when overwriting file.
-P[ m, M,=] prompt
Set prompt (as defined by -m, -M, or =). Default is short prompt (-m).
-Q

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (175 of 351) [15/ 05/ 2002 18: 03: 38] 232
232 Page 233 234
Linux Commands (Linux in a Nutshell, 3rd Edition)
Never ring terminal bell.
-S
Cut, do not fold, long lines.
-Tfile
With the -t option or :t command, read file instead of ./ tags.
-U
Treat backspaces and carriage returns as control characters.
-X
Do not send initialization and deinitialization strings from termcap to terminal.
Commands
Many commands can be preceded by a numeric argument, referred to as number in the command descriptions.
SPACE, ^V, f, ^F
Scroll forward the default number of lines (usually one windowful).
z
Similar to SPACE but allows the number of lines to be specified, in which case it resets the default to that
number.

RETURN, ^N, e, ^E, j, ^J
Scroll forward. Default is one line. Display all lines, even if the default is more lines than the screen size.
d, ^D
Scroll forward. Default is one-half the screen size. The number of lines may be specified, in which case
the default is reset.

b, ^B, ESC-v
Scroll backward. Default is one windowful.
w
Like b but allows the number of lines to be specified, in which case it resets the default to that number.
y, ^Y, ^P, k, ^K
Scroll backward. Default is one line. Display all lines, even if the default is more lines than the screen
size.

u, ^U
Scroll backward. Default is one-half the screen size. The number of lines may be specified, in which case
the default is reset.

r, ^R, ^L

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (176 of 351) [15/ 05/ 2002 18: 03: 38] 233
233 Page 234 235
Linux Commands (Linux in a Nutshell, 3rd Edition)
Redraw screen.

R
Like r but discard buffered input.
F
Scroll forward. When an EOF is reached, continue trying to find more output, behaving similarly to tail -f.

g, <, ESC-<
Skip to a line. Default is 1.
G, >, ESC->
Skip to a line. Default is the last one.
p, %
Skip to a position number percent of the way into the file.
{
If the top line on the screen includes a {, find its matching }. If the top line contains multiple {s, use
number to determine which one to use in finding a match.

}
If the bottom line on the screen includes a }, find its matching {. If the bottom line contains multiple }s,
use number to determine which one to use in finding a match.

(
If the top line on the screen includes a (, find its matching ). If the top line contains multiple (s, use
number to determine which one to use in finding a match.

)
If the bottom line on the screen includes a ), find its matching (. If the bottom line contains multiple )s,
use number to determine which one to use in finding a match.

[
If the top line on the screen includes a [, find its matching ]. If the top line contains multiple [s, use
number to determine which one to use in finding a match.

]
If the bottom line on the screen includes a ], find its matching [. If the bottom line contains multiple ]s,
use number to determine which one to use in finding a match.

ESC-^ F
Behave like { but prompt for two characters, which it substitutes for { and } in its search.
ESC-^ B
Behave like } but prompt for two characters, which it substitutes for { and } in its search.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (177 of 351) [15/ 05/ 2002 18: 03: 38] 234
234 Page 235 236
Linux Commands (Linux in a Nutshell, 3rd Edition)
m

Prompt for a lowercase letter and then use that letter to mark the current position.
'
Prompt for a lowercase letter and then go to the position marked by that letter. There are some special
characters:

'
Return to position before last "large movement."
^
Beginning of file.
$
End of file.
^X^ X
Same as '.
/pattern
Find next occurrence of pattern, starting at second line displayed. Some special characters can be entered
before pattern:

!
Find lines that do not contain pattern.
*
If current file does not contain pattern, continue through the rest of the files in the command line
list.

@
Search from the first line in the first file specified on the command line, no matter what the screen
currently displays.

?pattern
Search backward, beginning at the line before the top line. Treats !, *, and @ as special characters when
they begin pattern, as / does.

ESC-/ pattern
Same as /*.
ESC-? pattern
Same as ?*.
n
Repeat last pattern search.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (178 of 351) [15/ 05/ 2002 18: 03: 38] 235
235 Page 236 237
Linux Commands (Linux in a Nutshell, 3rd Edition)
N

Repeat last pattern search, in the reverse direction.
ESC-n
Repeat previous search command but as though it were prefaced by *.
ESC-N
Repeat previous search command but as though it were prefaced by * and in the opposite direction.
ESC-u
Toggle search highlighting.
:e [filename]
Read in filename and insert it into the command-line list of filenames. Without filename, reread the
current file. filename may contain special characters:

%
Name of current file
#
Name of previous file
^X^ V, E
Same as :e.
:n
Read in next file in command-line list.
:p
Read in previous file in command-line list.
:x
Read in first file in command-line list.
:f, =, ^G
Print filename, position in command-line list, line number on top of window, total lines, byte number,
and total bytes.

-Expects
to be followed by a command-line option letter. Toggles the value of that option or, if
appropriate, prompts for its new value.

-+
Expects to be followed by a command-line option letter. Resets that option to its default.
--

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (179 of 351) [15/ 05/ 2002 18: 03: 38] 236
236 Page 237 238
Linux Commands (Linux in a Nutshell, 3rd Edition)
Expects to be followed by a command-line option letter. Resets that option to the opposite of its default,
where the opposite can be determined.

_
Expects to be followed by a command-line option letter. Display that option's current setting.
+command
Execute command each time a new file is read in.
q, :q, :Q, ZZ
Exit.
v
Not valid for all versions. Invoke editor specified by $VISUAL or $EDITOR, or vi if neither is set.
! [command]
Not valid for all versions. Invoke $SHELL or sh. If command is given, run it and then exit. Special
characters:

%
Name of current file
#
Name of previous file
!!
Last shell command
| mark-letter command
Not valid for all versions. Pipe fragment of file (from first line on screen to mark-letter) to command.
mark-letter
may also be:

^
Beginning of file.
$
End of file.
., newline
Current screen is piped.
Prompts
The prompt interprets certain sequences specially. Those beginning with % are always evaluated. Those
beginning with ? are evaluated if certain conditions are true. Some prompts determine the position of particular
lines on the screen. These sequences require that a method of determining that line be specified. See the -P
option and the manpage for more information.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (180 of 351) [15/ 05/ 2002 18: 03: 38] 237
237 Page 238 239
Linux Commands (Linux in a Nutshell, 3rd Edition)
ln ln [options] sourcename [destname]
ln [options] sourcenames destdirectory
Create pseudonyms (links) for files, allowing them to be accessed by different names. In the first form, link
sourcename to destname, where destname is usually a new filename, or (by default) the current directory. If
destname is an existing file, it is overwritten; if destname is an existing directory, a link named sourcename is
created in that directory. In the second form, create links in destdirectory, each link having the same name as the
file specified.

Options
-b, --backup
Back up files before removing the originals.
-d, -F, --directory
Allow hard links to directories. Available to privileged users.
-f, --force
Force the link (don't prompt for overwrite permission).
--help
Print a help message and then exit.
-i, --interactive
Prompt for permission before removing files.
-n, --no-dereference
Replace symbolic links to directories instead of dereferencing them. --force is useful with this option.
-s, --symbolic
Create a symbolic link. This lets you link across filesystems and also see the name of the link when you
run ls -l (otherwise, there's no way to know the name that a file is linked to).

-S suffix, --suffix suffix
Append suffix to files when making backups, instead of the default ~.
-v, --verbose
Verbose mode.
--version
Print version information and then exit.
-V, --version-control value
Control the types of backups made. The acceptable values for version-control are:
t, numbered
Numbered.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (181 of 351) [15/ 05/ 2002 18: 03: 38] 238
238 Page 239 240
Linux Commands (Linux in a Nutshell, 3rd Edition)
nil, existing
Simple (~) unless a numbered backup exists; then make a numbered backup.
never, simple
Simple.

locate locate [options] pattern
Search database( s) of filenames and print matches. *, ?, [, and ] are treated specially; / and . are not. Matches
include all files that contain pattern, unless pattern includes metacharacters, in which case locate requires an
exact match.

Options
-d
path, --database= path
Search databases in path. path must be a colon-separated list.
-h, --help
Print a help message and then exit.
--version
Print version information and then exit.

lockfile lockfile [options] filenames
Create semaphore file( s), used to limit access to a file. When lockfile fails to create some of the specified files, it
pauses for 8 seconds and retries the last one on which it failed. The command processes flags as they are
encountered (i. e., a flag that is specified after a file will not affect that file).

Options
-sleeptime
Time lockfile waits before retrying after a failed creation attempt. Default is 8 seconds.
-!
Invert return value. Useful in shell scripts.
-l lockout_ time
Time (in seconds) after a lockfile was last modified at which it will be removed by force. See also -s.
-ml, -mu
If the permissions on the system mail spool directory allow it or if lockfile is suitably setgid, it can lock
and unlock your system mailbox with the options -ml and -mu, respectively.

-r retries
Stop trying to create files after retries retries. The default is -1 (never stop trying). When giving up,
remove all created files.

-s suspend_ time

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (182 of 351) [15/ 05/ 2002 18: 03: 38] 239
239 Page 240 241
Linux Commands (Linux in a Nutshell, 3rd Edition)
After a lockfile has been removed by force (see -l), a suspension of 16 seconds takes place by default.
(This is intended to prevent the inadvertent immediate removal of any lockfile newly created by another
program.) Use -s to change the default 16 seconds.

logger logger [options] [message...]
TCP/ IP command. Add entries to the system log (via syslogd). A message can be given on the command line, or
standard input is logged.

Options
-f
file
Read message from file.
-i
Include the process ID of the logger process.
-p pri
Enter message with the specified priority pri. Default is user. notice.
-t
tag
Mark every line in the log with the specified tag.

login login [name | option]
Log in to the system. login asks for a username (name can be supplied on the command line) and password (if
appropriate).

If successful, login updates accounting files, sets various environment variables, notifies users if they have mail,
and executes startup shell files.

Only the root user can log in when /etc/ nologin exists. That file is displayed before the connection is terminated.
Furthermore, root may connect only on a tty that is listed in /etc/ securetty. If ~/. hushlogin exists, execute a quiet
login. If /var/ adm/ lastlog exists, print the time of the last login.

Options
-f
Suppress second login authentication.
-h host
Specify name of remote host. Normally used by servers, not humans; may be used only by root.
-p
Preserve previous environment.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (183 of 351) [15/ 05/ 2002 18: 03: 38] 240
240 Page 241 242
Linux Commands (Linux in a Nutshell, 3rd Edition)
logname logname [option]
Consult /var/ run/ utmp for user's login name. If found, print it; otherwise, exit with an error message.
Options
--help
Print a help message and then exit.
--version
Print version information and then exit.

logrotate logrotate [options] config_ files
System administration command. Manipulate log files according to commands given in config_ files.
Options
-d
Debug mode. No changes will be made to log files.
-s, --state file
Save state information in file. The default is /var/ lib/ logrotate. status.
--usage
Usage version and copyright information.
Commands
compress
Compress old versions of log files with gzip.
copytruncate
Copy log file, then truncate it in place. For use with programs whose logging cannot be temporarily
halted.

create [permissions] [owner] [group]
After rotation, re-create log file with the specified permissions, owner, and group. permissions must be in
octal. If any of these parameters is missing, the log file's original attributes will be used.

daily
Rotate log files every day.
delaycompress
Don't compress log file until the next rotation.
errors address
Mail any errors to the given address.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (184 of 351) [15/ 05/ 2002 18: 03: 38] 241
241 Page 242 243
Linux Commands (Linux in a Nutshell, 3rd Edition)
endscript

End a postrotate or prerotate script.
ifempty
Rotate log file even if it is empty. Overrides the default notifempty option.
include file
Read the file into current file. If file is a directory, read all files in that directory into the current file.
mail address
Mail any deleted logs to address.
monthly
Rotate log files only the first time logrotate is run in a month.
nocompress
Override compress.
nocopytruncate
Override copytruncate.
nocreate
Override create.
nodelaycompress
Override delaycompress.
noolddir
Override olddir.
notifempty
Override ifempty.
olddir
directory
Move logs into directory for rotation. directory must be on the same physical device as the original log
files.

postrotate
Begin a script of directives to apply after the log file is rotated. The script ends when the endscript
directive is read.

prerotate
Begin a script of directives to apply before a log file is rotated. The script ends when the endscript
directive is read.

rotate number

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (185 of 351) [15/ 05/ 2002 18: 03: 38] 242
242 Page 243 244
Linux Commands (Linux in a Nutshell, 3rd Edition)
The number of times to rotate a log file before removing it.

size n[ k| M]
Rotate log file when it is greater than n bytes. n can optionally be followed by k for kilobytes or M for
megabytes.

look look [options] string [file]
Search for lines in file (/ usr/ dict/ words by default) that begin with string.
Options
-a
Use alternate dictionary /usr/ dict/ web2.
-d
Compare only alphanumeric characters.
-f
Search is not case-sensitive.
-t character
Stop checking after the first occurrence of character.

lpc lpc [command]
System administration command. Control line printer. If executed without a command, lpc will accept
commands from standard input.

Commands
?, help [commands]
Get a list of commands or help on specific commands.
abort all| printer
Terminate current printer daemon and disable printing for the specified printer.
clean all| printer
Remove files that cannot be printed from the specified printer queues.
disable all| printer
Disable specified printer queues.
down all| printer message
Disable specified printer queues and put message in the printer status file.
enable all| printer
Enable the specified printer queues.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (186 of 351) [15/ 05/ 2002 18: 03: 38] 243
243 Page 244 245
Linux Commands (Linux in a Nutshell, 3rd Edition)
exit, quit
Exit lpc.
restart all|
printer
Try to restart printer daemons for the specified printers.
start all| printer
Enable the printer queues and start printing daemons for the specified printers.
status all| printer
Return the status of the specified printers.
stop all| printer
Disable the specified printer daemons after any current jobs are completed.
topq printer [jobnumbers] [users]
Put the specifed jobs at the top of the printer's queue in the order the jobs are listed.
up all| printer
Enable print queues and restart daemons for the specified printers.

lpd lpd [option] [port]
TCP/ IP command. Line printer daemon. lpd is usually invoked at boot time from the rc2 file. It makes a single
pass through the printer configuration file (traditionally /etc/ printcap) to find out about the existing printers and
prints any files left after a crash. It then accepts requests to print files in a queue, transfer files to a spooling area,
display a queue's status, or remove jobs from a queue. In each case, it forks a child process for each request, then
continues to listen for subsequent requests. If port is specified, lpd listens on that port; otherwise, it uses the
getservbyname call to ascertain the correct port.

The file lock in each spool directory prevents multiple daemons from becoming active simultaneously. After the
daemon has set the lock, it scans the directory for files beginning wth cf. Lines in each cf file specify files to be
printed or nonprinting actions to be performed. Each line begins with a key character, which specifies
information about the print job or what to do with the remainder of the line. Key characters are:

C
Classification --string to be used for the classification line on the burst page.
c
cifplot
file.
f
Formatted file --name of a file to print that is already formatted.
g
Graph file.
H

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (187 of 351) [15/ 05/ 2002 18: 03: 38] 244
244 Page 245 246
Linux Commands (Linux in a Nutshell, 3rd Edition)
Hostname --name of machine where lpd was invoked.
J
Job name --string to be used for the jobname on the burst page.
L
Literal --this line contains identification information from the password file and causes the banner page
to be printed.

l
Formatted file, but suppress page breaks and printing of control characters.
M
Mail --send mail to the specified user when the current print job completes.
n
ditroff
file.
P
Person --login name of person who invoked lpd.
r
DVI file.
T
Title --string to be used as the title for pr.
t
troff
file.
U
Unlink --name of file to remove upon completion of printing.
Option
-l
Enable logging of all valid requests.
Files
/etc/ printcap
Printer description file
/var/ spool/*
Spool directories
/var/ spool/*/ minfree

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (188 of 351) [15/ 05/ 2002 18: 03: 38] 245
245 Page 246 247
Linux Commands (Linux in a Nutshell, 3rd Edition)
Minimum free space to leave
/dev/ lp*
Printer devices
/etc/ hosts. equiv
Machine names allowed printer access
/etc/ hosts. lpd
Machine names allowed printer access, but not under same administrative control

lpq lpq [options] [user]
Check the print spool queue for status of print jobs. For each job, display username, rank in the queue,
filenames, job number, and total file size (in bytes). If user is specified, display information only for that user.

Options
-l
Print information about each file comprising a job.
-Pprinter
Specify which printer to query. Without this option, lpq uses the printer set in the PRINTER environment
variable or the default system printer.

num
Check status for job number num.

lpr lpr [options] files
Send files to the printer spool queue.
Options
-c
Expect data produced by cifplot.
-d
Expect data produced by TeX in the DVI (device-independent) format.
-f
Use a filter that interprets the first character of each line as a standard carriage control character.
-g
Expect standard plot data as produced by the plot routines.
-l
Use a filter that allows control characters to be printed and suppresses page breaks.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (189 of 351) [15/ 05/ 2002 18: 03: 39] 246
246 Page 247 248
Linux Commands (Linux in a Nutshell, 3rd Edition)
-n
Expect data from ditroff (device-independent troff).
-p
Use pr to format the files.
-t
Expect data from troff (phototypesetter commands).
-v
Expect a raster image for devices like the Benson Varian.
-Pprinter
Output to printer instead of the printer specified in the PRINTER environment variable or the system
default.

-h
Do not print the burst page.
-m
Send mail to notify of completion.
-r
Remove the file upon completion of spooling. Cannot be used with the -s option.
-s
Use symbolic links instead of copying files to the spool directory. This can save time and disk space for
large files. Files should not be modified or removed until they have been printed.

-# num
Print num copies of each listed file.
-C string
Replace system name on the burst page with string.
-J name
Replace the job name on the burst page with name. If omitted, uses the first file's name.
-T title
Use title as the title when using pr.
-i [cols]
Indent the output. Default is 8 columns. Specify number of columns to indent with the cols argument.
-w num

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (190 of 351) [15/ 05/ 2002 18: 03: 39] 247
247 Page 248 249
Linux Commands (Linux in a Nutshell, 3rd Edition)
Set num characters as the page width for pr.

lprm lprm [options] [jobnum] [user]
Remove a print job from the print spool queue. You must specify a job number or numbers, which can be
obtained from lpq. A privileged user may use the user parameter to remove all files belonging to a particular
user or users.

Options
-Pprinter
Specify printer name. Normally, the default printer or printer specified in the PRINTER environment
variable is used.

-Remove
all jobs in the spool owned by user.

lpstat lpstat [options]
Show the status of the print queue. With options that take a list argument, omitting the list produces all
information for that option. list can be separated by commas or, if enclosed in double quotes, by spaces.

Options
-a [list]
Show whether the list of printer or class names is accepting requests.
-c [list]
Show information about printer classes named in list.
-d
Show the default printer destination.
-f [list]
Verify that the list of forms is known to lp.
-l
Use after -f to describe available forms, after -p to show printer configurations, or after -s to describe
printers appropriate for the specified character set or print wheel.

-o [list]
Show the status of output requests. list contains printer names, class names, or request IDs.
-p [list]
Show the status of printers named in list.
-r
Show whether the print scheduler is on or off.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (191 of 351) [15/ 05/ 2002 18: 03: 39] 248
248 Page 249 250
Linux Commands (Linux in a Nutshell, 3rd Edition)
-R

Show the job's position in the print queue.
-s
Summarize the print status (shows almost everything).
-t
Show all status information (reports everything).
-u [list]
Show request status for users on list. list can be all to show information on all users.
-v [list]
Show device associated with each printer named in list.

lptest lptest [length] [count]
Generate a lineprinter test pattern on standard output. Prints a standard ripple pattern of all printable ASCII
characters, offset by one position on each succeeding line.

Parameters
length
Specify the output line length (default is 79).
count
Specify the number of lines to print (default is 200).

ls ls [options] [names]
List contents of directories. If no names are given, list the files in the current directory. With one or more names,
list files contained in a directory name or that match a file name. names can include filename metacharacters.
The options let you display a variety of information in different formats. The most useful options include -F, -R, -l,
and -s. Some options don't make sense together (e. g., -u and -c).

Options
-1, --format= single-column
Print one entry per line of output.
-a
List all files, including the normally hidden files whose names begin with a period.
-b, --escape
Display nonprinting characters in octal and alphabetic format.
-c, --time-ctime, --time= status
List files by status change time (not creation/ modification time).

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (192 of 351) [15/ 05/ 2002 18: 03: 39] 249
249 Page 250 251
Linux Commands (Linux in a Nutshell, 3rd Edition)
--color, --colour, --color= yes, --colour= yes
Colorize the names of files depending on the type of file.
--color= no, --colour= no
Disables colorization. This is the default. Provided to override a previous color option.
--color= tty, --colour= tty
Same as --color, but only if standard output is a terminal. Very useful for shell scripts and command
aliases, especially if your favorite pager does not support color control codes.

-d, --directory
Report only on the directory, not its contents.
-f
Print directory contents in exactly the order in which they are stored, without attempting to sort them.
--full-time
List times in full, rather than use the standard abbreviations.
--help
Print a help message and then exit.
-i, --inode
List the inode for each file.
-k, --kilobytes
If file sizes are being listed, print them in kilobytes. This option overrides the environment variable
POSIXLY_ CORRECT.

-l, --format= long, --format= verbose
Long format listing (includes permissions, owner, size, modification time, etc.).
-m, --format= commas
Merge the list into a comma-separated series of names.
-n, --numeric-uid-gid
Like -l, but use group-ID and user-ID numbers instead of owner and group names.
-p
Mark directories by appending / to them.
-q, --hide-control-chars
Show nonprinting characters as ?.
-r, --reverse

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (193 of 351) [15/ 05/ 2002 18: 03: 39] 250
250 Page 251 252
Linux Commands (Linux in a Nutshell, 3rd Edition)
List files in reverse order (by name or by time).

-s, --size
Print size of the files in blocks.
-t, --sort= time
Sort files according to modification time (newest first).
-u, --time= atime, --time= access, --time= use
Sort files according to the file access time.
--version
Print version information on standard output, then exit.
-x, --format= across, --format= horizontal
List files in rows going across the screen.
-A, --almost-all
List all files, including the normally hidden files whose names begin with a period. Does not include the .
and . directories.

-B, --ignore-backups
Do not list files ending in ~, unless given as arguments.
-C, --format= vertical
List files in columns (the default format).
-F, --classify
Flag filenames by appending / to directories, * to executable files, @ to symbolic links, | to FIFOs, and
= to sockets.

-G, --no-group
In long format, do not display group name.
-I, --ignore pattern
Do not list files whose names match the shell pattern pattern, unless they are given on the command line.
-L, --dereference
List the file or directory referenced by a symbolic link rather than the link itself.
-N, --literal
Do not list filenames.
-Q, --quote-name
Quote filenames with "; quote nongraphic characters with alphabetic and octal backslash sequences.
-R, --recursive

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (194 of 351) [15/ 05/ 2002 18: 03: 39] 251
251 Page 252 253
Linux Commands (Linux in a Nutshell, 3rd Edition)
Recursively list subdirectories as well as the specified (or current) directory.
-S, --sort= size
Sort by file size, largest to smallest.
-T, --tabsize n_ cols
Assume that each tabstop is n_ cols columns wide. The default is 8.
-U, --sort= none
Do not sort files. Similar to -f but display in long format.
-X, --sort= extension
Sort by file extension.
Examples
List all files in the current directory and their sizes; use multiple columns and mark special files:
ls -asCF
List the status of directories /bin and /etc:
ls -ld /bin /etc
List C source files in the current directory, the oldest first:
ls -rt *. c
Count the nonhidden files in the current directory:
ls | wc -l

lsattr lsattr [options] [files]
Print attributes of files on a Linux Second Extended File System. See also chattr.
Options
-a
List all files in specified directories.
-d
List directories' attributes, not the attributes of the contents.
-R
List directories and their contents recursively.
-v
List version of files.
-V

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (195 of 351) [15/ 05/ 2002 18: 03: 39] 252
252 Page 253 254
Linux Commands (Linux in a Nutshell, 3rd Edition)
List version and then exit.

lsmod lsmod
System administration command. List all loaded modules: their name, size (in 4KB units) and, if appropriate, a
list of referring modules.

File
/proc/ modules
Source of the same information.

m4 m4 [options] [macros] [files]
Macro processor for C and other files.
Options
-e, --interactive
Operate interactively, ignoring interrupts.
-dflags, --debug= flags
Specify flag-level debugging.
-ln, --arglength= n
Specify the length of debugging output.
-o file, --error-output= file
Place output in file. Despite the name, print error messages on standard error.
-p, --prefix-built-ins
Prepend m4_ to all built-in macro names.
-s, --synclines
Insert #line directives for the C preprocessor.
-Bn
Set the size of the push-back and argument collection buffers to n (default is 4096).
-Dname[= value], --define= name[= value]
Define name as value or, if value is not specified, define name as null.
-E, --fatal-warnings
Consider all warnings to be fatal, and exit after the first of them.
-Ffile, --freeze-state file
Record m4's frozen state in file, for later reloading.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (196 of 351) [15/ 05/ 2002 18: 03: 39] 253
253 Page 254 255
Linux Commands (Linux in a Nutshell, 3rd Edition)
-G, --traditional
Behave like traditional m4, ignoring GNU extensions.
-Hn, --hashsize= n
Set symbol-table hash array to n (default is 509).
-Idirectory, --include= directory
Search directory for include files.
-Q, --quiet, --silent
Suppress warning messages.
-Rfile, --reload-state file
Load state from file before starting execution.
-Uname, --undefine= name
Undefine name.

mail mail [options] [users]
Read mail or send mail to other users. The mail utility allows you to compose, send, receive, forward, and reply
to mail. mail has two main modes: compose mode, in which you create a message, and command mode, in
which you manage your mail.

While mail is a powerful utility, it can be tricky for a novice user. Most Linux distributions include pine and
elm, which are much easier to use.

This section presents mail commands, options, and files. To get you started, here are two of the most basic
commands.

To enter interactive mail-reading mode, type:
mail
To begin writing a message to user, type:
mail user
Enter the text of the message, one line at a time, pressing Enter at the end of each line. To end the message, enter
a single period (.) in the first column of a new line, and press Enter.

Command-line options
-b
list
Set blind carbon copy field to comma-separated list.
-c list
Set carbon copy field to comma-separated list.
-d

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (197 of 351) [15/ 05/ 2002 18: 03: 39] 254
254 Page 255 256
Linux Commands (Linux in a Nutshell, 3rd Edition)
Print debugging information.

-f [file]
Process contents of file, instead of /var/ spool/ mail/$ user. If file is omitted, process mbox in the user's
home directory.

-i
Do not respond to tty interrupt signals.
-n
Do not consult /etc/ mail. rc when starting up.
-p
Read mail in POP mode.
-s subject
Set subject to subject.
-u
Process contents of /var/ spool/ mail/$ user. Default.
-v
Verbose. Print information about mail delivery to standard out.
-I
Interactive --even when standard input has been redirected from the terminal.
-N
When printing a mail message or entering a mail folder, do not display message headers.
-P
Disable POP mode.
Compose-mode commands
~!
Execute a shell escape from compose mode.
~?
List compose mode escapes.
~b names
Add names to or edit the Bcc: header.
~c names
Add names to or edit the Cc: header.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (198 of 351) [15/ 05/ 2002 18: 03: 39] 255
255 Page 256 257
Linux Commands (Linux in a Nutshell, 3rd Edition)
~d

Read in the dead. letter file.
~e
Invoke text editor.
~f messages
Insert messages into message being composed.
~F messages
Similar to ~f, but include message headers.
~h
Add to or change all the headers interactively.
~m messages
Similar to ~f, but indent with a tab.
~M messages
Similar to ~m, but include message headers.
~p
Print message header fields and message being sent.
~q
Abort current message composition.
~r filename
Append file to current message.
~s string
Change Subject: header to string.
~t names
Add names to or edit the To list.
~v
Invoke editor specified with the VISUAL environment variable.
~| command
Pipe message through command.
~: mail-command
Execute mail-command.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (199 of 351) [15/ 05/ 2002 18: 03: 39] 256
256 Page 257 258
Linux Commands (Linux in a Nutshell, 3rd Edition)
~~ string

Insert string in text of message, prefaced by a single tilde (~). If string contains a ~, it must be escaped
with a \.

Command-mode commands

? List summary of commands (help screen).
! Execute a shell command.
-num Print numth previous message; defaults to immediately previous.
alias (a) Print or create alias lists.
alternates (alt) Specify remote accounts on remote machines that are yours. Tell mail not to reply to them.
chdir (c) cd to home or specified directory.
copy (co) Similar to save, but do not mark message for deletion.
delete (d) Delete message.
dp Delete current message and display next one.
edit (e) Edit message.
exit (ex, x) Exit mail without updating folder.
file (fi) Switch folders.
folder (fold) Read messages saved in a file. Files can be:
# Previous
% System mailbox
%user user's system mailbox
& mbox
+folder File in folder directory.
folders List folders.
headers (h) List message headers at current prompt.
headers+ (h+) Move forward one window of headers.
headers-(h-) Move back one window of headers.
help Same as ?.
hold (ho)
Hold messages in system mailbox.
ignore Append list of fields to ignored fields.
mail user (m) Compose message to user.
mbox Default. Move specified messages to mbox on exiting.
next (n) Type next message or next message that matches argument.
preserve (pr) Synonym for hold.
print
[list] (p) Display each message in list.
Print [list] (P) Similar to print, but include header fields.
quit (q) Exit mail and update folder.
reply (r) Send mail to all on distribution list.
Reply (R) Send mail to author only.
respond Same as reply.

retain Always include this list of header fields when printing messages. With no arguments, list retained fields.
save (s) Save message to folder.
saveignore Remove ignored fields when saving.
saveretain Override saveignore to retain specified fields.
set (se) Set or print mail options.
shell (sh) Enter a new shell.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (200 of 351) [15/ 05/ 2002 18: 03: 39] 257
257 Page 258 259
Linux Commands (Linux in a Nutshell, 3rd Edition)
size Print size of each specified message.
source Read commands from specified file.
top Print first few lines of each specified message.
type (t) Same as print.
Type (T)
Same as Print.
unalias
Discard previously defined aliases.
undelete (u) Restore deleted message.
unread (U) Mark specified messages as unread.
unset (uns) Unset mail options.
visual (v) Edit message with editor specified by the VISUAL environment variable.
write (w) Write message, without header, to file.
xit (x) Same as exit.
z
Move mail's attention to next windowful of text. Use z-to move it back.

mail options
These options are used inside of the .mailrc file. The syntax is set option or unset option.

append Append (do not prepend) messages to mbox.
ask Prompt for subject.
askbcc Prompt for blind carbon copy recipients.
askcc Prompt for carbon copy recipients.
asksub Prompt for Subject line.
autoprint Print next message after a delete.
chron Display messages in chronological order, most recent last.
debug Same as -d on command line.
dot Interpret a solitary . as an EOF.
folder Define directory to hold mail folders.
hold Keep message in system mailbox upon quitting.
ignore Ignore interrupt signals from terminal. Print them as @.
ignoreeof Do not treat ^D as an EOF.
metoo Do not remove sender from groups when mailing to them.
noheader Same as -N on command line.
nokerberos Retrieve POP mail via POP3, not KPOP, protocol.
nosave Do not save aborted letters to dead. letter.
pop-mail Retrieve mail with POP3 protocol, and save it in mbox. pop.
prompt Set prompt to a different string.
Replyall Switch roles of Reply and reply.
quiet
Do not print version at startup.

searchheaders When given the specifier /x: y, expand all messages that contain the string y in the x header field.
verbose Same as -v on command line.
verbose-pop Display status while retrieving POP mail.

Special files
calendar Contains reminders that the operating system mails to you.
.maildelivery Mail delivery configuration file.
.mailrc Mail configuration file.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (201 of 351) [15/ 05/ 2002 18: 03: 39] 258
258 Page 259 260
Linux Commands (Linux in a Nutshell, 3rd Edition)
triplog Keeps track of your automatic response recipients.
tripnote Contains automatic message.

mailq mailq [option]
System administration command. List all messages in the sendmail mail queue. Equivalent to sendmail -bp.
Option
-v
Verbose mode.

mailstats mailstats [options]
System administration command. Display a formatted report of the current sendmail mail statistics.
Options
-C
file
Use sendmail configuration file file instead of the default sendmail. cf file.
-f file
Use sendmail statistics file file instead of the file specified in the sendmail configuration file.
-o
Don't show the name of the mailer in the report.

make make [options] [targets] [macro definitions]
Update one or more targets according to dependency instructions in a description file in the current directory. By
default, this file is called makefile or Makefile. Options, targets, and macro definitions can be in any order.
Macros definitions are typed as:

name= string
For more information on make, see Managing Projects with make by Andrew Oram and Steve Talbott.
Options
-d, --debug
Print detailed debugging information.
-e, --environment-overrides
Override makefile macro definitions with environment variables.
-f makefile, --file= makefile, --makefile= makefile
Use makefile as the description file; a filename of -denotes standard input.
-h, --help
Print options to make command.
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (202 of 351) [15/ 05/ 2002 18: 03: 39] 259
259 Page 260 261
Linux Commands (Linux in a Nutshell, 3rd Edition)
-i, --ignore-errors
Ignore command error codes (same as .IGNORE).
-j [jobs], --jobs [=
jobs]
Attempt to execute jobs jobs simultaneously, or, if no number is specified, as many jobs as possible.
-k, --keep-going
Abandon the current target when it fails, but keep working with unrelated targets.
-l [load], --load-average [= load], --max-load [= load]
Attempt to keep load below load, which should be a floating-point number. Used with -j.
-n, --just-print, --dry-run, --recon
Print commands but don't execute (used for testing).
-o file, --old-file= file, --assume-old= file
Never remake file or cause other files to be remade on account of it.
-p, --print-data-base
Print rules and variables in addition to normal execution.
-q, --question
Query; return 0 if file is up-to-date; nonzero otherwise.
-r, --no-built-in-rules
Do not use default rules.
-s, --silent, --quiet
Do not display command lines (same as .SILENT).
-t, --touch
Touch the target files, without remaking them.
-v, --version
Show version of make.
-w, --print-directory
Display the current working directory before and after execution.
--warn -undefined -variables
Print warning if a macro is used without being defined.
-C directory, --directory directory
cd to directory before beginning make operations. A subsequent -C directive will cause make to attempt

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (203 of 351) [15/ 05/ 2002 18: 03: 39] 260
260 Page 261 262
Linux Commands (Linux in a Nutshell, 3rd Edition)
to cd into a directory relative to the current working directory.

-I directory, --include-dir directory
Include directory in list of directories that contain included files.
-S, --no-keep-going, --stop
Cancel previous -k options. Useful in recursive makes.
-W
file, --what-if file, --new-file file, --assume-new file
Behave as though file has been recently updated.
Description file lines
Instructions in the description file are interpreted as single lines. If an instruction must span more than one input
line, use a backslash (\) at the end of the line so that the next line is considered as a continuation. The description
file may contain any of the following types of lines:

Blanklines
Blank lines are ignored.
Commentlines
A pound sign (#) can be used at the beginning of a line or anywhere in the middle. make ignores
everything after the #.

Dependencylines
Depending on one or more targets, certain commands that follow will be executed. Possible formats
include:

targets : dependencies
targets
: dependencies ; command

Subsequent commands are executed if dependency files (the names of which may contain wildcards) do not exist
or are newer than a target. If no prerequisites are supplied, then subsequent commands are always executed
(whenever any of the targets are specified). No tab should precede any targets.

Suffixrules
These specify that files ending with the first suffix can be prerequisites for files ending with the second
suffix (assuming the root filenames are the same). Either of these formats can be used:

.suffix. suffix:
.suffix:

The second form means that the root filename depends on the filename with the corresponding suffix.
Commands
Commands are grouped below the dependency line and are typed on lines that begin with a tab. If a
command is preceded by a hyphen (-), make ignores any error returned. If a command is preceded by an
at sign (@), the command line won't echo on the display (unless make is called with -n).

macrodefinitions
These have the following form:

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (204 of 351) [15/ 05/ 2002 18: 03: 39] 261
261 Page 262 263
Linux Commands (Linux in a Nutshell, 3rd Edition)
name = string

or
define name
string
endef

Blank space is optional around the =.
includestatements
Similar to the C include directive, these have the form:
include files
Internal macros
$?
The list of prerequisites that have been changed more recently than the current target. Can be used only in
normal description file entries --not suffix rules.

$@
The name of the current target, except in description file entries for making libraries, where it becomes
the library name. Can be used both in normal description file entries and in suffix rules.

$<
The name of the current prerequisite that has been modified more recently than the current target.
$*
The name --without the suffix --of the current prerequisite that has been modified more recently than the
current target. Can be used only in suffix rules.

$%
The name of the corresponding .o file when the current target is a library module. Can be used both in
normal description file entries and in suffix rules.

$^
A space-separated list of all dependencies, with no duplications.
$+
A space-separated list of all dependencies, including duplications.
Pattern rules
These are a more general application of the idea behind suffix rules. If a target and a dependency both contain
%, GNU make will substitute any part of an existing filename. For instance, the standard suffix rule:

$( cc) -o $@ $<
can be written as the following pattern rule:
%. o : %. c
$( cc) -o $@ $<

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (205 of 351) [15/ 05/ 2002 18: 03: 39] 262
262 Page 263 264
Linux Commands (Linux in a Nutshell, 3rd Edition)
Macro modifiers
D
The directory portion of any internal macro name except $?. Valid uses are:

$(* D) $$(@ D) $(? D) $(< D)
$(% D) $(@ D) $(^ D)

F
The file portion of any internal macro name except $?. Valid uses are:

$(* F) $$(@ F) $(? F) $(< F)
$(% F) $(@ F) $(^ F)

Functions
$( subst
from, to, string)
Replace all occurrences of from with to in string.
$( patsubst pattern, to, string)
Similar to subst, but treat % as a wildcard within pattern. Substitute to for any word in string that
matches pattern.

$( strip string)
Remove all extraneous whitespace.
$( findstring substring, mainstring)
Return substring if it exists within mainstring; otherwise, return null.
$( filter pattern, string)
Return those words in string that match at least one word in pattern. patterns may include the wildcard
%.

$( filter-out pattern, string)
Remove those words in string that match at least one word in pattern. patterns may include the wildcard
%.

$( sort list)
Return list, sorted in lexical order.
$( dir list)
Return the directory part (everything up to the last slash) of each filename in list.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (206 of 351) [15/ 05/ 2002 18: 03: 39] 263
263 Page 264 265
Linux Commands (Linux in a Nutshell, 3rd Edition)
$( notdir list)
Return the nondirectory part (everything after the last slash) of each filename in list.
$( suffix list)
Return the suffix part (everything after the last period) of each filename in list.
$( basename list)
Return everything but the suffix part (everything up to the last period) of each filename in list.
$( addsuffix suffix, list)
Return each filename given in list with suffix appended.
$( addprefix prefix, list)
Return each filename given in list with prefix prepended.
$( join list1, list2)
Return a list formed by concatenating the two arguments, word by word (e. g., $( join a b,. c .o) becomes
a. c b. o).

$( word n, string)
Return the nth word of string.
$( words string)
Return the number of words in string.
$( firstword list)
Return the first word in the list list.
$( wildcard pattern)
Return a list of existing files in the current directory that match pattern.
$( origin variable)
Return one of the following strings that describes how variable was defined: undefined, default,
environment, environment override, file, command line, override,
or automatic.

$( shell command)
Return the results of command. Any newlines in the result are to be converted to spaces. This function
works similarly to backquotes in most shells.

Macro string substitution
$(
macro: s1= s2)
Evaluates to the current definition of $( macro), after substituting the string s2 for every occurrence of s1
that occurs either immediately before a blank or tab or at the end of the macro definition.

Special target names

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (207 of 351) [15/ 05/ 2002 18: 03: 39] 264
264 Page 265 266
Linux Commands (Linux in a Nutshell, 3rd Edition)
.DEFAULT:

Commands associated with this target are executed if make can't find any description file entries or suffix
rules with which to build a requested target.

.EXPORT_ ALL_ VARIABLES:
If this target exists, export all macros to all child processes.
.IGNORE:
Ignore error codes. Same as the -i option.
.PHONY:
Always execute commands under a target, even if it is an existing, up-to-date file.
.PRECIOUS:
Files you specify for this target are not removed when you send a signal (such as an interrupt) that aborts
make or when a command line in your description file returns an error.

.SILENT:
Execute commands, but do not echo them. Same as the -s option.
.SUFFIXES:
Suffixes associated with this target are meaningful in suffix rules. If no suffixes are listed, the existing list
of suffix rules is effectively "turned off."

makedbm makedbm [options] infile outfile
NFS/ NIS command. Make NIS dbm file. makedbm takes infile and converts it to a pair of files in ndbm
format, namely outfile. pag and outfile. dir. Each line of the input file is converted to a single dbm record. All
characters up to the first TAB or SPACE form the key, and the rest of the line is the data. If line ends with \&,
the data for that record is continued on to the next line. It is left for the NIS clients to interpret #; makedbm does
not treat it as a comment character. infile can be -, in which case the standard input is read.

makedbm generates a special entry with the key yp_ last_ modified, which is the date of infile (or the current
time, if infile is -).

Options
-b
Interdomain. Propagate a map to all servers using the interdomain name server named.
-d yp_
domain_ name
Create a special entry with the key yp_ domain_ name.
-i yp_ input_ file
Create a special entry with the key yp_ input_ file.
-l
Convert keys of the given map to lowercase.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (208 of 351) [15/ 05/ 2002 18: 03: 39] 265
265 Page 266 267
Linux Commands (Linux in a Nutshell, 3rd Edition)
-m yp_ master_ name

Create a special entry with the key yp_ master_ name. If no master hostname is specified,
yp_ master_ name is set to the local hostname.

-o yp_ output_ file
Create a special entry with the key yp_ output_ name.
-s
Secure map. Accept connections from secure NIS networks only.
-u dbm filename
Undo a dbm file --print out a dbm file, one entry per line, with a single space separating keys from
values.

Example
It is easy to write shell scripts to convert standard files such as /etc/ passwd to the key value form used by
makedbm. For example, the awk program:

BEGIN { FS =":"; OFS = "\ t";}
{ print $1, $0}

takes the /etc/ passwd file and converts it to a form that can be read by makdbm to make the NIS file
passwd. byname. That is, the key is a username and the value is the remaining line in the /etc/ passwd file.

makemap makemap [options] type name
System administration command. Transfer from standard input to sendmail's database maps. Input should be
formatted as:

key value
You may comment lines with #, may substitute parameters with %n, and must escape literal % by entering it as
%%. The type must be dbm, btree, or hash. The name is a filename to which makemap appends standard
suffixes.

Options
-d
Allow duplicate entries. Valid only with btree type maps.
-f
Suppress conversion of uppercase to lowercase.
-N
Append a zero byte to each key.
-o
Append to existing file instead of replacing it.
-r

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (209 of 351) [15/ 05/ 2002 18: 03: 39] 266
266 Page 267 268
Linux Commands (Linux in a Nutshell, 3rd Edition)
If some keys already exist, replace them. (By default, makemap will exit when encountering a duplicated
key.)

-s
Ignore safety checks.
-v
Verbose mode.

man man [options] [section] [title]
Display information from the online reference manuals. man locates and prints the named title from the
designated reference section.

Options
-7, --ascii
Expect a pure ASCII file, and format it for a 7-bit terminal or terminal emulator.
-a, --all
Show all pages matching title.
-b
Leave blank lines in output.
-d, --debug
Display debugging information. Suppress actual printing of manual pages.
-f, --whatis
Same as whatis command.
-k, --apropos
Same as apropos command.
-l, --local-file
Search local files, not system files, for manual pages. If i is given as filename, search standard input.
-m systems, --systems= systems
Search systems' manual pages. systems should be a comma-separated list.
-p preprocessors, --preprocessor= preprocessors
Preprocess manual pages with preprocessors before turning them over to nroff, troff, or groff. Always
runs soelim first.

-r prompt, --prompt= prompt
Set prompt if less is used as pager.
-t, --troff

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (210 of 351) [15/ 05/ 2002 18: 03: 39] 267
267 Page 268 269
Linux Commands (Linux in a Nutshell, 3rd Edition)
Format the manual page with /usr/ bin/ groff -Tgv -mandoc. Implied by -T and -Z.
-u, --update
Perform a consistency check between manual page cache and filesystem.
-w, --where, --location
Print pathnames of entries on standard output.
-D, --default
Reset all options to their defaults.
-L locale, --locale= locale
Assume current locale to be locale; do not consult the setlocale() function.
-M path, --manpath= path
Search for manual pages in path. Ignore -m option.
-Ppager, --pager= pager
Select paging program pager to display the entry.
-T device, --troff-device[= device]
Format groff or troff output for device, such as dvi, latin1, X75, and X100.
-Z, --ditroff
Do not allow postprocessing of manual page after groff has finished formatting it.
Section names
Manual pages are divided into sections, depending on their intended audience:
1
Executable programs or shell commands
2
System calls (functions provided by the kernel)
3
Library calls (functions within system libraries)
4
Special files (usually found in /dev)
5
File formats and conventions (e. g., /etc/ passwd)
6

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (211 of 351) [15/ 05/ 2002 18: 03: 39] 268
268 Page 269 270
Linux Commands (Linux in a Nutshell, 3rd Edition)
Games

7
Macro packages and conventions
8
System administration commands (usually only for a privileged user)
9
Kernel routines (nonstandard)

manpath manpath [options]
Attempt to determine path to manual pages. Check $MANPATH first; if that is not set, consult /etc/ man. conf,
user environment variables, and the current working directory. The manpath command is a symbolic link to
man, but most of the options are ignored for manpath.

Options
-d, --debug
Print debugging information.
-h
Print help message and then exit.

merge merge [options] file1 file2 file3
Perform a three-way file merge. merge incorporates all changes that lead from file2 to file3 and puts the results
into file1. merge is useful for combining separate changes to an original. Suppose file2 is the original, and both
file1 and file3 are modifications of file2. Then merge combines both changes. A conflict occurs if both file1 and
file3 have changes in a common segment of lines. If a conflict is found, merge normally outputs a warning and
puts brackets around the conflict, with lines preceded by <<<<<<< and >>>>>>>. A typical conflict looks like
this:

<<<<<<< file1
relevant lines from file1
=======
relevant lines from file3
>>>>>>> file3

If there are conflicts, the user should edit the result and delete one of the alternatives.
Options
-e
Don't warn about conflicts.
-p
Send results to standard output instead of overwriting file1.
-q
Quiet; do not warn about conflicts.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (212 of 351) [15/ 05/ 2002 18: 03: 39] 269
269 Page 270 271
Linux Commands (Linux in a Nutshell, 3rd Edition)
-A
Output conflicts using the -A style of diff3. This merges all changes leading from file2 to file3 into file1
and generates the most verbose output.

-E
Output conflict information in a less verbose style than -A; this is the default.
-L label
Specify up to three labels to be used in place of the corresponding filenames in conflict reports. That is:
merge -L x -L y -L z file_ a file_ b file_ c
generates output that looks as if it came from x, y, and z instead of from file_ a, file_ b, and file_ c.
-V
Print version number.

mesg mesg [option]
Change the ability of other users to send write messages to your terminal. With no options, display the
permission status.

Options
n
Forbid write messages.
y
Allow write messages (the default).

mimencode mimencode [options] [filename] [-o output_ file]
mimencode [options] [filename] [-o output_ file]
Translate to and from MIME encoding formats, the proposed standard for Internet multimedia mail formats. By
default, mimencode reads standard input and sends a base64-encoded version of the input to standard output.

Options
-b
Use the (default) base64 encoding.
-o output_ file
Send output to the named file rather than to standard output.
-p
Translate decoded CRLF sequences into the local newline convention during decoding and do the reverse
during encoding; meaningful only when the default base64 encoding is in effect.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (213 of 351) [15/ 05/ 2002 18: 03: 39] 270
270 Page 271 272
Linux Commands (Linux in a Nutshell, 3rd Edition)
-q

Use the quoted-printable encoding instead of base64.
-u
Decode the standard input rather than encode it.

mkdir mkdir [options] directories
Create one or more directories. You must have write permission in the parent directory in order to create a
directory. See also rmdir. The default mode of the new directory is 0777, modified by the system or user's
umask.

Options
-m, --mode
mode
Set the access mode for new directories. See chmod for an explanation of acceptable formats for mode.
-p, --parents
Create intervening parent directories if they don't exist.
--verbose
Print a message for each directory created.
--help
Print help message and then exit.
--version
Print version number and then exit.
Examples
Create a read-only directory named personal:
mkdir -m 444 personal
The following sequence:
mkdir work; cd work
mkdir junk; cd junk
mkdir questions; cd ../..

can be accomplished by typing this:
mkdir -p work/ junk/ questions

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (214 of 351) [15/ 05/ 2002 18: 03: 39] 271
271 Page 272 273
Linux Commands (Linux in a Nutshell, 3rd Edition)
mke2fs mke2fs [options] device [blocks]
mkfs. ext2 [options] device [blocks]
System administration command. Format device as a Linux Second Extended Filesystem. You may specify the
number of blocks on the device or allow mke2fs to guess.

Options
-b
block-size
Specify block size in bytes.
-c
Scan device for bad blocks before execution.
-f fragment-size
Specify fragment size in bytes.
-i bytes-per-inode
Create an inode for each bytes-per-inode of space. bytes-per-inode must be 1024 or greater; it is 4096 by
default.

-l filename
Consult filename for a list of bad blocks.
-m percentage
Reserve percentage percent of the blocks for use by privileged users.
-q
Quiet mode.
-v
Verbose mode.
-S
Write only superblock and group descriptors; suppress writing of inode table and block and inode
bitmaps. Useful only when attempting to salvage damaged systems.

mkfs mkfs [options] [fs-options] filesys [blocks]
System administration command. Construct a filesystem on a device (such as a hard disk partition). filesys is
either the name of the device or the mountpoint. mkfs is actually a frontend that invokes the appropriate version
of mkfs according to a filesystem type specified by the -t option. For example, a Linux Second Extended
Filesystem uses mkfs. ext2 (which is the same as mke2fs); MS-DOS filesystems use mkfs. msdos. fs-options are
options specific to the filesystem type. blocks is the size of the filesystem in 1024-byte blocks.

Options
-V
Produce verbose output, including all commands executed to create the specific filesystem.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (215 of 351) [15/ 05/ 2002 18: 03: 39] 272
272 Page 273 274
Linux Commands (Linux in a Nutshell, 3rd Edition)
-t fs-type
Tells mkfs what type of filesystem to construct.
filesystem-specific options
These options must follow generic options and not be combined with them. Most filesystem builders
support these three options:

-c
Check for bad blocks on the device before building the filesystem.
-l file
Read the file file for the list of bad blocks on the device.
-v
Produce verbose ouput.

mkfs. minix mkfs. minix [options] device size
System administration command. Creates a MINIX filesystem. See mkfs.

mklost+ found mklost+ found
System administration command. Create a lost+ found directory in the current working directory. Intended for
Linux Second Extended Filesystems.

mkraid mkraid [options] devices
System administration command. Set up RAID array devices as defined in the /etc/ raidtab configuration file.
mkraid can be used to initialize a new array or upgrade older RAID device arrays for the new kernel.
Initialization will destroy any data on the disk devices used to create the array.

Options
-c
file, --configfile file
Use file instead of /etc/ raidtab.
-f, --force
Initialize the devices used to create the RAID array even if they currently have data.
-h, --help
Print a usage message and then exit.
-o, --upgrade
Upgrade an older array to the current kernel's RAID version. Preserve data on the old array.
-V, --version
Print version information and then exit.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (216 of 351) [15/ 05/ 2002 18: 03: 39] 273
273 Page 274 275
Linux Commands (Linux in a Nutshell, 3rd Edition)
mkswap mkswap [option] device [size]
System administration command. Create swap space on device. You may specify its size in blocks; each block is
a page of about 4KB.

Option
-c
Check for bad blocks before creating the swap space.

modprobe modprobe [options] [modules]
System administration command. With no options, attempt to load the specified module, as well as all modules
on which it depends. If more than one module is specified, attempt to load further modules only if the previous
module failed to load.

Options
-a
Load all listed modules, not just the first one.
-l [pattern]
List all existing modules. This option may be combined with -t to specify a type of module, or you may
include a pattern to search for.

-r
Remove the specified modules, as well as the modules on which they depend.
-t type
Load only a specific type of module. Consult /etc/ conf. modules for the directories in which all modules of
that type reside.

Files
/etc/ conf. modules
Information about modules: which ones depend on others, which directories correspond to particular
types of modules.

/sbin/ insmod, /sbin/ rmmod, /sbin/ depmod
Programs that modprobe relies on.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (217 of 351) [15/ 05/ 2002 18: 03: 39] 274
274 Page 275 276
Linux Commands (Linux in a Nutshell, 3rd Edition)
more more [options] [files]
Display the named files on a terminal, one screenful at a time. See less for an alternative to more. Some
commands can be preceded by a number.

Options
+num
Begin displaying at line number num.
-num number
Set screen size to number lines.
+/ pattern
Begin displaying two lines before pattern.
-c
Repaint screen from top instead of scrolling.
-d
Display the prompt "Hit space to continue, Del to abort" in response to illegal commands; disable bell.
-f
Count logical rather than screen lines. Useful when long lines wrap past the width of the screen.
-l
Ignore form-feed (Ctrl-L) characters.
-p
Page through the file by clearing each window instead of scrolling. This is sometimes faster.
-r
Force display of control characters, in the form ^x.
-s
Squeeze; display multiple blank lines as one.
-u
Suppress underline characters.
Commands
All commands in more are based on vi commands. An argument can precede many commands.
SPACE
Display next screen of text.
z

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (218 of 351) [15/ 05/ 2002 18: 03: 39] 275
275 Page 276 277
Linux Commands (Linux in a Nutshell, 3rd Edition)
Display next lines of text, and redefine a screenful to lines lines. Default is one screenful.
RETURN
Display next lines of text, and redefine a screenful to lines lines. Default is one line.
d, ^D
Scroll lines of text, and redefine scroll size to lines lines. Default is one line.
q, Q, INTERRUPT
Quit.
s
Skip forward one line of text.
f
Skip forward one screen of text.
b, ^B
Skip backward one screen of text.
'
Return to point where previous search began.
=
Print number of current line.
/pattern
Search for pattern, skipping to numth occurrence if an argument is specified.
n
Repeat last search, skipping to numth occurrence if an argument is specified.
!cmd, :! cmd
Invoke shell and execute cmd in it.
v
Invoke vi editor on the file, at the current line.
^L
Redraw screen.
:n
Skip to next file.
:p

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (219 of 351) [15/ 05/ 2002 18: 03: 39] 276
276 Page 277 278
Linux Commands (Linux in a Nutshell, 3rd Edition)
Skip to previous file.

:f
Print current filename and line number.
.
Reexecute previous command.
Examples
Page through file in "clear" mode, and display prompts:
more -cd file
Format doc to the screen, removing underlines:
nroff doc | more -u
View the manpage for the grep command; begin near the word "BUGS" and compress extra whitespace:
man grep | more +/ BUGS -s

mount mount [options] [special-device] [directory]
System administration command. Mount a file structure. mount announces to the system that a removable file
structure is present on special-device. The file structure is mounted on directory, which must already exist and
should be empty; it then becomes the name of the root of the newly mounted file structure. If mount is invoked
with no arguments, it displays the name of each mounted device, the directory on which it is mounted, whether
the file structure is read-only, and the date it was mounted. Only a privileged user can use the mount command.

Options
-a
Mount all filesystems listed in /etc/ fstab. Note: this is the only option that cannot take a special-device or
node argument.

-f
Fake mount. Go through the motions of checking the device and directory, but do not actually mount the
filesystem.

-n
Do not record the mount in /etc/ mtab.
-o option
Note: this is the only option to mount that requires a special-device or node argument. Qualify the mount
with one of the specified options:

async
Read input and output to the device asynchronously.
auto
Allow mounting with the -a option.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (220 of 351) [15/ 05/ 2002 18: 03: 39] 277
277 Page 278 279
Linux Commands (Linux in a Nutshell, 3rd Edition)
defaults
Use all options' default values (async, auto, dev, exec, nouser, rw, suid).
dev
Interpret any special devices that exist on the filesystem.
exec
Allow binaries to be executed.
noauto
Do not allow mounting via the -a option.
nodev
Do not interpret any special devices that exist on the filesystem.
noexec
Do not allow the execution of binaries on the filesystem.
nosuid
Do not acknowledge any suid or sgid bits.
nouser
Only privileged users will have access to the filesystem.
remount
Expect the filesystem to have already been mounted, and remount it.
ro
Allow read-only access to the filesystem.
rw
Allow read/ write access to the filesystem.
suid
Acknowledge suid and sgid bits.
sync
Read input and output to the device synchronously.
user
Allow unprivileged users to mount the filesystem. Note that the defaults on such a system will be
nodev, noexec, and nosuid, unless otherwise specified.

check= relaxed| normal| strict
Specify how strictly to regulate the integration of an MS-DOS filesystem when mounting it.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (221 of 351) [15/ 05/ 2002 18: 03: 39] 278
278 Page 279 280
Linux Commands (Linux in a Nutshell, 3rd Edition)
conv= binary| text| auto
Specify method by which to convert files on MS-DOS and ISO 9660 filesystems.
debug
Turn debugging on for MS-DOS and ext2fs filesystems.
errors= continue| remount| ro| panic
Specify action to take when encountering an error. ext2fs filesystems only.
-r
Mount filesystem read-only.
-t type
Specify the filesystem type. Possible values are: minix, ext, ext2, xiafs, hpfs, msdos, umsdos, vfat,
proc, nfs, iso9660, smbfs, ncpfs, affs, ufs, romfs, sysv, xenix,
and coherent. Note that ext and xiafs are
valid only for kernels older than 2.1.21 and that sysv should be used instead of xenix and coherent.

-v
Display mount information verbosely.
-w
Mount filesystem read/ write. This is the default.
Files
/etc/ fstab
List of filesystems to be mounted and options to use when mounting them.
/etc/ mtab
List of filesystems that are currently mounted and the options with which they were mounted.

mountd rpc. mountd [options]
NFS/ NIS command. NFS mount request server. mountd reads the file /etc/ exports to determine which
filesystems are available for mounting by which machines. It also provides information as to what filesystems
are mounted by which clients. See also nfsd.

Options
-d, --debug
Debug mode. Output all debugging information via syslogd.
-f
file, --exports-file file

Read the export permissions from file instead of /etc/ exports.
-n, --allow-non-root

Accept even those mount requests that enter via a non-reserved port.
-p, --promiscuous

Accept requests from any host that sends them.
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (222 of 351) [15/ 05/ 2002 18: 03: 39] 279
279 Page 280 281
Linux Commands (Linux in a Nutshell, 3rd Edition)
-r, --re-export

Allow re-exportation of imported filesystems.
-v, --version

Print the version number.
File
/etc/ exports
Information about mount permissions.

mv mv [option] sources target
Move or rename files and directories. The source (first column) and target (second column) determine the result
(third column):

Source Target Result
File name (nonexistent) Rename file to name.
File Existing file Overwrite existing file with source file.
Directory name (nonexistent) Rename directory to name.
Directory Existing directory Move directory to be a subdirectory of existing directory.
One or more files Existing directory Move files to directory.

Options
-b, --backup
Back up files before removing.
-f, --force
Force the move, even if target file exists; suppress messages about restricted access modes.
--help
Print a help message and then exit.
-i, --interactive
Query user before removing files.
-u, --update
Do not remove a file or link if its modification date is the same as or newer than that of its replacement.
-v, --verbose
Print the name of each file before moving it.
--version
Print version information and then exit.
-S suffix, --suffix= suffix
Override the SIMPLE_ BACKUP_ SUFFIX environment variable, which determines the suffix used for

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (223 of 351) [15/ 05/ 2002 18: 03: 39] 280
280 Page 281 282
Linux Commands (Linux in a Nutshell, 3rd Edition)
making simple backup files. If the suffix is not set either way, the default is a tilde (~).

-V value, --version-control= value
Override the VERSION_ CONTROL environment variable, which determines the type of backups made.
The acceptable values for version control are:

t, numbered
Always make numbered backups.
nil, existing
Make numbered backups of files that already have them, simple backups of the others. The
default.

never, simple
Always make simple backups.

named named [options]
TCP/ IP command. Internet domain name server. named is used by resolver libraries to provide access to the
Internet distributed naming database. With no arguments, named reads /etc/ named. boot for any initial data and
listens for queries on a privileged port. See RFC 1034 and RFC 1035 for more details.

There are several named binaries available at different Linux archives, displaying various behaviors. If your
version doesn't behave like the one described here, never fear --it should have come with documentation.

Options
-d
debuglevel
Print debugging information. debuglevel is a number indicating the level of messages printed.
-p port
Use port as the port number. Default is 42.
[-b] bootfile
File to use instead of named. boot. The -b is optional and allows you to specify a filename that begins
with a leading dash.

File
/etc/ named. boot
Read when named starts up.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (224 of 351) [15/ 05/ 2002 18: 03: 39] 281
281 Page 282 283
Linux Commands (Linux in a Nutshell, 3rd Edition)
namei namei [options] pathname [pathname . . .]
Follow a pathname until a terminal point is found (e. g., a file, directory, char device, etc.). If namei finds a
symbolic link, it shows the link and starts following it, indenting the output to show the context. namei prints an
informative message when the maximum number of symbolic links this system can have has been exceeded.

Options
-m
Show the mode bits of each file type in the style of ls; for example: "rwxr-xr-x".
-x
Show mountpoint directories with a D, rather than a d.
File type characters
For each line of output, namei prints the following characters to identify the file types found:
-A
regular file
?
An error of some kind
b
A block device
c
A character device
d
A directory
f:
The pathname namei is currently trying to resolve
l
A symbolic link (both the link and its contents are output)
s
A socket

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (225 of 351) [15/ 05/ 2002 18: 03: 39] 282
282 Page 283 284
Linux Commands (Linux in a Nutshell, 3rd Edition)
netdate netdate [options] [protocol] hostname...
TCP/ IP command. Set the system time according to the time provided by one of the hosts in the list hostname.
netdate tries to ascertain which host is the most reliable source. When run by an unprivileged user, netdate
reports the current time, without attempting to set the system clock. You may specify the protocol --udp (the
default) or tcp --once, or several times for various hosts.

Options
-l
time
The most reliable host is chosen from the list by sorting the hosts into groups based on the times they
return when questioned. The first host from the largest group is then polled a second time. The
differences between its time and the local host's time on each poll are recorded. These two differences are
then compared. If the gap between them is greater than time (the default is five seconds), the host is
rejected as inaccurate.

-v
Display the groups into which hosts are sorted.

netstat netstat [options]
TCP/ IP command. Show network status. For all active sockets, print the protocol, the number of bytes waiting to
be received, the number of bytes to be sent, the port number, the remote address and port, and the state of the
socket.

Options
-a
Show the state of all sockets, not just active ones.
-c
Display information continuously, refreshing once every second.
-i
Include statistics for network devices.
-n
Show network addresses as numbers.
-o
Include additional information such as username.
-r
Show routing tables.
-t
List only TCP sockets.
-u
List only UDP sockets.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (226 of 351) [15/ 05/ 2002 18: 03: 39] 283
283 Page 284 285
Linux Commands (Linux in a Nutshell, 3rd Edition)
-v
Print the version number and exit.
-w
List only raw sockets.
-x
List only Unix domain sockets.

newgrp newgrp [group]
Change user's group identification to the specified group. If no group is specified, change to the user's login
group. The new group is then used for checking permissions.

newusers newusers file
System administration command. Create or update system users from entries in file. Each line in file has the
same format as an entry in /etc/ passwd, except passwords are unencrypted, and group IDs can be given as a
name or number. During an update, the password age field is ignored if the user already exists in the /etc/ shadow
password file. If a group name or ID does not already exist, it will be created. If a home directory does not exist,
it will be created.

nfsd rpc. nfsd [options]
System administration command. Daemon that starts the NFS server daemons that handle client filesystem
requests. These daemons are user-level processes. The options are exactly the same as in mountd.

nice nice [option] [command [arguments]]
Execute a command (with its arguments) with lower priority (i. e., be "nice" to other users). With no arguments,
nice prints the default scheduling priority (niceness). If nice is a child process, it prints the parent process's
scheduling priority. Niceness has a range of -20 (highest priority) to 19 (lowest priority).

Options
--help
Print a help message and then exit.
-n adjustment, -adjustment, --adjustment= adjustment
Run command with niceness incremented by adjustment (1-19); default is 10. A privileged user can raise
priority by specifying a negative adjustment (e. g., -5).

--version
Print version information and then exit.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (227 of 351) [15/ 05/ 2002 18: 03: 39] 284
284 Page 285 286
Linux Commands (Linux in a Nutshell, 3rd Edition)
nm nm [options] [objfiles]
Print the symbol table (name list) in alphabetical order for one or more object files. If no object files are
specified, perform operations on a. out. Output includes each symbol's value, type, size, name, and so on. A key
letter categorizing the symbol can also be displayed. If no object file is given, use a. out.

Options
-a, --debug-syms
Print debugger symbols.
-f format
Specify output format (bsd, sysv, or posix). Default is bsd.
-g, --extern-only
Print external symbols only.
-n, -v, --numeric-sort
Sort the external symbols by address.
-p, --no-sort
Don't sort the symbols at all.
-r, --reverse-sort
Sort in reverse, alphabetically or numerically.
--size-sort
Sort by size.
-u, --undefined-only
Report only the undefined symbols.
-A, -o, -print-file-name
Print input filenames before each symbol.
-C, --demangle
Translate low-level symbol names into readable versions.
-D, --dynamic
Print dynamic, not normal, symbols. Useful only when working with dynamic objects (some kinds of
shared libraries, for example).

-P, --portability
Same as -f posix.
-V, --version
Print nm's version number on standard error.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (228 of 351) [15/ 05/ 2002 18: 03: 39] 285
285 Page 286 287
Linux Commands (Linux in a Nutshell, 3rd Edition)
nohup nohup command [arguments]
Run the named command with its optional command arguments, continuing to run it even after you log out
(make command immune to hangups; i. e., no hangup). TTY output is appended to the file nohup. out by default.
Modern shells preserve background commands by default; this command is necessary only in the original
Bourne shell.

nslookup nslookup [-option...] [host_ to_ find | -[server ]]
TCP/ IP command. Query Internet domain name servers. nslookup has two modes: interactive and
noninteractive. Interactive mode allows the user to query name servers for information about various hosts and
domains or to print a list of hosts in a domain. It is entered either when no arguments are given (default name
server will be used) or when the first argument is a hyphen and the second argument is the hostname or Internet
address of a name server. Noninteractive mode is used to print just the name and requested information for a
host or domain. It is used when the name of the host to be looked up is given as the first argument. Any of the
keyword= value pairs listed under the interactive set command can be used as an option on the command line by
prefacing the keyword with a -. The optional second argument specifies a name server.

Options
All of the options under the set interactive command can be entered on the command line, with the syntax -keyword[=
value].

Interactive commands
exit
Exit nslookup.
finger [name] [>|>>
filename]
Connect with finger server on current host, optionally creating or appending to filename.
help, ?
Print a brief summary of commands.
host [server]
Look up information for host using the current default server or using server if specified.
ls -[ ahd] domain [>|>> filename]
List information available for domain, optionally creating or appending to filename. The -a option lists
aliases of hosts in the domain. -h lists CPU and operating system information for the domain. -d lists all
contents of a zone transfer.

lserver domain
Change the default server to domain. Use the initial server to look up information about domain.
root
Change default server to the server for the root of the domain namespace.
server domain
Change the default server to domain. Use the current default server to look up information about domain.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (229 of 351) [15/ 05/ 2002 18: 03: 39] 286
286 Page 287 288
Linux Commands (Linux in a Nutshell, 3rd Edition)
set keyword[= value]

Change state information affecting the lookups. Valid keywords are:
all
Print the current values of the frequently used options to set.
class=
name
Set query class to IN (Internet), CHAOS, HESIOD, or ANY. Default is IN.
domain= name
Change default domain name to name.
[no] debug
Turn debugging mode on or off.
[no] d2
Turn exhaustive debugging mode on or off.
[no] defname
Append default domain name to every lookup.
[no] ignoretc
Ignore truncate error.
[no] recurse
Tell name server to query or not query other servers if it does not have the information.
[no] search
With defname, search for each name in parent domains of current domain.
[no] vc
Always use a virtual circuit when sending requests to the server.
port= port
Connect to name server using port.
querytype= value
See type= value.
retry= number
Set number of retries to number.
root= host
Change name of root server to host.
srchlist= domain
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (230 of 351) [15/ 05/ 2002 18: 03: 39] 287
287 Page 288 289
Linux Commands (Linux in a Nutshell, 3rd Edition)
Set search list to domain.
timeout= number
Change timeout interval for waiting for a reply to number seconds.
type= value
Change type of information returned from a query to one of:

A Host's Internet address
ANY Any available information
CNAME Canonical name for an alias
HINFO Host CPU and operating system
type
MD Mail destination
MG Mail group member
MINFO Mailbox or mail list
information
MR Mail rename domain name
MX Mail exchanger
NS Nameserver for the named zone
PTR Hostname or pointer to other
information
SOA Domain start-of-authority
TXT Text information
UINFO User information
WKS Supported well-known services
view filename

Sort and list output of previous ls command( s) with more.

passwd passwd [user]
Create or change a password associated with a user name. Only the owner or a privileged user may change a
password. Owners need not specify their user name.

paste paste [options] files
Merge corresponding lines of one or more files into tab-separated vertical columns. See also cut, join, and pr.
Options
-Replace
a filename with the standard input.
-dchar, --delimiters= char
Separate columns with char instead of a tab. Note: you can separate columns with different characters by
supplying more than one char.

--help

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (231 of 351) [15/ 05/ 2002 18: 03: 39] 288
288 Page 289 290
Linux Commands (Linux in a Nutshell, 3rd Edition)
Print a help message and then exit.
--version
Print version information and then exit.
-s, --serial
Merge lines from one file at a time.
Examples
Create a three-column file from files x, y, and z:
paste x y z > file
List users in two columns:
who | paste --Merge
each pair of lines into one line:
paste -s -d"\ t\ n" list

patch patch [options] [original [patchfile]]
Apply the patches specified in patchfile to original. Replace the original with the new, patched version; move
the original to original. orig or original~.

Options
+ [options] [original2]
Apply patches again, with different options or a different original file.
-b, --backup
Back up the original file.
-z suffix, --suffix= suffix
Back up the original file in original. suffix.
-B prefix, --prefix= prefix
Prepend prefix to the backup filename.
-c, --context
Interpret patchfile as a context diff.
-d dir, --directory= dir
cd to directory before beginning patch operations.
-D string, --ifdef= string
Mark all changes with:

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (232 of 351) [15/ 05/ 2002 18: 03: 39] 289
289 Page 290 291
Linux Commands (Linux in a Nutshell, 3rd Edition)
#ifdef
string
#endif

-e, --ed
Treat the contents of patchfile as ed commands.
-E, --remove-empty-files
If patch creates any empty files, delete them.
-f, --force
Force all changes, even those that look incorrect. Skip patches if the original file does not exist; force
patches for files with the wrong version specified; assume patches are never reversed.

-i file, --input= file
Read patch from file instead of stdin.
-t, --batch
Skip patches if the original file does not exist.
-F num, --fuzz= num
Specify the maximum number of lines that may be ignored (fuzzed over) when deciding where to install a
hunk of code. The default is 2. Meaningful only with context diffs.

-l, --ignore-whitespace
Ignore whitespace while pattern matching.
-n, --normal
Interpret patch file as a normal diff.
-N, --forward
Ignore patches that appear to be reversed or to have already been applied.
-o file, --output= file
Print output to file.
-p[ num], --strip[= num]
Specify how much of preceding pathname to strip. A num of 0 strips everything, leaving just the
filename. 1 strips the leading /; each higher number after that strips another directory from the left.

-r file, --reject-file= file
Place rejects (hunks of the patch file that patch fails to place within the original file) in file. Default is
original. rej.

-R, --reverse
Do a reverse patch: attempt to undo the damage done by patching with the old and new files reversed.
-s, --silent, --quiet

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (233 of 351) [15/ 05/ 2002 18: 03: 39] 290
290 Page 291 292
Linux Commands (Linux in a Nutshell, 3rd Edition)
Suppress commentary.
-u, --unified
Interpret patch file as a unified context diff.
-V method, --version-control= method
Specify method for creating backup files (overridden by -B):
t, numbered
Make numbered backups.
nil, existing
Back up files according to preexisting backup schemes, with simple backups as the default. This is
patch's default behavior.

never, simple
Make simple backups.
Environment variables
TMPDIR
Specify the directory for temporary files, /tmp by default.
SIMPLE_ BACKUP_ SUFFIX
Suffix to append to backup files instead of .orig or ~.
VERSION_ CONTROL
Specify what method to use in naming backups (see -V).

pathchk pathchk [ option ] filenames
Determine validity and portability of filenames. Specifically, determine if all directories within the path are
searchable and if the length of the filenames is acceptable.

Options
-p, --portability
Check portability for all POSIX systems.
--help
Print a help message and then exit.
--version
Print version information and then exit.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (234 of 351) [15/ 05/ 2002 18: 03: 39] 291
291 Page 292 293
Linux Commands (Linux in a Nutshell, 3rd Edition)
pcnfsd /usr/ sbin/ rpc. pcnfsd
NFS/ NIS command. NFS authentication and print request server. pcnfsd is an RPC server that supports ONC
clients on PC systems. pcnfsd reads the configuration file /etc/ pcnfsd. conf, if present, then services RPC requests
directed to program number 150001. This current release of the pcnfsd daemon (as of this printing) supports
both Version 1 and Version 2 of the pcnfsd protocol. Requests serviced by pcnfsd fall into three categories:
authentication, printing, and other. Only the authentication and printing services have administrative
significance.

Authentication
When pcnfsd receives a PCNFSD_ AUTH or PCNFSD2_ AUTH request, it will log in the user by validating the
username and password, returning the corresponding user ID, group IDs, home directory, and umask. At this
time, pcnfsd will also append a record to the wtmp database. If you do not want to record PC logins in this way,
add the line:

wtmp off
to the /etc/ pcnfsd. conf file.
Printing
pcnfsd
supports a printing model based on the use of NFS to transfer the actual print data from the client to the
server. The client system issues a PCNFSD_ PR_ INIT or PCNFSD2_ PR_ INIT request, and the server returns the
path to a spool directory that the client may use and that is exported by NFS. pcnfsd creates a subdirectory for
each of its clients; the parent directory is normally /usr/ spool/ pcnfs and the subdirectory is the hostname of the
client system. If you want to use a different parent directory, add the line:

spooldir path
to the /etc/ pcnfsd. conf file. Once a client has mounted the spool directory and has transferred print data to a file
in this directory, pcnfsd will issue a PCNFSD_ PR_ START or PCNFSD2_ PR_ START request. pcnfsd
constructs a command based on the printing services of the server operating system and executes the command
using the identity of the PC user. Every print request includes the name of the printer to be used. pcnfsd
interprets a printer as either a destination serviced by the system print spooler or as a virtual printer. Virtual
printers are defined by the following line in the /etc/ pcnfsd. conf file:

printer name alias-for command
where name is the name of the printer you want to define, alias-for is the name of a real printer that corresponds
to this printer, and command is a command that will be executed whenever a file is printed on name.

perl perl
A powerful text-processing language that combines many of the most useful features of shell programs, C, awk,
and sed, as well as adding extended features of its own. For more information, see Learning Perl by Randal L.
Schwartz and Programming Perl, 2d ed., by Larry Wall, Tom Christiansen, and Randal L. Schwartz.

pidof pidof [options] programs
Display the process IDs of the listed program or programs. pidof is actually a symbolic link to killall5.
Options
-o
pids
Omit all processes with the specified process ID. You may list several process IDs.
-s

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (235 of 351) [15/ 05/ 2002 18: 03: 39] 292
292 Page 293 294
Linux Commands (Linux in a Nutshell, 3rd Edition)
Return a single process ID.

-x
Also return process IDs of shells running the named scripts.

ping ping [options] host
System administration command. Confirm that a remote host is online and responding. ping is intended for use
in network testing, measurement, and management. Because of the load it can impose on the network, it is
unwise to use ping during normal operations or from automated scripts.

Options
-c
count
Stop after sending (and receiving) count ECHO_ RESPONSE packets.
-d
Set SO_ DEBUG option on socket being used.
-f
Flood ping-output packets as fast as they come back or 100 times per second, whichever is more. This
can be very hard on a network and should be used with caution; only a privileged user may use this
option.

-i wait
Wait wait seconds between sending each packet. Default is to wait 1 second between each packet. This
option is incompatible with the -f option.

-l preload
Send preload number of packets as fast as possible before falling into normal mode of behavior.
-n
Numeric output only. No attempt will be made to look up symbolic names for host addresses.
-p digits
Specify up to 16 pad bytes to fill out packet sent. This is useful for diagnosing data-dependent problems
in a network. digits are in hex. For example, -p ff will cause the sent packet to be filled with all 1s.

-q
Quiet output --nothing is displayed except the summary lines at startup time and when finished.
-r
Bypass the normal routing tables and send directly to a host on an attached network.
-s packetsize
Specify number of data bytes to be sent. Default is 56, which translates into 64 ICMP data bytes when
combined with the 8 bytes of ICMP header data.

-v

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (236 of 351) [15/ 05/ 2002 18: 03: 39] 293
293 Page 294 295
Linux Commands (Linux in a Nutshell, 3rd Edition)
Verbose --list ICMP packets received other than ECHO_ RESPONSE.
-R
Set the IP record route option, which will store the route of the packet inside the IP header. The contents
of the record route will be printed if the -v option is given, and will be set on return packets if the target
host preserves the record route option across echoes or the -l option is given.

pop2d in. pop2d
System administration command. Allow users to connect to port 109 and request the contents of their mailbox in
/var/ spool/ mail. pop2d requires a username and password before providing mail and can serve individual
messages. See also pop3d.

Commands
Each command must be entered on a separate line.
HELO
Prompt for username and password.
FOLD

Open /var/ spool/ mail/$ USER.
HOST

Open /var/ spool/ pop/$ USER.
READ

Read a message.
RETR

Retrieve a message.
ACKS

Save the last message retrieved and move to next message.
ACKD

Delete the last message retrieved and move to next message.
NACK

Save the last message retrieved and expect to resend it.
QUIT

Exit.

pop3d in. pop3d
System administration command. pop3d is a more recent version of pop2d. It behaves similarly but accepts a
slightly different list of commands.

Commands
USER
Prompt for name.
PASS

Prompt for password.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (237 of 351) [15/ 05/ 2002 18: 03: 39] 294
294 Page 295 296
Linux Commands (Linux in a Nutshell, 3rd Edition)
STAT

Display the number of messages in the mailbox and its total size.
LIST

Display individual messages' sizes.
DELE

Delete a message.
NOOP

Perform a null operation.
LAST

Print the number of the most recently received message that has been read.
RSET

Reset: clear all deletion marks.
TOP

Print the first part of a message.
QUIT

Exit.

portmap rpc. portmap [option]
NFS/ NIS command. RPC program number to IP port mapper. portmap is a server that converts RPC program
numbers to IP port numbers. It must be running in order to make RPC calls. When an RPC server is started, it
tells portmap what port number it is listening to and what RPC program numbers it is prepared to serve. When a
client wishes to make an RPC call to a given program number, it first contacts portmap on the server machine to
determine the port number where RPC packets should be sent. portmap must be the first RPC server started.

Option
-d
Run portmap in debugging mode. Does not allow portmap to run as a daemon.

powerd powerd device
System administration command. Monitor the connection to an uninterruptible power supply, which the user
must specify via device. When power goes low, signal init to run its powerwait and powerfail entries; when full
power is restored, signal init to run its powerokwait entries.

pppd pppd [options] [tty] [speed]
System administration command. PPP stands for the Point-to-Point Protocol; it allows datagram transmission
over a serial connection. pppd attempts to configure tty for PPP (searching in /dev) or, by default, the controlling
terminal. You can also specify a baud rate of speed.

Options
asyncmap
map
Specify which control characters cannot pass over the line. map should be a 32-bit hex number, where
each bit represents a character to escape. For example, bit 00000001 represents the character 0x00; bit
80000000 represents the character 0x1f or _. You may specify multiple characters.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (238 of 351) [15/ 05/ 2002 18: 03: 39] 295
295 Page 296 297
Linux Commands (Linux in a Nutshell, 3rd Edition)
auth

Require self-authentication by peers before allowing packets to move.
connect command
Connect as specified by command, which may be a binary or shell command.
debug, -d
Increment the debugging level.
defaultroute
Add a new default route in which the peer is the gateway. When the connection shuts down, remove the
route.

-detach
Operate in the foreground. By default, pppd forks and operates in the background.
disconnect command
Close the connection as specified by command, which may be a binary or shell command.
domain d
Specify a domain name of d.
escape character-list
Escape all characters in character-list, which should be a comma-separated list of hex numbers. You
cannot escape 0x20-0x3f or 0x5e.

file file
Consult file for options.
lock
Allow only pppd to access the device.
mru bytes
Refuse packets of more than bytes bytes.
name name
Specify a machine name for the local system.
netmask mask
Specify netmask (for example, 255.255.255.0).
passive, -p
Do not exit if peer does not respond to attempts to initiate a connection. Instead, wait for a valid packet
from the peer.

silent

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (239 of 351) [15/ 05/ 2002 18: 03: 39] 296
296 Page 297 298
Linux Commands (Linux in a Nutshell, 3rd Edition)
Send no packets until after receiving one.

[local_ IP_ address]:[ remote_ IP_ address]
Specify the local and/ or remote interface IP addresses, as hostnames or numeric addresses.
Files
/var/ run/ pppn. pid
pppd's process ID. The n in pppn. pid is the number of the PPP interface unit corresponding to this pppd
process.

/etc/ ppp/ ip-up
Binary or script to be executed when the PPP link becomes active.
/etc/ ppp/ ip-down
Binary or script to be executed when the PPP link goes down.
/etc/ ppp/ pap-secrets
Contains usernames, passwords, and IP addresses for use in PAP authentication.
/etc/ ppp/ options
System defaults. Options in this file are set before the command-line options.
~/. ppprc
The user's default options. These are read before command-line options but after the system defaults.
/etc/ ppp/ options. ttyname
Name of the default serial port.

pr pr [files]
Convert a text file or files to a paginated, columned version, with headers. If -is provided as the filename, read
from standard input.

Options
+beg_
pag[: end-pag], --pages=[ beg_ pag[: end-pag]
Begin printing on page beg_ pag and end on end-pag if specified.
-num_ cols, --columns= num_ cols
Print in num_ cols number of columns, balancing the number of lines in the columns on each page.
-a, --across
Print columns horizontally, not vertically.
-c, --show-control-chars
Convert control characters to hat notation (such as ^C) and other unprintable characters to octal
backslash format.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (240 of 351) [15/ 05/ 2002 18: 03: 39] 297
297 Page 298 299
Linux Commands (Linux in a Nutshell, 3rd Edition)
-d, --double-space
Double space.
-e[ tab-char[ width]], --expand-tabs=[ tab-char[ width]]
Convert tabs (or tab-chars) to spaces. If width is specified, convert tabs to width characters (default is 8).
-f, -F, --form-feed
Separate pages with form feeds, not newlines.
-h header, --header= header
Use header for the header instead of the filename.
-i[ out-tab-char[ out-tab-width]], --output-tabs[= out-tab-char[ out-tab-width]]
Replace spaces with tabs on output. Can specify alternative tab character (default is tab) and width
(default is 8).

-J, --join-lines
Merge full lines; ignore -W if set.
-l lines, --length= lines
Set page length to lines (default 66). If lines is less than 10, omit headers and footers.
-m, --merge
Print all files, one file per column.
-n[ delimiter[ digits]], --number-lines[= delimiter[ digits]]
Number columns, or, with the -m option, number lines. Append delimiter to each number (default is a
tab) and limit the size of numbers to digits (default is 5).

-o width, --indent= width
Set left margin to width.
-r, --no-file-warnings
Continue silently when unable to open an input file.
-s[ delimiter], --separator[= delimiter]
Separate columns with delimiter (default is a tab) instead of spaces.
-S[ string], --sep-string[= string]
Separate columns with string. Default is a tab with -J and a space otherwise.
-t, --omit-header
Suppress headers, footers, and fills at end of pages.
-T, --omit-pagination

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (241 of 351) [15/ 05/ 2002 18: 03: 40] 298
298 Page 299 300
Linux Commands (Linux in a Nutshell, 3rd Edition)
Like -t but also suppress form feeds.

-v, --show-non-printing
Convert unprintable characters to octal backslash format.
-w page_ width, --width= page_ width
Set the page width to page_ width characters for multi-column output. Default is 72.
-W page_ width, --page-width= page_ width
Set the page width to always be page_ width characters. Default is 72.
--help
Print a help message and then exit.
--version
Print version information and then exit.

praliases praliases [option]
System administration command. praliases prints the current sendmail mail aliases. (Usually defined in the
/etc/ aliases or /etc/ aliases. db file.)

Option
-f
file
Read the aliases from the specified file instead of sendmail's default alias files.

printenv printenv [variables]
Print values of all environment variables or, optionally, only the specified variables.

printf printf formats [strings]
Print strings using the specified formats. formats can be ordinary text characters, C-language escape characters,
or more commonly, a set of conversion arguments listed here.

Arguments
%s
Print the next string.
%n$ s
Print the nth string.
%[-] m[. n] s
Print the next string, using a field that is m characters wide. Optionally, limit the field to print only the
first n characters of string. Strings are right-adjusted unless the left-adjustment flag, -, is specified.

Examples

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (242 of 351) [15/ 05/ 2002 18: 03: 40] 299
299 Page 300 301
Linux Commands (Linux in a Nutshell, 3rd Edition)
printf '% s %s\ n' "My files are in" $HOME
printf '%-25.15s %s\ n' "My files are in" $HOME

ps ps [options]
Report on active processes. Note that you do not need to include a -before options. In options, list arguments
should either be separated by commas or be put in double quotes. In comparing the amount of output produced,
note that e prints more than a and l prints more than f.

Options
pids
Include only specified processes, which are given in a comma-delimited list.
a
List all processes.
c
Consult task_ struct for command name.
e
Include environment.
f
"Forest" family tree format.
h
Suppress header.
j
Jobs format.
l
Produce a long listing.
m
Memory format.
n
Print user IDs and WCHAN numerically.
r
Exclude processes that are not running.
s
Signal format.
--sortdelimiter[+|-] key[,[+|-] key[,...]]

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (243 of 351) [15/ 05/ 2002 18: 03: 40] 300
300 Page 301 302
Linux Commands (Linux in a Nutshell, 3rd Edition)
Similar to O, but designed to protect multiletter sort keys. See the later list, "Sort keys".
ttty
Display only processes running on tty.
u
Include username and start time.
v
vm
format.
w
Wide format. Don't truncate long lines.
x
Include processes without an associated terminal.
O[+|-] key[,[+|-] key[,...]]
Sort processes. (See the following list, "Sort keys.")
+
Return key to default direction.
-Reverse
default direction on key.
S
Include child processes' CPU time and page faults.
Sort keys
c, cmd
Name of executable.
C, cmdline
Whole command line.
f, flags
Flags.
g, pgrp
Group ID of process.
G, tpgid
Group ID of associated tty.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (244 of 351) [15/ 05/ 2002 18: 03: 40] 301
301 Page 302 303
Linux Commands (Linux in a Nutshell, 3rd Edition)
j, cutime

Cumulative user time.
J, cstime
Cumulative system time.
k, utime
User time.
K, stime
System time.
m, min_ flt
Number of minor page faults.
M, maj_ flt
Amount of major page faults.
n, cmin_ flt
Total minor page faults.
N, cmaj_ flt
Total major page faults.
o, session
Session ID.
p, pid
Process ID.
P, ppid
Parent's process ID.
r, rss
Resident set size.
R, resident
Resident pages.
s, size
Kilobytes of memory used.
S, share
Number of shared pages.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (245 of 351) [15/ 05/ 2002 18: 03: 40] 302
302 Page 303 304
Linux Commands (Linux in a Nutshell, 3rd Edition)
t, tty

tty.
T, start_ time
Process's start time.
U, uid
User ID.
u, user
User's name.
v, vsize
Bytes of VM used.
y, priority
Kernel's scheduling priority.
Fields
PRI
Process's scheduling priority. A higher number indicates lower priority.
NI
Process's nice value. A higher number indicates less CPU time.
SIZE
Size of virtual image.
RSS
Resident set size (amount of physical memory), in kilobytes.
WCHAN
Kernel function in which process resides.
STAT
Status:
R
Runnable
T
Stopped
D
Asleep and not interruptible
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (246 of 351) [15/ 05/ 2002 18: 03: 40] 303
303 Page 304 305
Linux Commands (Linux in a Nutshell, 3rd Edition)
S
Asleep
Z
Zombie
W
No resident pages (second field)
N
Positive nice value (third field)
TT
Associated tty.
PAGEIN
Number of major page faults.
TRS
Size of resident text.
SWAP
Amount of swap used, in kilobytes.
SHARE
Shared memory.

psupdate psupdate [mapfile]
System administration command. Update the psupdate database (on some systems /boot/ psupdate; on others,
/etc/ psdatabase), which contains information about the kernel image system map file. If no mapfile is specified,
psupdate uses the default (which is either /usr/ src/ linux/ vmlinux or /usr/ src/ linux/ tools/ zSystem, depending on
the distribution).

pwck pwck [option] [files]
System administration command. Remove corrupt or duplicate entries in the /etc/ passwd and /etc/ shadow files.
pwck will prompt for a "yes" or "no" before deleting entries. If the user replies "no," the program will exit.
Alternate passwd and shadow files can be checked. If correctable errors are found, the user will be encouraged to
run the usermod command.

Option
-n
Noninteractive mode. Don't prompt for input, and delete no entries. Return appropriate exit status.
Exit status

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (247 of 351) [15/ 05/ 2002 18: 03: 40] 304
304 Page 305 306
Linux Commands (Linux in a Nutshell, 3rd Edition)
0

Success.
1
Syntax error.
2
One or more bad password entries found.
3
Could not open password files.
4
Could not lock password files.
5
Could not write password files.

pwconv pwconv
pwunconv
System administration command. Convert unshadowed entries in /etc/ passwd into shadowed entries in the
/etc/ shadow file. Replace the encrypted password in /etc/ password with an x. Shadowing passwords keeps them
safe from password cracking programs. pwconv creates additional expiration information for the /etc/ shadow
file from entries in your /etc/ login. defs file. If you add new entries to the /etc/ passwd file, you can run pwconv
again to transfer the new information to /etc/ shadow. Already shadowed entries are ignored. pwunconv restores
the encrypted passwords to your /etc/ passwd file and removes the /etc/ shadow file. Some expiration information
is lost in the conversion.

pwd pwd
Print the full pathname of the current working directory. See also the dirs shell command, built in to both bash
and csh/ tcsh.

quota quota [options] [user| group]
Display disk usage and total space allowed for a designated user or group. With no argument, the quota for the
current user is displayed. This command reports quotas for all filesystems listed in /etc/ fstab.

Options
-g
Given with a user argument, display the quotas for the groups of which the user is a member, instead of
the user's quotas.
-q

Display information only for filesystems in which the user is over quota.
-u

The default behavior. When used with -g, display both user and group quota information.
-v

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (248 of 351) [15/ 05/ 2002 18: 03: 40] 305
305 Page 306 307
Linux Commands (Linux in a Nutshell, 3rd Edition)
Display quotas for filesystems even if no storage is currently allocated.

raidstart raidstart [options] [devices]
raidstop [options] [devices]
System administration command. Start or stop RAID devices as defined in the RAID configuration file,
/etc/ raidtab. If option -a (or --all) is used, no devices need to be given; the command will be applied to all the
devices defined in the configuration file.

Options
-a, --all
Apply command to all devices defined in the RAID configuration file.
-c file, --configfile file
Use file instead of /etc/ raidtab.
-h, --help
Print usage message and exit.
-V, --version
Print version and exit.

ramsize ramsize [option] [image [size [offset]]]
System administration command. If no options are specified, print usage information for the RAM disk. The pair
of bytes at offset 504 in the kernel image normally specify the RAM size; with a kernel image argument, print
the information found at that offset. To change that information, specify a new size (in kilobytes). You may also
specify a different offset. Note that rdev -r is the same as ramsize.

Option
-o
offset
Same as specifying an offset as an argument.

ranlib ranlib filename
Generate an index for archive file filename. Same as running ar -s.

rarp rarp [options]
System administration command. Administer the Reverse Address Resolution Protocol table (usually
/proc/ net/ rarp).

Options
-a [hostname]
Show all entries. If hostname is specified, show only the entries relevant to hostname, which may be a
list.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (249 of 351) [15/ 05/ 2002 18: 03: 40] 306
306 Page 307 308
Linux Commands (Linux in a Nutshell, 3rd Edition)
-d hostname

Remove the entries relevant to hostname, which may be a list.
-s hostname hw_ addr
Add a new entry for hostname, with the hardware address hw_ addr.
-t type
Check only for type entries when consulting or changing the table. type may be ether (the default) or
ax25.

-v
Verbose mode.

rcp rcp [options] file1 file2
rcp [options] file ... directory
Copy files between two machines. Each file or directory is either a remote filename of the form
rname@ rhost: path or a local filename.

Options
-k
Attempt to get tickets for remote host; query krb_ realmofhost to determine realm.
-p
Preserve modification times and modes of the source files.
-r
If any of the source files are directories, rcp copies each subtree rooted at that name. The destination
must be a directory.

-x
Turns on DES encryption for all data passed by rcp.

rdate rdate [options] [host...]
TCP/ IP command. Retrieve the date and time from a host or hosts on the network and optionally set the local
system time.

Options
-p
Print the retrieved dates.
-s
Set the local system time from the host; must be specified by root.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (250 of 351) [15/ 05/ 2002 18: 03: 40] 307
307 Page 308 309
Linux Commands (Linux in a Nutshell, 3rd Edition)
rdev rdev [options] [image [value [offset]]]
System administration command. If no arguments are specified, display a line, in /etc/ mtab syntax, that describes
the root filesystem. Otherwise, change the values of the bytes in the kernel image that describe the RAM disk
size (by default located at decimal byte offset 504 in the kernel), VGA mode (default 506), and root device
(default 508). You must specify the kernel image to change and may specify a new value and a different offset.

Options
-o
offset
Same as specifying an offset as an argument. The offset is given in decimal.
-r
Behave like ramsize.
-s
Behave like swapdev.
-v
Behave like vidmode.
-R
Behave like rootflags.

rdist rdist [options] [names]
System administration command. Remote file distribution client program. rdist maintains identical copies of
files over multiple hosts. It reads commands from a file named distfile to direct the updating of files and/ or
directories. An alternative distfile can be specified with the -f option or the -c option.

Options
-a
num
Do not update filesystems with fewer than num bytes free.
-c name [login@] host[: dest]
Interpret the arguments as a small distfile, where login is the user to log in as, host is the destination host,
name is the local file to transfer, and dest is the remote name where the file should be installed.

-d var= value
Define var to have value. This option defines or overrides variable definitions in the distfile. Set the
variable var to value.

-f file
Read input from file (by default, distfile). If file is -, read from standard input.
-l options
Specify logging options on the local machine.
-m machine

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (251 of 351) [15/ 05/ 2002 18: 03: 40] 308
308 Page 309 310
Linux Commands (Linux in a Nutshell, 3rd Edition)
Update only machine. May be specified multiple times for multiple machines.
-n
Suppress normal execution. Instead, print the commands that would have been executed.
-ooptions
Specify one or more options, which must be comma-separated.
chknfs
Suppress operations on files that reside on NFS filesystems.
chkreadonly
Check filesystem to be sure it is not read-only before attempting to perform updates.
chksym
Do not update files that exist on the local host but are symbolic links on the remote host.
compare
Compare files; use this comparison rather than age as the criteria for determining which files
should be updated.

follow
Interpret symbolic links, copying the file to which the link points instead of creating a link on the
remote machine.

ignlnks
Ignore links that appear to be unresolvable.
nochkgroup
Do not update a file's group ownership unless the entire file needs updating.
nochkmode
Do not update file mode unless the entire file needs updating.
nochkowner
Do not update file ownership unless the entire file needs updating.
nodescend
Suppress recursive descent into directories.
noexec
Suppress rdist of executables that are in a. out format.
numchkgroup
Check group ownership by group ID instead of by name.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (252 of 351) [15/ 05/ 2002 18: 03: 40] 309
309 Page 310 311
Linux Commands (Linux in a Nutshell, 3rd Edition)
numchkowner

Check file ownership by user ID instead of by name.
quiet
Quiet mode; do not print commands as they execute.
remove
Remove files that exist on the remote host but not the local host.
savetargets
Save updated files in name. old.
verify
Print a list of all files on the remote machine that are out of date, but do not update them.
whole
Preserve directory structure by creating subdirectories on the remote machine. For example, if you
rdist the file /foo/ bar into the directory /baz, it would produce the file /baz/ foo/ bar, instead of the
default, /baz/ bar.

younger
Do not update files that are younger than the master files.
-p path
Specify the path to search for rdistd on the remote machine.
-t seconds
Specify the timeout period (default 900 seconds) after which rdist will sever the connection if the remote
server has not yet responded.

-A num
Specify the minimum number of inodes that rdist requires.
-D
Debugging mode.
-F
Execute all commands sequentially, without forking.
-L options
Specify logging options on the remote machine.
-M num
Do not allow more than num child rdist processes to run simultaneously. Default is 4.
-P path

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (253 of 351) [15/ 05/ 2002 18: 03: 40] 310
310 Page 311 312
Linux Commands (Linux in a Nutshell, 3rd Edition)
Specify path to rsh on the local machine.

rdistd rdistd options
System administration command. Start the rdist server. Note that you must specify the -S option, unless you are
simply querying for version information with -V.

Options
-D
Debugging mode.
-S
Start the server.
-V
Display the version number and exit immediately.

reboot reboot [options]
System administration command. Close out filesystems, shut down the system, then reboot the system. Because
this command immediately stops all processes, it should be run only in single-user mode. If the system is not in
runlevel 0 or 6, reboot calls shutdown -nf.

Options
-d
Suppress writing to /var/ log/ wtmp.
-f
Call reboot even when shutdown would normally be called.
-n
Suppress normal call to sync.
-w
Suppress normal execution; simply write to /var/ log/ wtmp.

renice renice [priority] [options] [target]
Control the scheduling priority of various processes as they run. May be applied to a process, process group, or
user (target). A privileged user may alter the priority of other users' processes. priority must, for ordinary users,
lie between 0 and the environment variable PRIO_ MAX (normally 20), with a higher number indicating
increased niceness. A privileged user may set a negative priority, as low as PRIO_ MIN, to speed up processes.

Options
+num
Specify number by which to increase current priority of process, rather than an absolute priority number.
-num
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (254 of 351) [15/ 05/ 2002 18: 03: 40] 311
311 Page 312 313
Linux Commands (Linux in a Nutshell, 3rd Edition)
Specify number by which to decrease current priority of process, rather than an absolute priority number.
-g
Interpret target parameters as process group IDs.
-p
Interpret target parameters as process IDs (default).
-u
Interpret target parameters as usernames.

reset reset
Clear screen (reset terminal).

rev rev [file]
Reverse the lines of a file onto standard output. The order of characters on each line is also reversed. If no file is
specified, rev reads from standard input.

rexecd rexecd command-line
TCP/ IP command. Server for the rexec routine, providing remote execution facilities with authentication based
on usernames and passwords. rexecd is started by inetd and must have an entry in inetd's configuration file,
/etc/ inetd. conf. When rexecd receives a service request, the following protocol is initiated:

1. The server reads characters from the socket up to a null byte. The resulting string is interpreted as an
ASCII number, base 10.

2. If the number received in step 1 is nonzero, it is interpreted as the port number of a secondary stream to
be used for stderr. A second connection is then created to the specified port on the client's machine.

3. A null-terminated username of at most 16 characters is retrieved on the initial socket.
4. A null-terminated, unencrypted password of at most 16 characters is retrieved on the initial socket.
5. A null-terminated command to be passed to a shell is retrieved on the initial socket. The length of the
command is limited by the upper bound on the size of the system's argument list.

6. rexecd then validates the user, as is done at login time and, if the authentication was successful, changes
to the user's home directory and establishes the user and group protections of the user.

7. A null byte is returned on the connection associated with stderr, and the command line is passed to the
normal login shell of the user. The shell inherits the network connections established by rexecd.

Diagnostics
Username too long
Name is longer than 16 characters.
Password too long
Password is longer than 16 characters.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (255 of 351) [15/ 05/ 2002 18: 03: 40] 312
312 Page 313 314
Linux Commands (Linux in a Nutshell, 3rd Edition)
Command too long

Command passed is too long.
Login incorrect
No password file entry for the username exists.
Password incorrect
Wrong password was supplied.
No remote directory
chdir
to home directory failed.
Try again
fork
by server failed.
<shellname>:...
fork
by server failed. User's login shell could not be started.

rlogin rlogin rhost [options]
Remote login. rlogin connects the terminal on the current local host system to the remote host system rhost. The
remote terminal type is the same as your local terminal type. The terminal or window size is also copied to the
remote system if the server supports it.

Options
-8
Allow an 8-bit input data path at all times.
-ec
Specify escape character c (default is ~).
-d
Debugging mode.
-k
Attempt to get tickets from remote host, requesting them in the realm as determined by krb_ realm-ofhost.

-l username
Specify a different username for the remote login. Default is the same as your local username.
-x
Turns on DES encryption for all data passed via the rlogin session.
-E

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (256 of 351) [15/ 05/ 2002 18: 03: 40] 313
313 Page 314 315
Linux Commands (Linux in a Nutshell, 3rd Edition)
Do not interpret any character as an escape character.

-K
Suppress all Kerberos authentication.
-L
Allow rlogin session to be run without any output postprocessing (i. e., run in litout mode).

rlogind rlogind [options]
TCP/ IP command. Server for the rlogin program, providing a remote login facility, with authentication based on
privileged port numbers from trusted hosts. rlogind is invoked by inetd when a remote login connection is
requested and executes the following protocol:

l The server checks the client's source port. If the port is not in the range 0-023, the server aborts the
connection.

l The server checks the client's source address and requests the corresponding hostname. If the hostname
cannot be determined, the dot-notation representation of the host address is used.

The login process propagates the client terminal's baud rate and terminal type, as found in the environment
variable, TERM.

Options
-a
Verify hostname.
-l
Do not authenticate hosts via a nonroot .rhosts file.
-n
Suppress keep-alive messages.

rm rm [options] files
Delete one or more files. To remove a file, you must have write permission in the directory that contains the file,
but you need not have permission on the file itself. If you do not have write permission on the file, you will be
prompted (y or n) to override.

Options
-d, --directory
Remove directories, even if they are not empty. Available only to a privileged user.
-f, --force
Remove write-protected files without prompting.
--help
Print a help message and then exit.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (257 of 351) [15/ 05/ 2002 18: 03: 40] 314
314 Page 315 316
Linux Commands (Linux in a Nutshell, 3rd Edition)
-i, --interactive

Prompt for y (remove the file) or n (do not remove the file).
-r, -R, --recursive
If file is a directory, remove the entire directory and all its contents, including subdirectories. Be
forewarned: use of this option can be dangerous.

-v, --verbose
Turn on verbose mode. (rm prints the name of each file before removing it.)
--version
Print version information and then exit.
--
Mark the end of options. Use this when you need to supply a filename beginning with -.

rmail rmail user...
TCP/ IP command. Handle remote mail received via uucp, collapsing From lines in the form generated by mail
into a single line of the form return-path! sender and passing the processed mail onto sendmail. rmail is
explicitly designed for use with uucp and sendmail.

rmdir rmdir [options] directories
Delete the named directories (not the contents). directories are deleted from the parent directory and must be
empty (if not, rm -r can be used instead). See also mkdir.

Options
--help
Print a help message and then exit.
--ignore-fail-on-non-empty
Ignore failure to remove directories that are not empty.
-p, --parents
Remove directories and any intervening parent directories that become empty as a result; useful for
removing subdirectory trees.

--verbose
Turn on verbose mode; print message for each directory as it is processed.
--version
Print version information and then exit.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (258 of 351) [15/ 05/ 2002 18: 03: 40] 315
315 Page 316 317
Linux Commands (Linux in a Nutshell, 3rd Edition)
rmmod rmmod [option] modules
System administration command. Unload a module or list of modules from the kernel. This command is
successful only if the specified modules are not in use and no other modules are dependent on them.

Option
-r
Recursively remove stacked modules (all modules that use the specified module).

rootflags rootflags [option] image [flags [offset]]
System administration command. Sets flags for a kernel image. If no arguments are specified, print flags for the
kernel image. flags is a 2-byte integer located at offset 498 in a kernel image. Currently the only effect of flags is
to mount the root filesystem in read-only mode if flags is non-zero. You may change flags by specifying the
kernel image to change, the new flags, and the byte-offset at which to place the new information (the default is
498). Note that rdev -R is a synonym for rootflags. If LILO is used, rootflags is not needed. flags can be set
from the LILO prompt during a boot.

Option
-o
offset
Same as specifying an offset as an argument.

route route [option] [command]
TCP/ IP command. Manually manipulate the routing tables normally maintained by routed. route accepts two
commands: add, to add a route, and del, to delete a route. The two commands have the following syntax:

add [-net | -host] address [gw gateway]
[netmask mask] [mss tcp-mss] [dev device]
del address

address is treated as a plain route unless -net is specified or address is found in /etc/ networks. -host can be used
to specify that address is a plain route whether or not it is found in /etc/ networks. The keyword default means to
use this route for all requests if no other route is known. You can specify the gateway through which to route
packets headed for that address, its netmask, TCP mss, and the device with which to associate the route. Only a
privileged user may modify the routing tables.

If no command is specified, route prints the routing tables.
Option
-n
Show numerical addresses; do not look up hostnames. (Useful if DNS is not functioning properly.)

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (259 of 351) [15/ 05/ 2002 18: 03: 40] 316
316 Page 317 318
Linux Commands (Linux in a Nutshell, 3rd Edition)
routed routed [options] [logfile]
TCP/ IP command. Network routing daemon. routed is invoked by a privileged user at boot time to manage the
Internet routing tables. The routing daemon uses a variant of the Xerox NS Routing Information Protocol in
maintaining up-to-date kernel routing-table entries. When routed is started, it uses the SIOCGIFCONF ioctl call
to find those directly connected interfaces configured into the system and marked up. routed transmits a
REQUEST packet on each interface, then enters a loop, listening for REQUEST and RESPONSE packets from
other hosts. When a REQUEST packet is received, routed formulates a reply based on the information
maintained in its internal tables. The generated RESPONSE packet contains a list of known routes. Any
RESPONSE packets received are used to update the routing tables as appropriate.

When an update is applied, routed records the change in its internal tables, updates the kernel routing table, and
generates a RESPONSE packet reflecting these changes to all directly connected hosts and networks.

Options
-d
Debugging mode. Log additional information to the logfile.
-g

Offer a route to the default destination.
-q

Opposite of -s option.
-s

Force routed to supply routing information, whether it is acting as an internetwork router or not.
-t

Stop routed from going into background and releasing itself from the controlling terminal, so that
interrupts from the keyboard will kill the process.

rpcgen rpcgen [options] file
Parse file, which should be written in the RPC language, and produce a program written in C that implements the
RPC code. Place header code generated from file. x in file. h, XDR routines in file_ xdr. c, server code in file_ svc. c,
and client code in file_ clnt. c. Lines preceded by % are not parsed. By default, rpcgen produces SunOS 4.1-
compatible code.

-a
Produce all files (client and server).
-5
Produce SVR4-compatible code.
-c
Create XDR routines. Cannot be used with other options.
-C
Produce ANSI C code (default).
-Dname[= value]
Define the symbol name, and set it equal to value or 1.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (260 of 351) [15/ 05/ 2002 18: 03: 40] 317
317 Page 318 319
Linux Commands (Linux in a Nutshell, 3rd Edition)
-h

Produce a header file. With -T, make the file support RPC dispatch tables. Cannot be used with other
options.

-I
Produce an inetd-compatible server.
-K secs
Specify amount of time that the server should wait after replying to a request and before exiting. Default
is 120. A secs of -1 prevents the program from ever exiting.

-l
Produce client code. Cannot be used with other options.
-m
Produce server code only, suppressing creation of a "main" routine. Cannot be used with other options.
-N
New style. Allow multiple arguments for procedures. Not necessarily backward compatible.
-o [file]
Print output to file or standard output.
-Ss
Create skeleton server code only.
-t
Create RPC dispatch table. Cannot be used with other options.
-T
Include support for RPC dispatch tables.

rpcinfo rpcinfo [options] [host] [program] [version]
NFS/ NIS command. Report RPC information. program can be either a name or a number. If a version is
specified, rpcinfo attempts to call that version of the specified program. Otherwise, it attempts to find all the
registered version numbers for the specified program by calling Version 0, and it attempts to call each registered
version.

Options
-b
program version
Make an RPC broadcast to the specified program and version, using UDP, and report all hosts that
respond.

-d program version
Delete the specified version of program's registration. Can be executed only by the user who added the
registration or a privileged user.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (261 of 351) [15/ 05/ 2002 18: 03: 40] 318
318 Page 319 320

Linux Commands (Linux in a Nutshell, 3rd Edition)
-n portnum
Use portnum as the port number for the -t and -u options, instead of the port number given by the
portmapper.

-p [host]
Probe the portmapper on host and print a list of all registered RPC programs. If host is not specified, it
defaults to the value returned by hostname.

-t host program [version]
Make an RPC call to program on the specified host, using TCP, and report whether a response was
received.

-u host program [version]
Make an RPC call to program on the specified host, using UDP, and report whether a response was
received.

Examples
To show all of the RPC services registered on the local machine, use:
$ rpcinfo -p
To show all of the RPC services registered on the machine named klaxon, use:
$ rpcinfo -p klaxon
To show all machines on the local net that are running the Network Information Service (NIS), use:
$ rpcinfo -b ypserv version | uniq
where version is the current NIS version obtained from the results of the -p switch earlier in this list.

rpm rpm [options]
The Red Hat Package Manager. A freely available packaging system for software distribution and installation.
RPM packages are built, installed, and queried with the rpm command. For detailed information on rpm, see
Chapter 5, "Red Hat and Debian Package Managers".

rsh rsh [options] host [command]
Execute command on remote host, or, if no command is specified, begin an interactive shell on the remote host
using rlogin.

Options
-d
Enable socket debugging.
-k
Cause rsh to obtain tickets for the remote host in realm instead of the remote host's realm as determined
by krb_ realmofhost( 3).

-l username

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (262 of 351) [15/ 05/ 2002 18: 03: 40] 319
319 Page 320 321
Linux Commands (Linux in a Nutshell, 3rd Edition)
Attempt to log in as username. By default, the name of the user executing rsh is used.
-n
Redirects the input to rsh from the special device /dev/ null. (This should be done when backgrounding
rsh from a shell prompt, to direct the input away from the terminal.)

-x
Turns on DES encryption for all data exchange.
-K
Suppress Kerberos authentication.

rshd rshd [options]
TCP/ IP command. Remote shell server for programs such as rcmd and rcp, which need to execute a
noninteractive shell on remote machines. rshd is started by inetd and must have an entry in inetd's configuration
file, /etc/ inetd. conf.

All options are exactly the same as those in rlogind, except for -L, which is unique to rshd.
Option
-L
Log all successful connections and failed attempts via syslogd.

rstat rstat host
TCP/ IP command. Summarize host's system status: the current time, uptime, and load averages --the average
number of jobs in the run queue. Queries the remote host's rstat_ svc daemon.

run-parts run-parts [options] [directory]
System administration command. Run, in lexical order, all scripts found in directory. Exclude scripts whose
filenames include nonalphanumeric characters (besides underscores and hyphens).

Options
--
Interpret all subsequent arguments as filenames, not options.
--test
Print information listing which scripts would be run, but suppress actual execution of them.
--umask= umask
Specify umask. The default is 022.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (263 of 351) [15/ 05/ 2002 18: 03: 40] 320
320 Page 321 322
Linux Commands (Linux in a Nutshell, 3rd Edition)
runlevel runlevel
System administration command. Display the previous and current system runlevels.

ruptime ruptime [options]
TCP/ IP command. Provide information on how long each machine on the local network has been up and which
users are logged in to each. If a machine has not reported in for 11 minutes, assume it is down. The listing is
sorted by hostname.

Options
-a
Include users who have been idle for more than one hour.
-l
Sort machines by load average.
-r
Reverse the normal sort order.
-t
Sort machines by uptime.
-u
Sort machines by the number of users logged in.

rusers rusers [options] [host]
TCP/ IP command. List the users logged on to host, or to all local machines, in who format (hostname,
usernames).

Options
-a
Include machines with no users logged in.
-l
Include more information: tty, date, time, idle time, remote host.

rwall rwall host [file]
TCP/ IP command. Print a message to all users logged on to host. If file is specified, read the message from it;
otherwise, read from standard input.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (264 of 351) [15/ 05/ 2002 18: 03: 40] 321
321 Page 322 323

Linux Commands (Linux in a Nutshell, 3rd Edition)
rwho rwho [option]
Report who is logged on for all machines on the local network (similar to who).
Option
-a
List users even if they've been idle for more than one hour.

rwhod rwhod
TCP/ IP command. System status server that maintains the database used by the rwho and ruptime programs. Its
operation is predicated on the ability to broadcast messages on a network. As a producer of information, rwhod
periodically queries the state of the system and constructs status messages, which are broadcast on a network. As
a consumer of information, it listens for other rwhod servers' status messages, validates them, then records them
in a collection of files located in the directory /var/ spool/ rwho. Messages received by the rwhod server are
discarded unless they originated at an rwhod server's port. Status messages are generated approximately once
every 3 minutes.

script script [option] [file]
Fork the current shell and make a typescript of a terminal session. The typescript is written to file. If no file is
given, the typescript is saved in the file typescript. The script ends when the forked shell exits, usually with Ctrl-D
or exit.

Option
-a
Append to file or typescript instead of overwriting the previous contents.

sed sed [options] [command] [files]
Stream editor --edit one or more files without user interaction. See Chapter 12, "The sed Editor", for more
information.

sendmail sendmail [flags] [address...]
System administration command. sendmail is a mail transfer agent (MTA) or, more simply, a mail router. It
accepts mail from a user's mail program, interprets the mail address, rewrites the address into the proper form for
the delivery program, and routes the mail to the correct delivery program.

Command-line flags
-bx
Set operation mode to x. Operation modes are:
a
Run in ARPAnet mode.
d

Run as a daemon.
i

Initialize the alias database.
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (265 of 351) [15/ 05/ 2002 18: 03: 40] 322
322 Page 323 324
Linux Commands (Linux in a Nutshell, 3rd Edition)
m

Deliver mail (default).
p

Print the mail queue.
s

Speak SMTP on input side.
t

Run in test mode.
v

Verify addresses; do not collect or deliver.
-C file

Use configuration file file.
-d level

Set debugging level.
-F name

Set full name of user to name.
-f name

Sender's name is name.
-h cnt

Set hop count (number of times message has been processed by sendmail) to cnt.
-n

Do not alias or forward.
-o x value

Set option x to value value. Options are described below.
-p protocol

Receive messages via the protocol protocol.
-q [time]

Process queued messages immediately, or at intervals indicated by time (for example, -q30m for every
half hour).
-r name

Obsolete form of -f.
-t

Read head for To:, Cc:, and Bcc: lines, and send to everyone on those lists.
-v

Verbose.
-X file

Log all traffic to file. Not to be used for normal logging.
Configuration options
The following options can be set with the -o flag on the command line or the O line in the configuration file:
7

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (266 of 351) [15/ 05/ 2002 18: 03: 40] 323
323 Page 324 325
Linux Commands (Linux in a Nutshell, 3rd Edition)
Format all incoming messages in 7 bits.
amin

If the D option is set, wait min minutes for the aliases file to be rebuilt before returning an alias database
out-of-date warning.
Afile

Use alternate alias file.
bminblocks[/ maxsize]

Require at least minblocks to be free, and optionally set the maximum message size to maxsize. If maxsize
is omitted, the slash is optional.
Bchar

Set unquoted space replacement character.
c

On mailers that are considered "expensive" to connect to, don't initiate immediate connection.
Cnum

Checkpoint the queue when mailing to multiple recipients. sendmail will rewrite the list of recipients
after each group of num recipients has been processed.
dx

Set the delivery mode to x. Delivery modes are d for deferred delivery, i for interactive (synchronous)
delivery, b for background (asynchronous) delivery, and q for queue only --i. e., deliver the next time the
queue is run.
D

Try to automatically rebuild the alias database if necessary.
ex

Set error processing to mode x. Valid modes are m to mail back the error message, w to write back the
error message, p to print the errors on the terminal (default), q to throw away error messages, and e to do
special processing for the BerkNet.
Etext

Set error message header. text is either text to add to an error message or the name of a file. A filename
must include its full path and begin with a /.
f

Save Unix-style From lines at the front of messages.
Fmode

Set default file permissions for temporary files. If this option is missing, default permissions are 0644.
G

Compare local mail names to the GECOS section in the password file.
g n

Default group ID to use when calling mailers.
Hfile

SMTP help file.
h num

Allow a maximum of num hops per message.
i

Do not take dots on a line by themselves as a message terminator.
I arg

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (267 of 351) [15/ 05/ 2002 18: 03: 40] 324
324 Page 325 326
Linux Commands (Linux in a Nutshell, 3rd Edition)
Use DNS lookups and tune them. Queue messages on connection refused. The arg arguments are
identical to resolver flags without the RES_ prefix. Each flag can be preceded by a plus or minus to
enable or disable the corresponding name server option. There must be a whitespace between the I and
the first flag.
j

Use MIME format for error messages.
Jpath

Set an alternative .forward search path.
knum

Specify size of the connection cache.
Ktime

Time out connections after time.
l

Do not ignore Errors-To header.
Ln

Specify log level.
m

Send to me (the sender) also if I am in an alias expansion.
MXvalue

Define a macro's value in command line. Assign value to macro X.
n

When running newaliases, validate the right side of aliases.
o

If set, this message may have old-style headers. If not set, this message is guaranteed to have new-style
headers (i. e., commas instead of spaces between addresses).
pwhat, what,...

Tune how private you want the SMTP daemon. The what arguments should be separated from one
another by commas. The what arguments may be any of the following:

public
Make SMTP fully public (default).
needmailhelo

Require site to send HELO or ELHO before sending mail.
needexpnhelo

Require site to send HELO or ELHO before answering an address expansion request.
needvrfyhelo

Like preceding argument but for verification requests.
noexpn

Deny all expansion requests.
novrfy

Deny all verification requests.
authwarnings

Insert special headers in mail messages advising recipients that the message may not be authentic.
goaway

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (268 of 351) [15/ 05/ 2002 18: 03: 40] 325
325 Page 326 327
Linux Commands (Linux in a Nutshell, 3rd Edition)
Set all of the previous arguments (except public).
restrictmailq

Allow only users of the same group as the owner of the queue directory to examine the mail
queue.
restrictqrun

Limit queue processing to root and the owner of the queue directory.
Puser

Send copies of all failed mail to user (usually postmaster).
qfact

Multiplier (factor) for high-load queuing.
Qqueuedir

Select the directory in which to queue messages.
R

Don't prune route addresses.
Sfile

Save statistics in the named file.
s

Always instantiate the queue file, even under circumstances in which it is not strictly necessary.
Ttime

Set the timeout on undelivered messages in the queue to the specified time.
tstz, dtz

Set name of the time zone.
Udatabase

Consult the user database database for forwarding information.
uN

Set default user ID for mailers.
v

Run in verbose mode.
Vhost

Fall-back MX host. host should be the fully qualified domain name of the fallback host.
w

Use a record for an ambiguous MX.
xload

Queues messages when load level is higher than load.
Xload

Refuse SMTP connections when load is higher than load.
yfactor

Penalize large recipient lists by factor.
Y

Deliver each job that is run from the queue in a separate process. This helps limit the size of running
processes on systems with very low amounts of memory.
zfactor

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (269 of 351) [15/ 05/ 2002 18: 03: 40] 326
326 Page 327 328
Linux Commands (Linux in a Nutshell, 3rd Edition)
Multiplier for priority increments. This determines how much weight to give to a message's precedence
header. sendmail's default is 1800.
Zinc

Increment priority of items remaining in queue by inc after each job is processed. sendmail uses 90,000
by default.

sendmail support files
/usr/ lib/ sendmail
Binary of sendmail.
/usr/ bin/ newaliases

Link to /usr/ lib/ sendmail; causes the alias database to be rebuilt.
/usr/ bin/ mailq

Prints a listing of the mail queue.
/etc/ sendmail. cf

Configuration file, in text form.
/etc/ sendmail. hf

SMTP help file.
/usr/ lib/ sendmail. st

Statistics file. Doesn't need to be present.
/etc/ aliases

Alias file, in text form.
/etc/ aliases.{ pag, dir}

Alias file in dbm format.
/var/ spool/ mqueue

Directory in which the mail queue and temporary files reside.
/var/ spool/ mqueue/ qf

Control (queue) files for messages.
/var/ spool/ mqueue/ df

Data files.
/var/ spool/ mqueue/ lf

Lockfiles.
/var/ spool/ mqueue/ tf

Temporary versions of af files, used during queue-file rebuild.
/var/ spool/ mqueue/ nf

Used when creating a unique ID.
/var/ spool/ mqueue/ xf

Transcript of current session.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (270 of 351) [15/ 05/ 2002 18: 03: 40] 327
327 Page 328 329

Linux Commands (Linux in a Nutshell, 3rd Edition)
setfdprm setfdprm [options] device [name]
Load disk parameters used when autoconfiguring floppy devices.
Options
-c
device
Clear parameters of device.
-n device
Disable format-detection messages for device.
-p device [name | parameter]
Permanently reset parameters for device. You can use name to specify a configuration, or you can specify
individual parameters. The parameters that can be specified are dev, size, sect, heads, tracks, stretch,
gap, rate, spec1,
or fmt_ gap. Consult /etc/ fdprm for the original values.

-y device
Enable format-detection messages for device.

setsid setsid command [arguments]
System administration command. Execute the named command and optional command arguments in a new
session.

sh sh [options] [file [arguments]]
The standard Unix shell, a command interpreter into which all other commands are entered. On Linux, this is
just another name for the bash shell. For more information, see Chapter 7, "bash: The Bourne-Again Shell", .

shar shar [options] files
shar -S [options]
Create shell archives (or shar files) that are in text format and can be mailed. These files may be unpacked later
by executing them with /bin/ sh. Other commands may be required on the recipient's system, such as compress,
gzip,
and uudecode. The resulting archive is sent to standard output, unless the -o option is given.

Options
-a, --net-headers
Allows automatic generation of headers. The -n option is required if the -a option is used.
-b bits, --bits-per-code= bits
Use -b bits as a parameter to compress (when doing compression). Default value is 12. The -b option
automatically turns on -Z.

-c, --cut-mark
Start the shar file with a line that says "Cut here."
-d delimiter, --here-delimiter= delimiter

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (271 of 351) [15/ 05/ 2002 18: 03: 40] 328
328 Page 329 330
Linux Commands (Linux in a Nutshell, 3rd Edition)
Use delimiter for the files in the shar instead of SHAR_ EOF.
-f, --basename
Causes only simple filenames to be used when restoring, which is useful when building a shar from
several directories or another directory. (If a directory name is passed to shar, the substructure of that
directory will be restored whether or not -f is used.)

-g level, --level-for-gzip= level
Use -level as a parameter to gzip (when doing compression). Default is 9. The -g option turns on the -z
option by default.

--help
Print a help summary on standard output, then exit.
-l nn, --whole-size-limit= nn
Limit the output file size to nn kilobytes but don't split input files. Requires use of -o.
-m, --no-timestamp
Don't generate touch commands to restore the file modification dates when unpacking files from the
archive.

-n name, --archive-name= name
Name of archive to be included in the header of the shar files. Required if the -a option is used.
--no-i18n
Do not produce internationalized shell archives; use default English messages. By default, shar produces
archives that will try to output messages in the unpacker's preferred language (as determined by
LANG/ LC_ MESSAGES).

-o prefix, --output-prefix= prefix
Save the archive to files prefix. 01 through prefix. nn (instead of sending it to standard output). This option
must be used when either -l or -L is used.

-p, --intermix-type
Allow positional parameter options. The options -B, -T, -z, and -Z may be embedded, and files to the
right of the option will be processed in the specified mode.

--print-text-domain-dir
Print the directory shar looks in to find messages files for different languages, then immediately exit.
-q, --quiet, --silent
Turn off verbose mode.
-s who@ where, --submitter= who@ where
Supply submitter name and address, instead of allowing shar to determine it automatically.
--version

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (272 of 351) [15/ 05/ 2002 18: 03: 40] 329
329 Page 330 331
Linux Commands (Linux in a Nutshell, 3rd Edition)
Print the version number of the program on standard output, then exit.

-w, --no-character-count
Do not check each file with wc -c after unpacking. The default is to check.
-x, --no-check-existing
Overwrite existing files without checking. Default is to check and not overwrite existing files. If -c is
passed as a parameter to the script when unpacking (sh archive -c), existing files will be overwritten
unconditionally. See also -X.

-z, --gzip
gzip
and uuencode all files prior to packing. Must be unpacked with uudecode and gunzip (or zcat).
-B, --uuencode
Treat all files as binary; use uuencode prior to packing. This increases the size of the archive, and it must
be unpacked with uudecode.

-D, --no-md5-digest
Do not use md5sum digest to verify the unpacked files. The default is to check.
-F, --force-prefix
Force the prefix character to be prepended to every line even if not required. May slightly increase the
size of the archive, especially if -B or -Z is used.

-L nn, --split-size-limit= nn
Limit output file size to nn kilobytes and split files if necessary. The archive parts created with this option
must be unpacked in correct order. Requires use of -o.

-M, --mixed-uuencode
Pack files in mixed mode (the default). Distinguishes files as either text or binary; binaries are uuencoded
prior to packing.

-P, --no-piping
Use temporary files instead of pipes in the shar file.
-Q, --quiet-unshar
Disable verbose mode.
-S, --stdin-file-list
Read list of files to be packed from standard input rather than from the command line. Input must be in a
form similar to that generated by the find command, with one filename per line.

-T, --text-files
Treat all files as text.
-V, --vanilla-operation
Produce shars that rely only upon the existence of sed and echo in the unsharing environment.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (273 of 351) [15/ 05/ 2002 18: 03: 40] 330
330 Page 331 332
Linux Commands (Linux in a Nutshell, 3rd Edition)
-X, --query-user

Prompt user to ask if files should be overwritten when unpacking.
-Z, --compress
Compress and uuencode all files prior to packing.

showmount showmount [options] [host]
NFS/ NIS command. Show information about an NFS server. This information is maintained by the mountd
server on host. The default value for host is the value returned by hostname. With no options, show the clients
that have mounted directories from the host. showmount is usually found in /usr/ sbin, which is not in the default
search path.

Options
-a, --all
Print all remote mounts in the format:
hostname: directory
where hostname is the name of the client and directory is the root of the filesystem that has been mounted.
-d, --directories
List directories that have been remotely mounted by clients.
-e, --exports
Print the list of exported filesystems.
-h, --help
Provide a short help summary.
--no-headers
Do not print headers.
-v, --version
Report the current version number of the program.

shutdown shutdown [options] when [message]
System administration command. Terminate all processing. when may be a specific time (in hh: mm format), a
number of minutes to wait (in +m format), or now. A broadcast message notifies all users to log off the system.
Processes are signaled with SIGTERM, to allow them to exit gracefully. /etc/ init is called to perform the actual
shutdown, which consists of placing the system in runlevel 1. Only privileged users can execute the shutdown
command. Broadcast messages, default or defined, are displayed at regular intervals during the grace period; the
closer the shutdown time, the more frequent the message.

Options
-c
Cancel a shutdown that is in progress.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (274 of 351) [15/ 05/ 2002 18: 03: 40] 331
331 Page 332 333
Linux Commands (Linux in a Nutshell, 3rd Edition)
-f

Reboot fast, by suppressing the normal call to fsck when rebooting.
-h
Halt the system when shutdown is complete.
-k
Print the warning message, but suppress actual shutdown.
-n
Perform shutdown without a call to init.
-r
Reboot the system when shutdown is complete.
-t sec
Ensure a sec-second delay between killing processes and changing the runlevel.

size size [options] [objfile...]
Print the number of bytes of each section of objfile and its total size. If objfile is not specified, a. out is used.
Options
-d
Display the size in decimal and hexadecimal.
--format format
Imitate the size command from either System V (--format sysv) or BSD (--format berkeley).
-o
Display the size in octal and hexadecimal.
--radix num
Specify how to display the size: in hexadecimal and decimal (if num is 10 or 16) or hexadecimal and
octal (if num is 8).

-x
Display the size in hexadecimal and decimal.
-A
Imitate System V's size command.
-B
Imitate BSD's size command.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (275 of 351) [15/ 05/ 2002 18: 03: 40] 332
332 Page 333 334
Linux Commands (Linux in a Nutshell, 3rd Edition)
slattach slattach [options] [tty]
TCP/ IP command. Attach serial lines as network interfaces, thereby preparing them for use as point-to-point
connections. Only a privileged user may attach or detach a network interface.

Options
-c
command
Run command when the connection is severed.
-d
Debugging mode.
-e
Exit immediately after initializing the line.
-h
Exit when the connection is severed.
-l
Create UUCP-style lockfile in /var/ spool/ uucp.
-L
Enable 3-wire operation.
-m
Suppress initialization of the line to 8 bits raw mode.
-n
Similar to mesg -n.
-p
protocol
Specify protocol, which may be slip, adaptive, ppp, or kiss.
-q
Quiet mode; suppress messages.
-s speed
Specify line speed.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (276 of 351) [15/ 05/ 2002 18: 03: 40] 333
333 Page 334 335
Linux Commands (Linux in a Nutshell, 3rd Edition)
sleep sleep amount[ units]
Wait a specified amount of time before executing another command. The default for units is seconds.

Time Units
s seconds
m minutes
h hours
d days

sort sort [options] [files]
Sort the lines of the named files. Compare specified fields for each pair of lines, or, if no fields are specified,
compare them by byte, in machine collating sequence. See also uniq, comm, and join.

Options
-b
Ignore leading spaces and tabs.
-c
Check whether files are already sorted, and, if so, produce no output.
-d
Sort in dictionary order.
-f
Fold --ignore uppercase/ lowercase differences.
--help
Print a help message and then exit.
-i
Ignore nonprinting characters (those outside ASCII range 040-176).
-m
Merge (i. e., sort as a group) input files.
-n
Sort in arithmetic order.
-ofile
Put output in file.
-r
Reverse the order of the sort.
-tc

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (277 of 351) [15/ 05/ 2002 18: 03: 40] 334
334 Page 335 336
Linux Commands (Linux in a Nutshell, 3rd Edition)
Separate fields with c (default is a tab).

-u
Identical lines in input file appear only one (unique) time in output.
-zrecsz
Provide recsz bytes for any one line in the file. This option prevents abnormal termination of sort in
certain cases.

+n [-m]
Skip n fields before sorting, and sort up to field position m. If m is missing, sort to end of line. Positions
take the form a. b, which means character b of field a. If .b is missing, sort at the first character of the
field.

-k n[, m]
Similar to +. Skip n-1 fields and stop at m-1 fields (i. e., start sorting at the nth field, where the fields are
numbered beginning with 1).

--version
Print version information and then exit.
-M
Attempt to treat the first three characters as a month designation (JAN, FEB, etc.). In comparisons, treat
JAN < FEB and any valid month as less than an invalid name for a month.

-T tempdir
Directory pathname to be used for temporary files.
Examples
List files by decreasing number of lines:
wc -l * | sort -r
Alphabetize a list of words, remove duplicates, and print the frequency of each word:
sort -fd wordlist | uniq -c
Sort the password file numerically by the third field (user ID):
sort +2n -t: /etc/ passwd

split split [option] [infile] [outfile]
Split infile into equal-sized segments. infile remains unchanged, and the results are written to outfileaa,
outfileab,
and so on. (default is xaa, xab, etc.). If infile is -(or missing), standard input is read. See also csplit.

Options
-n, -l
n, --lines= n
Split infile into n-line segments (default is 1000).

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (278 of 351) [15/ 05/ 2002 18: 03: 40] 335
335 Page 336 337
Linux Commands (Linux in a Nutshell, 3rd Edition)
-b n[ bkm], --bytes= n[ bkm]

Split infile into n-byte segments. Alternate blocksizes may be specified:
b
512 bytes
k
1 kilobyte
m
1 megabyte
-C bytes[ bkm], --line-bytes= bytes[ bkm]
Put a maximum of bytes into file; insist on adding complete lines.
--help
Print a help message and then exit.
--verbose
Print a message for each output file.
--version
Print version information and then exit.
-Take
input from the standard input.
Examples
Break bigfile into 1000-line segments:
split bigfile
Join four files, then split them into 10-line files named new. aa, new. ab, and so on. Note that without the -, new.
would be treated as a nonexistent input file:

cat list[ 1-4] | split -10 -new.

stat stat filename [filenames . . . ]
Print out the contents of an inode as they appear to the stat system call in a human-readable format. The error
messages "Can't stat file" or "Can't lstat file" usually mean the file doesn't exist. "Can't readlink file" generally
indicates that something is wrong with a symbolic link.

Output
Sample output from the command:
stat /
File: "/"

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (279 of 351) [15/ 05/ 2002 18: 03: 40] 336
336 Page 337 338
Linux Commands (Linux in a Nutshell, 3rd Edition)
Size: 1024 Filetype: Directory
Mode: (0755/ drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ system)
Device: 3,3 Inode: 2 Links: 21
Access: Tue Apr 11 04: 02: 01 2000( 00000.11: 47: 35)
Modify: Wed Nov 17 11: 46: 38 1999( 00146.03: 02: 58)
Change: Wed Nov 17 11: 46: 38 1999( 00146.03: 02: 58)

strace strace [options] command [arguments]
Trace the system calls and signals for command and arguments. strace shows you how data is passed between
the program and the system kernel. With no options, strace prints a line to stderr for each system call. It shows
the call name, arguments given, the return value, and any error messages generated. A signal is printed with both
its signal symbol and a descriptive string.

Options
-a
n
Align the return values in column n.
-c
Count all calls and signals and create a summary report when the program has ended.
-d
Debug mode. Print debugging information for strace on stderr.
-e
keyword[=[!] values
Pass an expression to strace to limit the types of calls or signals that are traced or change how they are
displayed. The values for these expressions can be given as a comma-separated list. Preceding the list
with an exclamation mark (!) negates the list. The special values of all and none are valid, as are the
values listed with the following keywords.

abbrev= names
Abbreviate output from large structures for system calls listed in names.
read= descriptors
Print all data read from the given file descriptors.
signal= symbols
Trace the listed signal symbols (for example, signal= SIGIO, SIGHUP).
trace= values
Trace the listed values. values may be a list of system call names or one of the following sets of
system calls:

file Calls that take a filename as an argument
ipc Interprocess communication
network Network-related
process Process management
signal Signal-related
verbose= names

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (280 of 351) [15/ 05/ 2002 18: 03: 40] 337
337 Page 338 339
Linux Commands (Linux in a Nutshell, 3rd Edition)
Unabbreviate structures for the given system call names. Default is none.

write= descriptors
Print all data written to the given file descriptors.
-f
Trace forked processes.
-ff
Write system calls for forked processes to separate files named filename. pid when using the -o option.
-h
Print help and exit.
-i
Print instruction pointer with each system call.
-o filename
Write output to filename instead of stderr. If filename starts with the pipe symbol |, treat the rest of the
name as a command to which output should be piped.

-O n
Override strace's built-in timing estimates, and just subtract n microseconds from the timing of each
system call to adjust for the time it takes to measure thestentry> call.

-p pid
Attach to the given process ID and begin tracking. strace can track more than one process if more than
one option -p is given. Type Ctrl-c to end the trace.

-q
Quiet mode. Suppress attach and detach messages from strace.
-r
Relative timestamp. Print time in microseconds between system calls.
-s n
Print only the first n characters of a string. Default value is 32.
-S value
Sort output of -c option by the given value. value may be calls, name, time, or nothing. By default it is
sorted by time.

-T
Print time spent in each system call.
-t
Print time of day on each line of output.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (281 of 351) [15/ 05/ 2002 18: 03: 40] 338
338 Page 339 340
Linux Commands (Linux in a Nutshell, 3rd Edition)
-tt
Print time of day with microseconds on each line of output.
-ttt
Print timestamp on each line as number of seconds since the Epoch.
-u username
Run command as username. Needed when tracing setuid and setgid programs.
-V
Print version and exit.
-v
Verbose. Do not abbreviate structure information.
-x
Print all non-ASCII strings in hexadecimal.
-xx
Print all strings in hexadecimal.

strfile strfile [options] input_ file [output_ file]
unstr [-c delimiter] input_ file[. ext] [output_ file]
strfile creates a random-access file for storing strings. The input file should be a file containing groups of lines
separated by a line containing a single percent sign (or other specified delimiter character). strfile creates an
output file that contains a header structure and a table of file offsets for each group of lines, allowing random
access of the strings. The output file, if not specified on the command line, is named sourcefile. dat. unstr undoes
the work of strfile, printing out the strings contained in the input file in the order that they are listed in the
header file data. If no output file is specified, unstr prints to standard output; otherwise, it prints to the file
specified. unstr can also globally change the delimiter character in a strings file.

Options
Of the following options, only -c can be used with unstr. All other options apply to strfile alone.
-c delimiter
Change the delimiting character from the percent sign to delimiter. Valid for both strfile and unstr.
-i
Ignore case when ordering the strings.
-o
Order the strings alphabetically.
-r
Randomize access to the strings.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (282 of 351) [15/ 05/ 2002 18: 03: 40] 339
339 Page 340 341
Linux Commands (Linux in a Nutshell, 3rd Edition)
-s
Run silently; don't give a summary message when finished.
-x
Set the STR_ ROTATED bit in the header str_ flags field.

strings strings [options] files
Search each file specified and print any printable character strings found that are at least four characters long and
followed by an unprintable character.

Options
-, -a, --all
Scan entire object files; default is to scan only the initialized and loaded sections for object files.
-f, --print-file-name
Print the name of the file before each string.
-min-len, -n min-len, --bytes= min-len
Print only strings that are at least min-len characters.
-t base, --radix= base
Print the offset within the file before each string, in the format specified by base:
d
Decimal
o
Octal
x
Hexadecimal
--target= format
Specify an alternative object code format to the system default.
-o
Same as -t o.
--help
Print help message and then exit.
-v, --version
Print version information and then exit.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (283 of 351) [15/ 05/ 2002 18: 03: 40] 340
340 Page 341 342
Linux Commands (Linux in a Nutshell, 3rd Edition)
strip strip [options] files
Remove symbols from object files, thereby reducing file sizes and freeing disk space.
Options
-F
format, --target= format
Expect the input file to be in the format format.
-O format, --output-target= format
Write output file in format.
-R section, --remove-section= section
Delete section.
-s, --strip-all
Strip all symbols.
-S, -g,--strip-debug
Strip debugging symbols.
-x, --discard-all
Strip nonglobal symbols.
-X, --discard-locals
Strip local symbols that were generated by the compiler.
-v, --verbose
Verbose mode.

stty stty [options] [modes]
Set terminal I/ O options for the current standard input device. Without options, stty reports the terminal settings
that differ from those set by running stty sane, where a ^ indicates the Ctrl key and ^` indicates a null value.
Most modes can be negated using an optional -(shown in brackets). The corresponding description is also
shown in brackets. Some arguments use non-POSIX extensions; these are marked with a *.

Options
-a, --all
Report all option settings.
-g
Report settings in hex.
Control modes
n
Set terminal baud rate to n (e. g., 2400).
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (284 of 351) [15/ 05/ 2002 18: 03: 40] 341
341 Page 342 343
Linux Commands (Linux in a Nutshell, 3rd Edition)
[-] clocal
[Enable] disable modem control.
[-] cread
[Disable] enable the receiver.
csbits
Set character size to bits, which must be 5, 6, 7, or 8.
[-] cstopb
[1] 2 stop bits per character.
[-] hup
[Do not] hang up connection on last close.
[-] hupcl
Same as previous.
ispeed n
Set terminal input baud rate to n.
ospeed n
Set terminal output baud rate to n.
[-] parenb
[Disable] enable parity generation and detection.
[-] parodd
Use [even] odd parity.
[-] crtscts*
[Disable] enable RTS/ CTS handshaking.
Flow control modes
The following flow control modes are available by combining the ortsfl, ctsflow, and rtsflow flags:

Flag Settings Flow Control Mode
ortsfl rtsflow ctsflow Enable unidirectional flow control.
ortsfl rtsflow -ctsflow Assert RTS when ready to send.
ortsfl -rtsflow ctsflow No effect.
ortsfl -rtsflow -ctsflow Enable bidirectional flow control.
-ortsfl rtsflow ctsflow Enable bidirectional flow control.
-ortsfl rtsflow -ctsflow No effect.
-ortsfl -rtsflow ctsflow Stop transmission when CTS drops.
-ortsfl -rtsflow -ctsflow Disable hardware flow control.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (285 of 351) [15/ 05/ 2002 18: 03: 40] 342
342 Page 343 344
Linux Commands (Linux in a Nutshell, 3rd Edition)
Input modes
[-] brkint
[Do not] signal INTR on break.
[-] icrnl
[Do not] map CR to NL on input.
[-] ignbrk
[Do not] ignore break on input.
[-] igncr
[Do not] ignore CR on input.
[-] ignpar
[Do not] ignore parity errors.
[-] inlcr
[Do not] map NL to CR on input.
[-] inpck
[Disable] enable input parity checking.
[-] istrip
[Do not] strip input characters to 7 bits.
[-] iuclc*
[Do not] map uppercase to lowercase on input.
[-] ixany*
Allow [XON] any character to restart output.
[-] ixoff [-] tandem
[Do not] send START/ STOP characters when queue is nearly empty/ full.
[-] ixon
[Disable] enable START/ STOP output control.
[-] parmrk
[Do not] mark parity errors.
[-] imaxbel*
When input buffer is too full to accept a new character, [flush the input buffer] beep without flushing the
input buffer.

Output modes
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (286 of 351) [15/ 05/ 2002 18: 03: 40] 343
343 Page 344 345
Linux Commands (Linux in a Nutshell, 3rd Edition)
bsn
Select style of delay for backspaces (0 or 1).
crn
Select style of delay for carriage returns (0-3).
ffn
Select style of delay for formfeeds (0 or 1).
nln
Select style of delay for linefeeds (0 or 1).
tabn
Select style of delay for horizontal tabs (0-3).
vtn
Select style of delay for vertical tabs (0 or 1).
[-] ocrnl*
[Do not] map CR to NL on output.
[-] ofdel*
Set fill character to [NULL] DEL.
[-] ofill*
Delay output with [timing] fill characters.
[-] olcuc*
[Do not] map lowercase to uppercase on output.
[-] onlcr*
[Do not] map NL to CR-NL on output.
[-] onlret*
On the terminal, NL performs [does not perform] the CR function.
[-] onocr*
Do not [do] output CRs at column 0.
[-] opost
[Do not] postprocess output.
Local modes
[-] echo

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (287 of 351) [15/ 05/ 2002 18: 03: 40] 344
344 Page 345 346
Linux Commands (Linux in a Nutshell, 3rd Edition)
[Do not] echo every character typed.
[-] echoe, [-] crterase
[Do not] echo ERASE character as BS-space-BS string.
[-] echok
[Do not] echo NL after KILL character.
[-] echonl
[Do not] echo NL.
[-] icanon
[Disable] enable canonical input (ERASE, KILL, WERASE, and RPRINT processing).
[-] iexten
[Disable] enable extended functions for input data.
[-] isig
[Disable] enable checking of characters against INTR, SUSPEND, and QUIT.
[-] noflsh
[Enable] disable flush after INTR or QUIT.
[-] tostop*
[Do not] send SIGTTOU when background processes write to the terminal.
[-] xcase*
[Do not] change case on local output.
[-] echoprt, [-] prterase*
When erasing characters, echo them backward, enclosed in \ and /.
[-] echoctl. [-] ctlecho*
Do not echo control characters literally. Use hat notation (e. g., ^Z).
[-] echoke [-] crtkill*
Erase characters as specified by the echoprt and echoe settings (default is echoctl and echok settings).
Control assignments
ctrl-char c
Set control character to c. ctrl-char is dsusp (flush input and then send stop), eof, eol, eol2 (alternate end-of-
line), erase, intr, lnext (treat next character literally), kill, rprnt (redraw line), quit, start, stop, susp,
swtch,
or werase (erase previous word). c can be a literal control character, a character in hat notation
(e. g., ^Z), in hex (must begin with 0x), in octal (must begin with 0), or in decimal. Disable the control
character with values of ^-or undef.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (288 of 351) [15/ 05/ 2002 18: 03: 40] 345
345 Page 346 347
Linux Commands (Linux in a Nutshell, 3rd Edition)
min n

Set the minimum number of characters that will satisfy a read until the time value has expired when -icanon
is set.

time n
Set the number of tenths of a second before reads time out if the min number of characters have not been
read when -icanon is set.

line i
Set line discipline to i (1-126).
Combination modes
cooked
Same as -raw.
[-] evenp [-] parity
Same as [-] parenb and cs[ 8] 7.
[-] parity
Same as [-] parenb and cs[ 8] 7.
ek
Reset ERASE and KILL characters to Ctrl-h and Ctrl-u, their defaults.
[-] lcase
[Un] set xcase, iuclc, and olcuc.
[-] LCASE
Same as [-] lcase.
[-] nl
[Un] set icrnl and onlcr. -nl also unsets inlcr, igncr, ocrnl, and onlret, icrnl, onlcr.
[-] oddp
Same as [-] parenb, [-] parodd, and cs7[ 8].
[-] raw
[Disable] enable raw input and output (no ERASE, KILL, INTR, QUIT, EOT, SWITCH, or output
postprocessing).

sane
Reset all modes to reasonable values.
[-] tabs*
[Expand to spaces] preserve output tabs.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (289 of 351) [15/ 05/ 2002 18: 03: 40] 346
346 Page 347 348
Linux Commands (Linux in a Nutshell, 3rd Edition)
[-] cbreak

Same as -icanon.
[-] pass8
Same as -parenb -istrip cs8.
[-] litout
Same as -parenb -istrip cs8.
[-] decctlq*
Same as -ixany.
crt
Same as echoe echoctl echoke.
dec
Same as echoe echoctl echoke -ixany. Additionally, set INTERRUPT to ^C, ERASE to DEL, and KILL
to ^U.

Special settings
ispeed
speed
Specify input speed.
ospeed speed
Specify output speed.
rows rows*
Specify number of rows.
cols columns, columns columns*
Specify number of columns.
size*
Display current row and column settings.
line discipline*
Specify line discipline.
speed
Display terminal speed.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (290 of 351) [15/ 05/ 2002 18: 03: 40] 347
347 Page 348 349
Linux Commands (Linux in a Nutshell, 3rd Edition)
su su [option] [user] [shell_ args]
Create a shell with the effective user-ID user. If no user is specified, create a shell for a privileged user (that is,
become a superuser). Enter EOF to terminate. You can run the shell with particular options by passing them as
shell_ args (e. g., if the shell runs sh, you can specify -c command to execute command via sh or -r to create a
restricted shell).

Options
-, -l, --login
Go through the entire login sequence (i. e., change to user's environment).
-c command, --command= command
Execute command in the new shell and then exit immediately. If command is more than one word, it
should be enclosed in quotes --for example:

su -c 'find / -name \*. c -print' nobody
-f, --fast
Start shell with -f option. In csh and tcsh, this suppresses the reading of the .cshrc file. In bash, this
suppresses filename pattern expansion.

-m, -p, --preserve-environment
Do not reset environment variables.
-s shell, --shell= shell
Execute shell, not the shell specified in /etc/ passwd, unless shell is restricted.
--help
Print a help message and then exit.
--version
Print version information and then exit.

sum sum [options] files
Calculate and print a checksum and the number of (1KB) blocks for file. Useful for verifying data transmission.
Options
-r
The default setting. Use the BSD checksum algorithm.
-s, --sysv
Use alternate checksum algorithm as used on System V. The blocksize is 512 bytes.
--help
Print a help message and then exit.
--version
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (291 of 351) [15/ 05/ 2002 18: 03: 41] 348
348 Page 349 350
Linux Commands (Linux in a Nutshell, 3rd Edition)
Print the version number and then exit.
swapdev swapdev [option] [image [swapdevice [offset]]]
System administration command. If no arguments are given, display usage information about the swap device. If
just the location of the kernel image is specified, print the information found there. To change that information,
specify the new swapdevice. You may also specify the offset in the kernel image to change. Note that rdev -s is a
synonym for swapdev.

Option
-o
offset
Synonymous to specifying an offset as an argument.

swapoff swapoff -a | device ...
System administration command. Stop making the listed devices available for swapping and paging.
Option
-a
Consult /etc/ fstab for devices marked sw. Use those in place of the device argument.

swapon swapon [options] device ...
System administration command. Make the listed devices available for swapping and paging.
Options
-a
Consult /etc/ fstab for devices marked sw. Use those in place of the device argument.
-p priority
Specify a priority for the swap area. Higher priority areas will be used up before lower priority areas are
used.

sync sync
System administration command. Write filesystem buffers to disk. sync executes the sync() system call. If the
system is to be stopped, sync must be called to ensure filesystem integrity. Note that shutdown automatically
calls sync before shutting down the system. sync may take several seconds to complete, so the system should be
told to sleep briefly if you are about to manually call halt or reboot. Note that shutdown is the preferred way to
halt or reboot your system, since it takes care of sync-ing and other housekeeping for you.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (292 of 351) [15/ 05/ 2002 18: 03: 41] 349
349 Page 350 351
Linux Commands (Linux in a Nutshell, 3rd Edition)
sysklogd sysklogd
System administration command. sysklogd, the Linux program that provides syslogd functionality, behaves
exactly like the BSD version of syslogd. The difference should be completely transparent to the user. However,
sysklogd is coded very differently and supports a slightly extended syntax. It is invoked as syslogd. See also
klogd.

Options
-d
Turn on debugging.
-f configfile
Specify alternate configuration file.
-h
Forward messages from remote hosts to forwarding hosts.
-l hostlist
Specify hostnames that should be logged with just their hostname, not their fully qualified domain name.
Multiple hosts should be separated with a colon (:).

-m markinterval
Select number of minutes between mark messages.
-n
Avoid autobackgrounding. This is needed when starting syslogd from init.
-p
socket
Send log to socket instead of /dev/ log.
-r
Receive messages from the network using an Internet domain socket with the syslog service.
-s domainlist
Strip off domain names specified in domainlist before logging. Multiple domain names should be
separated by a colon (:).

syslogd syslogd
TCP/ IP command. Log system messages into a set of files described by the configuration file /etc/ syslog. conf.
Each message is one line. A message can contain a priority code, marked by a number in angle braces at the
beginning of the line. Priorities are defined in <sys/ syslog. h>. syslogd reads from an Internet domain socket
specified in /etc/ services. To bring syslogd down, send it a terminate signal.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (293 of 351) [15/ 05/ 2002 18: 03: 41] 350
350 Page 351 352
Linux Commands (Linux in a Nutshell, 3rd Edition)
systat systat [options] host
System administration command. Get information about the network or system status of a remote host by
querying its netstat, systat, or daytime service.

Options
-n, --netstat
Specifically query the host's netstat service.
-p port, --port port
Specify port to query.
-s, --systat
Specifically query the host's systat service.
-t, --time
Specifically query the host's daytime service.

tac tac [options] [file]
Named for the common command cat, tac prints files in reverse. Without a filename or with -, it reads from
standard input. By default, it reverses the order of the lines, printing the last line first.

Options
-b, --before
Print separator (by default a newline) before string that it delimits.
-r, --regex
Expect separator to be a regular expression.
-s string, --separator= string
Specify alternate separator (default is newline).
--help
Print a help message and then exit.
--version
Print version information and then exit.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (294 of 351) [15/ 05/ 2002 18: 03: 41] 351
351 Page 352 353
Linux Commands (Linux in a Nutshell, 3rd Edition)
tail tail [options] [file]
Print the last 10 lines of the named file (or standard input if -is specified) on standard output.
Options
-n[
k]
Begin printing at nth item from end-of-file. k specifies the item to count: l (lines, the default), b (blocks),
or c (characters).

-k
Same as -n, but use the default count of 10.
+n[ k]
Like -n, but start at nth item from beginning of file.
+k
Like -k, but count from beginning of file.
-c num{ bkm}, --bytes num{ bkm}
Print last num bytes. An alternate blocksize may be specified:
b
512 bytes
k
1 kilobyte
m
1 megabyte
-f
Don't quit at the end of file; "follow" file as it grows. End when user presses Ctrl-C.
-n num, --lines num
Print last num lines.
-q, --quiet, --silent
Suppress filename headers.
--version
Print version information and then exit.
Examples
Show the last 20 lines containing instances of .Ah:
grep '\. Ah' file | tail -20

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (295 of 351) [15/ 05/ 2002 18: 03: 41] 352
352 Page 353 354
Linux Commands (Linux in a Nutshell, 3rd Edition)
Show the last 10 characters of variable name:
echo "$ name" | tail -c
Print the last two blocks of bigfile:
tail -2b bigfile

talk talk person [ttyname]
Talk to another user. person is either the login name of someone on your own machine or user@ host on another
host. To talk to a user who is logged in more than once, use ttyname to indicate the appropriate terminal name.
Once communication has been established, the two parties may type simultaneously, with their output appearing
in separate windows. To redraw the screen, type Ctrl-L. To exit, type your interrupt character; talk then moves
the cursor to the bottom of the screen and restores the terminal.

talkd talkd [option]
TCP/ IP command. Remote user communication server. talkd notifies a user that somebody else wants to initiate
a conversation. A talk client initiates a rendezvous by sending a CTL_ MSG of type LOOK_ UP to the server.
This causes the server to search its invitation tables for an existing invitation for the client. If the lookup fails,
the caller sends an ANNOUNCE message, causing the server to broadcast an announcement on the callee's login
ports requesting contact. When the callee responds, the local server responds with the rendezvous address, and a
stream connection is established through which the conversation takes place.

Option
-d
Write debugging information to the syslogd log file.

tar tar [options] [tarfile] [other-files]
Copy files to or restore files from an archive medium. If any files are directories, tar acts on the entire subtree.
Options need not be preceded by -(though they may be). The exception to this rule is when you are using a long-style
option (such as --modification-time). In that case, the exact syntax is:

tar --long-option -function-options files
For example:
tar --modification-time -xvf tarfile. tar
Function options
You must use exactly one of these, and it must come before any other options:
-c, --create
Create a new archive.
-d, --compare
Compare the files stored in tarfile with other-files. Report any differences: missing files, different sizes,
different file attributes (such as permissions or modification time).

-r, --append

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (296 of 351) [15/ 05/ 2002 18: 03: 41] 353
353 Page 354 355
Linux Commands (Linux in a Nutshell, 3rd Edition)
Append other-files to the end of an existing archive.

-t, --list
Print the names of other-files if they are stored on the archive (if other-files are not specified, print names
of all files).

-u, --update
Add files if not in the archive or if modified.
-x, --extract, --get
Extract other-files from an archive (if other-files are not specified, extract all files).
-A, --catenate, --concatenate
Concatenate a second tar file on to the end of the first.
Options
n
Select device n, where n is 0,..., 9999. The default is found in /etc/ default/ tar.
[drive][ density]
Set drive (0-7) and storage density (l, m, or h, corresponding to low, medium, or high).
--atime-preserve
Preserve original access time on extracted files.
-b, --block-size= n
Set block size to n 512 bytes.
--checkpoint
List directory names encountered.
--exclude= file
Remove file from any list of files.
-f arch, --file= filename
Store files in or extract files from archive arch. Note that filename may take the form hostname: filename.
--force-local
Interpret filenames in the form hostname: filename as local files.
-g, --listed-incremental
Create new-style incremental backup.
-h, --dereference
Dereference symbolic links.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (297 of 351) [15/ 05/ 2002 18: 03: 41] 354
354 Page 355 356
Linux Commands (Linux in a Nutshell, 3rd Edition)
-i, --ignore-zeros

Ignore zero-sized blocks (i. e., EOFs).
--ignore-failed-read
Ignore unreadable files to be archived. Default behavior is to exit when encountering these.
-k, --keep-old-files
When extracting files, do not overwrite files with similar names. Instead, print an error message.
-l, --one-file-system
Do not archive files from other file systems.
-m, --modification-time
Do not restore file modification times; update them to the time of extraction.
--null
Allow filenames to be null-terminated with -T. Override -C.
--old, --portability, --preserve
Equivalent to invoking both the -p and -s options.
-p, --same-permissions, --preserve-permissions
Keep ownership of extracted files same as that of original permissions.
--remove-files
Remove originals after inclusion in archive.
--rsh-command= command
Do not connect to remote host with rsh; instead, use command.
-s, --same-order, --preserve-order
When extracting, sort filenames to correspond to the order in the archive.
--totals
Print byte totals.
--use-compress-program= program
Compress archived files with program, or uncompress extracted files with program.
-v, --verbose
Verbose. Print filenames as they are added or extracted.
-w, --interactive
Wait for user confirmation (y) before taking any actions.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (298 of 351) [15/ 05/ 2002 18: 03: 41] 355
355 Page 356 357
Linux Commands (Linux in a Nutshell, 3rd Edition)
-z, --gzip, --ungzip

Compress files with gzip before archiving them, or uncompress them with gunzip before extracting them.
-C, --directory= directory
cd to directory before beginning tar operation.
-F, --info-script, --new-volume-script= script
Implies -M (multiple archive files). Run script at the end of each file.
-G, --incremental
Create old-style incremental backup.
-K file, --starting-file file
Begin tar operation at file file in archive.
-L, --tape-length= length
Write a maximum of length 1024 bytes to each tape.
-M, --multivolume
Expect archive to multivolume. With -c, create such an archive.
-N date, --after-date date
Ignore files older than date.
-O, --to-stdout
Print extracted files on standard out.
-P, --absolute-paths
Do not remove initial slashes (/) from input filenames.
-R, --record-number
Display archive's record number.
-S, --sparse
Treat short file specially and more efficiently.
-T filename, --files-from filename
Consult filename for files to extract or create.
-V name, --label= name
Name this volume name.
-W, --verify
Check archive for corruption after creation.
-X file, --exclude file
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (299 of 351) [15/ 05/ 2002 18: 03: 41] 356
356 Page 357 358
Linux Commands (Linux in a Nutshell, 3rd Edition)
Consult file for list of files to exclude.
-Z, --compress, --uncompress
Compress files with compress before archiving them, or uncompress them with uncompress before
extracting them.

Examples
Create an archive of /bin and /usr/ bin (c), show the command working (v), and store on the tape in /dev/ rmt0:
tar cvf /dev/ rmt0 /bin /usr/ bin
List the tape's contents in a format like ls -l:
tar tvf /dev/ rmt0
Extract the /bin directory:
tar xvf /dev/ rmt0 /bin
Create an archive of the current directory and store it in a file backup. tar:
tar cvf -`find . -print > backup. tar
(The -tells tar to store the archive on standard output, which is then redirected.)

tcpd tcpd
TCP/ IP command. Monitor incoming TCP/ IP requests (such as those for telnet, ftp, finger, exec, rlogin).
Provide checking and logging services; then pass the request to the appropriate daemon.

tcpdchk tcpdchk [options]
TCP/ IP command. Consult the TCP wrapper configuration (in /etc/ hosts. allow and /etc/ hosts. deny); display a list
of all possible problems with it; attempt to suggest possible fixes.

Options
-a
Include a list of rules; do not require an ALLOW keyword before allowing sites to access the local host.
-d
Consult ./ hosts. allow and ./ hosts. deny instead of /etc/ hosts. allow and /etc/ hosts. deny.
-i conf-file
Specify location of inetd. conf or tlid. conf file. These are files that tcpdchk automatically uses in its
evaluation of TCP wrapper files.

-v
Verbose mode.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (300 of 351) [15/ 05/ 2002 18: 03: 41] 357
357 Page 358 359

Linux Commands (Linux in a Nutshell, 3rd Edition)
tcpdmatch tcpdmatch [options] daemon client
TCP/ IP command. Predict the TCP wrapper's response to a specific request. You must specify which daemon the
request is made to (the syntax may be daemon@ host for requests to remote machines) and the client from which
the request originates (the syntax may be user@ client for a specific user or a wildcard). Consult /etc/ hosts. allow
and /etc/ hosts. deny to determine the TCP wrapper's actions.

Options
-d
Consult ./ hosts. allow and ./ hosts. deny instead of /etc/ hosts. allow and /etc/ hosts. deny.
-i conf-file
Specify location of inetd. conf or tlid. conf file. These are files that tcpdmatch automatically uses in its
evaluation of TCP wrapper files.

tcsh tcsh [options] [file [arguments]]
An extended version of the C shell, a command interpreter into which all other commands are entered. For more
information, see Chapter 8, "csh and tcsh".

tee tee [options] files
Accept output from another command and send it both to the standard output and to files (like a T or fork in a
road).

Options
-a, --append
Append to files; do not overwrite.
-i, --ignore-interrupts
Ignore interrupt signals.
--help
Print a help message and then exit.
--version
Print version information and then exit.
Example
ls -l | tee savefile View listing and save for later

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (301 of 351) [15/ 05/ 2002 18: 03: 41] 358
358 Page 359 360
Linux Commands (Linux in a Nutshell, 3rd Edition)
telinit telinit [option] [runlevel]
System administration command. Signal init to change the system's runlevel. telinit is actually just a link to init,
the ancestor of all processes.

Option
-t
seconds
Send SIGKILL seconds after SIGTERM. Default is 20.
Runlevels
The default runlevels vary from distribution to distribution, but these are standard:
0
Halt the system.
1, s, S
Single user.
6
Reboot the system.
a, b, c
Process only entries in /etc/ inittab that are marked with run level a, b, or c.
q, Q
Reread /etc/ inittab.
Check the /etc/ inittab file for runlevels on your system.

telnet telnet [options] [host [port ]]
Access remote systems. telnet is the user interface that communicates with another host using the Telnet
protocol. If telnet is invoked without host, it enters command mode, indicated by its prompt, telnet>, and
accepts and executes the commands listed after the following options. If invoked with arguments, telnet
performs an open command (shown in the following list) with those arguments. host indicates the host's official
name. port indicates a port number (default is the Telnet port).

Options
-a
Automatic login into the remote system.
-d
Turn on socket-level debugging.
-e [escape_ char]
Set initial telnet escape character to escape_ char. If escape_ char is omitted, there will be no predefined
escape character.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (302 of 351) [15/ 05/ 2002 18: 03: 41] 359
359 Page 360 361
Linux Commands (Linux in a Nutshell, 3rd Edition)
-l user

When connecting to remote system and if remote system understands ENVIRON, send user to the remote
system as the value for variable USER.

-n tracefile
Open tracefile for recording the trace information.
-r
Emulate rlogin: the default escape character is a tilde (~); an escape character followed by a dot causes
telnet to disconnect from the remote host; a ^Z instead of a dot suspends telnet; and a ] (the default
telnet escape character) generates a normal telnet prompt. These codes are accepted only at the
beginning of a line.

-8
Request 8-bit operation.
-E
Disable the escape character functionality.
-L
Specify an 8-bit data path on output.
-S tos
Set the IP type-of-service (TOS) option for the Telnet connection to the value tos.
Commands
CTRL-Z
Suspend telnet.
! [command]
Execute a single command in a subshell on the local system. If command is omitted, an interactive
subshell will be invoked.

? [command]
Get help. With no arguments, print a help summary. If a command is specified, print the help information
for just that command.

close
Close a Telnet session and return to command mode.
display argument ...
Display all, or some, of the set and toggle values.
environ [arguments [...]]
Manipulate variables that may be sent through the TELNET ENVIRON option. Valid arguments for
environ are:

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (303 of 351) [15/ 05/ 2002 18: 03: 41] 360
360 Page 361 362
Linux Commands (Linux in a Nutshell, 3rd Edition)
?

Get help for the environ command.
define variable value
Define variable to have a value of value.
undefine variable
Remove variable from the list of en vi ronment variables.
export variable
Mark variable to have its value exported to the remote side.
unexport variable
Mark variable to not be exported unless explicitly requested by the remote side.
list
Display current variable values.
logout
If the remote host supports the logout command, close the telnet session.
mode [type]
Depending on state of Telnet session, type is one of several options:
?
Print out help information for the mode command.
character
Disable TELNET LINEMODE option, or, if remote side does not understand the option, enter
"character-at-a-time" mode.

[-] edit
Attempt to [disable] enable the EDIT mode of the TELNET LINEMODE option.
[-] isig
Attempt to [disable] enable the TRAPSIG mode of the LINEMODE option.
line
Enable LINEMODE option, or, if remote side does not understand the option, attempt to enter
"old line-by-line" mode.

[-] softtabs
Attempt to [disable] enable the SOFT_ TAB mode of the LINEMODE option.
[-] litecho
[Disable] enable LIT_ ECHO mode.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (304 of 351) [15/ 05/ 2002 18: 03: 41] 361
361 Page 362 363
Linux Commands (Linux in a Nutshell, 3rd Edition)
open[-l user] host [port]
Open a connection to the named host. If no port number is specified, attempt to contact a Telnet server at
the default port.

quit
Close any open Telnet session and then exit telnet.
status
Show current status of telnet. This includes the peer one is connected to as well as the current mode.
send arguments
Send one or more special character sequences to the remote host. Following are the arguments that may
be specified:

?
Print out help information for send command.
abort
Send Telnet ABORT sequence.
ao
Send Telnet AO sequence, which should cause the remote system to flush all output from the
remote system to the user's terminal.

ayt
Send Telnet AYT (Are You There) sequence.
brk
Send Telnet BRK (Break) sequence.
do cmd
dont cmd
will cmd
wont cmd

Send Telnet DO cmd sequence, where cmd is a number between 0 and 255 or a symbolic name for
a specific telnet command. If cmd is ? or help, this command prints out help (including a list of
symbolic names).

ec
Send Telnet EC (Erase Character) sequence, which causes the remote system to erase the last
character entered.

el
Send Telnet EL (Erase Line) sequence, which causes the remote system to erase the last line
entered.

eof

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (305 of 351) [15/ 05/ 2002 18: 03: 41] 362
362 Page 363 364
Linux Commands (Linux in a Nutshell, 3rd Edition)
Send Telnet EOF (End Of File) sequence.

eor
Send Telnet EOR (End Of Record) sequence.
escape
Send current Telnet escape character (initially ^).
ga
Send Telnet GA (Go Ahead) sequence.
getstatus
If the remote side supports the Telnet STATUS command, getstatus sends the subnegotiation
request that the server send its current option status.

ip
Send Telnet IP (Interrupt process) sequence, which causes the remote system to abort the currently
running process.

nop
Send Telnet NOP (No operation) sequence.
susp
Send Telnet SUSP (Suspend process) sequence.
synch
Send Telnet SYNCH sequence, which causes the remote system to discard all previously typed
(but not read) input.

set argument value
unset argument value

Set any one of a number of telnet variables to a specific value or to TRUE. The special value off disables
the function associated with the variable. unset disables any of the specified functions. The values of
variables may be interrogated with the aid of the display command. The variables that may be specified
are:

?
Display legal set and unset commands.
ayt
If telnet is in LOCALCHARS mode, this character is taken to be the alternate AYT character.
echo
This is the value (initially ^E) which, when in "line-by-line" mode, toggles between doing local
echoing of entered characters and suppressing echoing of entered characters.

eof
If telnet is operating in LINEMODE or in the old "line-by-line" mode, entering this character as

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (306 of 351) [15/ 05/ 2002 18: 03: 41] 363
363 Page 364 365
Linux Commands (Linux in a Nutshell, 3rd Edition)
the first character on a line will cause the character to be sent to the remote system.

erase
If telnet is in LOCALCHARS mode and operating in the "character-at-a-time" mode, then when
this character is entered, a Telnet EC sequence will be sent to the remote system.

escape
This is the Telnet escape character (initially ^[), which causes entry into the Telnet command
mode when connected to a remote system.

flushoutput
If telnet is in LOCALCHARS mode and the flushoutput character is entered, a Telnet AO
sequence is sent to the remote host.

forw1
If Telnet is in LOCALCHARS mode, this character is taken to be an alternate end-of-line
character.

forw2
If Telnet is in LOCALCHARS mode, this character is taken to be an alternate end-of-line
character.

interrupt
If Telnet AO is in LOCALCHARS mode and the interrupt character is entered, a Telnet IP
sequence is sent to the remote host.

kill
If Telnet IP is in LOCALCHARS mode and operating in the "character-at-a-time" mode, then
when this character is entered, a Telnet EL sequence is sent to the remote system.

lnext
If Telnet EL is in LINEMODE or in the old "line-by-line" mode, then this character is taken to be
the terminal's lnext character.

quit
If Telnet EL is in LOCALCHARS mode and the quit character is entered, a Telnet BRK sequence
is sent to the remote host.

reprint
If Telnet BRK is in LINEMODE or in the old "line-by-line" mode, this character is taken to be the
terminal's reprint character.

rlogin
Enable rlogin mode. Same as using -r command-line option.
start
If the Telnet TOGGLE-FLOW-CONTROL option has been enabled, this character is taken to be
the terminal's start character.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (307 of 351) [15/ 05/ 2002 18: 03: 41] 364
364 Page 365 366
Linux Commands (Linux in a Nutshell, 3rd Edition)
stop

If the Telnet TOGGLE-FLOW-CONTROL option has been enabled, this character is taken to be
the terminal's stop character.

susp
If Telnet is in LOCALCHARS mode, or if the LINEMODE is enabled and the suspend character
is entered, a Telnet SUSP sequence is sent to the remote host.

tracefile
File to which output generated by netdata is written.
worderase
If Telnet BRK is in LINEMODE or in the old "line-by-line" mode, this character is taken to be the
terminal's worderase character. Defaults for these are the terminal's defaults.

slc [state]
Set state of special characters when Telnet LINEMODE option has been enabled.
?
List help on the slc command.
check
Verify current settings for current special characters. If discrepancies are discovered, convert local
settings to match remote ones.

export
Switch to local defaults for the special characters.
import
Switch to remote defaults for the special characters.
toggle arguments [...]
Toggle various flags that control how Telnet responds to events. The flags may be set explicitly to true or
false using the set and unset commands listed previously. The valid arguments are:

?
Display legal toggle commands.
autoflush
If autoflush and LOCALCHARS are both true, then when the ao or quit characters are
recognized, Telnet refuses to display any data on the user's terminal until the remote system
acknowledges that it has processed those Telnet sequences.

autosynch
If autosynch and LOCALCHARS are both true, then when the intr or quit character is entered,
the resulting Telnet sequence sent is followed by the Telnet SYNCH sequence. Initial value for
this toggle is false.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (308 of 351) [15/ 05/ 2002 18: 03: 41] 365
365 Page 366 367
Linux Commands (Linux in a Nutshell, 3rd Edition)
binary

Enable or disable the Telnet BINARY option on both the input and the output.
inbinary
Enable or disable the Telnet BINARY option on the input.
outbinary
Enable or disable the Telnet BINARY option on the output.
crlf
If this toggle value is true, carriage returns are sent as CR-LF. If false, carriage returns are sent as
CR-NUL. Initial value is false.

crmod
Toggle carriage return mode. Initial value is false.
debug
Toggle socket level debugging mode. Initial value is false.
localchars
If the value is true, flush, interrupt, quit, erase, and kill characters are recognized locally, then
transformed into appropriate Telnet control sequences. Initial value is true.

netdata
Toggle display of all network data. Initial value is false.
options
Toggle display of some internal telnet protocol processing pertaining to Telnet options. Initial
value is false.

prettydump
When netdata is enabled, and if prettydump is enabled, the output from the netdata command is
reorganized into a more user-friendly format, spaces are put between each character in the output,
and an asterisk precedes any Telnet escape sequence.

skiprc
Toggle whether to process ~/. telnetrc file. Initial value is false, meaning the file is processed.
termdata
Toggle printing of hexadecimal terminal data. Initial value is false.
z
Suspend telnet; works only for the csh.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (309 of 351) [15/ 05/ 2002 18: 03: 41] 366
366 Page 367 368
Linux Commands (Linux in a Nutshell, 3rd Edition)
telnetd telnetd [options]
TCP/ IP command. Telnet protocol server. telnetd is invoked by the Internet server for requests to connect to the
Telnet port (port 23 by default). telnetd allocates a pseudoterminal device for a client, thereby creating a login
process that has the slave side of the pseudoterminal serving as stdin, stdout, and stderr. telnetd manipulates
the master side of the pseudoterminal by implementing the Telnet protocol and by passing characters between
the remote client and the login process.

Options
-debug [port]
Start telnetd manually instead of through inetd. port may be specified as an alternate TCP port number
on which to run telnetd.

-D modifier( s)
Debugging mode. This allows telnet to print out debugging information to the connection, enabling the
user to see what telnet is doing. Several modifiers are available for the debugging mode:

exercise
Has not been implemented yet.
netdata
Display data stream received by telnetd.
options
Print information about the negotiation of the Telnet options.
ptydata
Display data written to the pseudo terminal device.
report
Print options information, as well as some additional information about what processing is going
on.

test test expression
[expression]
Also exists as a built-in in most shells.
Evaluate an expression and, if its value is true, return a zero exit status; otherwise, return a nonzero exit status.
In shell scripts, you can use the alternate form [expression]. This command is generally used with conditional
constructs in shell programs.

File testers
The syntax for all of these options is test option file. If the specified file does not exist, they return false.
Otherwise, they will test the file as specified in the option description.

-b
Is the file block special?

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (310 of 351) [15/ 05/ 2002 18: 03: 41] 367
367 Page 368 369
Linux Commands (Linux in a Nutshell, 3rd Edition)
-c

Is the file character special?
-d
Is the file a directory?
-e
Does the file exist?
-f
Is the file a regular file?
-g
Does the file have the set-group-ID bit set?
-k
Does the file have the sticky bit set?
-L
Is the file a symbolic link?
-p
Is the file a named pipe?
-r
Is the file readable by the current user?
-s
Is the file nonempty?
-S
Is the file a socket?
-t [file-descriptor]
Is the file associated with file-descriptor (or 1, standard output, by default) connected to a terminal?
-u
Does the file have the set-user-ID bit set?
-w
Is the file writable by the current user?
-x
Is the file executable?
-O
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (311 of 351) [15/ 05/ 2002 18: 03: 41] 368
368 Page 369 370
Linux Commands (Linux in a Nutshell, 3rd Edition)
Is the file owned by the process's effective user ID?
-G
Is the file owned by the process's effective group ID?
File comparisons
The syntax for file comparisons is test file1 option file2. A string by itself, without options, returns true if it's at
least one character long.

-nt
Is file1 newer than file2? Check modification, not creation, date.
-ot
Is file1 older than file2? Check modification, not creation, date.
-ef
Do the files have identical device and inode numbers?
String tests
The syntax for string tests is test option string.
-z
Is the string 0 characters long?
-n
Is the string at least 1 character long?
= string
Are the two strings equal?
!= string
Are the strings unequal?
Expression tests
Note that an expression can consist of any of the previous tests.
! expression
Is the expression false?
expression -a expression
Are the expressions both true?
expression -o expression
Is either expression true?

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (312 of 351) [15/ 05/ 2002 18: 03: 41] 369
369 Page 370 371
Linux Commands (Linux in a Nutshell, 3rd Edition)
Integer tests

The syntax for integer tests is test integer1 option integer2. You may substitute -l string for an integer; this
evaluates to string's length.

-eq
Are the two integers equal?
-ne
Are the two integers unequal?
-lt
Is integer1 less than integer2?
-le
Is integer1 less than or equal to integer2?
-gt
Is integer1 greater than integer2?
-ge
Is integer1 greater than or equal to integer2?

tftp tftp [host [port]]
User interface to the TFTP (Trivial File Transfer Protocol), which allows users to transfer files to and from a
remote machine. The remote host may be specified, in which case tftp uses host as the default host for future
transfers.

Commands
Once tftp is running, it issues the prompt:
tftp>
and recognizes the following commands:
? [command-name...]
Print help information.
ascii
Shorthand for mode ASCII.
binary
Shorthand for mode binary.
connect
hostname [port]
Set the hostname, and optionally the port, for transfers.
get filename

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (313 of 351) [15/ 05/ 2002 18: 03: 41] 370
370 Page 371 372
Linux Commands (Linux in a Nutshell, 3rd Edition)
get remotename localname
get filename1 filename2 filename3... filenameN

Get a file or set of files from the specified remote sources.
mode transfer-mode
Set the mode for transfers. transfer-mode may be ASCII or binary. The default is ASCII.
put
filename
put localfile remotefile
put filename1 filename2... filenameN remote-directory

Transfer a file or set of files to the specified remote file or directory.
quit
Exit tftp.
rexmt
retransmission-timeout
Set the per-packet retransmission timeout, in seconds.
status
Print status information: whether tftp is connected to a remote host (i. e., whether a host has been
specified for the next connection), the current mode, whether verbose and tracing modes are on, and the
values for retransmission timeout and total transmission timeout.

timeout total-transmission-timeout
Set the total transmission timeout, in seconds.
trace
Toggle packet tracing.
verbose
Toggle verbose mode.

tftpd tftpd [homedir]
TCP/ IP command. Trivial File Transfer Protocol server. tftpd is normally started by inetd and operates at the
port indicated in the tftp Internet service description in the /etc/ inetd. conf file. By default, the entry for tftpd in
/etc/ inetd. conf is commented out; the comment character must be deleted to make tfptd operational. Before
responding to a request, the server attempts to change its current directory to homedir; the default value is
tftpboot.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (314 of 351) [15/ 05/ 2002 18: 03: 41] 371
371 Page 372 373
Linux Commands (Linux in a Nutshell, 3rd Edition)
tload tload [options] [tty]
Display system load average in graph format. If tty is specified, print it to that tty.
Options
-d
delay
Specify the delay, in seconds, between updates.
-s scale
Specify scale (number of characters between each graph tick). A smaller number results in a larger scale.

top top [options]
Provide information (frequently refreshed) about the most CPU-intensive processes currently running. See ps for
explanations of the field descriptors.

Options
-b
Run in batch mode; don't accept command-line input. Useful for sending output to another command or
to a file.

-c
Show command line in display instead of just command name.
-d delay
Specify delay between refreshes.
-i
Suppress display of idle and zombie processes.
-n num
Update display num times, then exit.
-p pid
Monitor only processes with the specified process ID.
-q
Refresh without any delay. If user is privileged, run with highest priority.
-s
Secure mode. Disable some (dangerous) interactive commands.
-S
Cumulative mode. Print total CPU time of each process, including dead child processes.
Interactive commands

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (315 of 351) [15/ 05/ 2002 18: 03: 41] 372
372 Page 373 374
Linux Commands (Linux in a Nutshell, 3rd Edition)
space

Update display immediately.
c
Toggle display of command name or full command line.
f, F
Add fields to display or remove fields from the display.
h, ?
Display help about commands and the status of secure and cumulative modes.
k
Prompt for process ID to kill and signal to send (default is 15) to kill it.
i
Toggle suppression of idle and zombie processes.
l
Toggle display of load average and uptime information.
m
Toggle display of memory information.
n, #
Prompt for number of processes to show. If 0 is entered, show as many as will fit on the screen (default).
o, O
Change order of displayed fields.
q
Exit.
r
Apply renice to a process. Prompt for PID and renice value. Suppressed in secure mode.
s
Change delay between refreshes. Prompt for new delay time, which should be in seconds. Suppressed in
secure mode.

t
Toggle display of processes and CPU states information.
A
Sort by age, with newest first.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (316 of 351) [15/ 05/ 2002 18: 03: 41] 373
373 Page 374 375
Linux Commands (Linux in a Nutshell, 3rd Edition)
^L
Redraw screen.
M
Sort tasks by resident memory usage.
N
Sort numerically by process ID.
P
Sort tasks by CPU usage (default).
S
Toggle cumulative mode. (See the -S option.)
T
Sort tasks by time/ cumulative time.
W
Write current setup to ~/. toprc. This is the recommended way to write a top configuration file.

touch touch [options] files
For one or more files, update the access time and modification time (and dates) to the current time and date.
touch is useful in forcing other commands to handle files a certain way; e. g., the operation of make, and
sometimes find, relies on a file's access and modification time. If a file doesn't exist, touch creates it with a
filesize of 0.

Options
-a, --time= atime, --time= access, --time= use
Update only the access time.
-c, --no-create
Do not create any file that doesn't already exist.
-d time, --date time
Change the time value to the specified time instead of the current time. time can use several formats and
may contain month names, time zones, a. m. and p. m. strings, as well as others.

-m, --time= mtime, --time= modify
Update only the modification time.
-r file, --reference file
Change times to be the same as those of the specified file, instead of the current time.
-t time

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (317 of 351) [15/ 05/ 2002 18: 03: 41] 374
374 Page 375 376
Linux Commands (Linux in a Nutshell, 3rd Edition)
Use the time specified in time instead of the current time. This argument must be of the format:
[[ cc] yy] mmddhhmm[. ss], indicating optional century and year, month, date, hours, minutes, and optional
seconds.

--help
Print help message and then exit.
--version
Print the version number and then exit.

tr tr [options] [string1 [string2]]
Translate characters --copy standard input to standard output, substituting characters from string1 to string2 or
deleting characters in string1.

Options
-c, --complement
Complement characters in string1 with respect to ASCII 001-377.
-d, --delete
Delete characters in string1 from output.
-s, --squeeze-repeats
Squeeze out repeated output characters in string2.
-t, --truncate-set1
Truncate string1 to the length of string2 before translating.
--help
Print help message and then exit.
--version
Print the version number and then exit.
Special characters
Include brackets ([]) where shown.
\a
^G (bell)
\b
^H (backspace)
\f
^L (form feed)
\n

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (318 of 351) [15/ 05/ 2002 18: 03: 41] 375
375 Page 376 377
Linux Commands (Linux in a Nutshell, 3rd Edition)
^J (newline)
\r
^M (carriage return)
\t
^I (tab)
\v
^K (vertical tab)
\nnn
Character with octal value nnn.
\\
Literal backslash.
char1-char2
All characters in the range char1 through char2. If char1 does not sort before char2, produce an error.
[char1-char2]
Same as char1-char2 if both strings use this.
[char*]
In string2, expand char to the length of string1.
[char* number]
Expand char to number occurrences. [x* 4] expands to xxxx, for instance.
[: class:]
Expand to all characters in class, where class can be:
alnum
Letters and digits
alpha
Letters
blank
Whitespace
cntrl
Control characters
digit

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (319 of 351) [15/ 05/ 2002 18: 03: 41] 376
376 Page 377 378
Linux Commands (Linux in a Nutshell, 3rd Edition)
Digits

graph
Printable characters except space
lower
Lowercase letters
print
Printable characters
punct
Punctuation
space
Whitespace (horizontal or vertical)
upper
Uppercase letters
xdigit
Hexadecimal digits
[= char=]
The class of characters in which char belongs.
Examples
Change uppercase to lowercase in a file:
cat file | tr '[ A-Z] ' '[ a-z] '
Turn spaces into newlines (ASCII code 012):
tr ' ' '\ 012' < file
Strip blank lines from file and save in new. file (or use 011 to change successive tabs into one tab):
cat file | tr -s "" "\ 012" > new. file
Delete colons from file; save result in new. file:
tr -d : < file > new. file

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (320 of 351) [15/ 05/ 2002 18: 03: 41] 377
377 Page 378 379
Linux Commands (Linux in a Nutshell, 3rd Edition)
traceroute traceroute [options] host [packetsize]
TCP/ IP command. Trace route taken by packets to reach network host. traceroute attempts tracing by launching
UDP probe packets with a small TTL (time to live), then listening for an ICMP "time exceeded" reply from a
gateway. host is the destination hostname or the IP number of host to reach. packetsize is the packet size in bytes
of the probe datagram. Default is 38 bytes.

Options
-d
Turn on socket-level debugging.
-g addr
Enable the IP LSRR (Loose Source Record Route) option in addition to the TTL tests, to ask how
someone at IP address addr can reach a particular target.

-l
Include the time-to-live value for each packet received.
-m max_ ttl
Set maximum time-to-live used in outgoing probe packets to max-ttl hops. Default is 30 hops.
-n
Show numerical addresses; do not look up hostnames. (Useful if DNS is not functioning properly.)
-p port
Set base UDP port number used for probe packets to port. Default is (decimal) 33434.
-q n
Set number of probe packets for each time-to-live setting to the value n. Default is 3.
-r
Bypass normal routing tables and send directly to a host on an attached network.
-s src_ addr
Use src_ addr as the IP address that will serve as the source address in outgoing probe packets.
-t tos
Set the type-of-service in probe packets to tos (default 0). The value must be a decimal integer in the
range 0 to 255.

-v
Verbose --received ICMP packets (other than TIME_ EXCEEDED and PORT_ UNREACHABLE) will
be listed.

-w wait
Set time to wait for a response to an outgoing probe packet to wait seconds (default is 3 seconds).

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (321 of 351) [15/ 05/ 2002 18: 03: 41] 378
378 Page 379 380
Linux Commands (Linux in a Nutshell, 3rd Edition)
troff troff
See groff.

true true
A null command that returns a successful (0) exit status. See also false.

tune2fs tune2fs [options] device
System administration command. Tune the parameters of a Linux Second Extended Filesystem by adjusting
various parameters. You must specify the device on which the filesystem resides; it must not be mounted
read/ write when you change its parameters.

Options
-c
mount-counts
Specify the maximum number of mount counts between two checks on the filesystem.
-e behavior
Specify the kernel's behavior when encountering errors. behavior must be one of:
continue
Continue as usual.
remount-ro
Remount the offending filesystem in read-only mode.
panic
Cause a kernel panic.
-g group
Allow group (a group ID or name) to use reserved blocks.
-i interval[ d| w| m]
Specify the maximum interval between filesystem checks. Units may be in days (d), weeks (w), or
months (m). If interval is 0, checking will not be time-dependent.

-l
Display a list of the superblock's contents.
-m percentage
Specify the percentage of blocks that will be reserved for use by privileged users.
-r num
Specify the number of blocks that will be reserved for use by privileged users.
-u user

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (322 of 351) [15/ 05/ 2002 18: 03: 41] 379
379 Page 380 381
Linux Commands (Linux in a Nutshell, 3rd Edition)
Allow user (a user ID or name) to use reserved blocks.

tunelp tunelp device [options]
System administration command. Control a lineprinter's device parameters. Without options, print information
about device( s).

Options
-a [on| off]
Specify whether or not to abort if the printer encounters an error. By default, do not abort.
-c n
Retry device n times if it refuses a character. (Default is 250.) After exhausting n, sleep before retrying.
-i irq
Use irq for specified parallel port. Ignore -t and -c. If 0, restore noninterrupt driven (polling) action.
-o [on| off]
Specify whether to abort if device is not online or is out of paper.
-q [on| off]
Specify whether to print current IRQ setting.
-r
Reset port.
-s
Display printer's current status.
-t time
Specify a delay of time in jiffies to sleep before resending a refused character to the device. A jiffy is
defined as either one tick of the system clock or one AC cycle time; it should be approximately 1/ 100th
of a second.

-w time
Specify a delay of time in jiffies to sleep before resending a strobe signal.
-C [on| off]
Specify whether to be extremely careful in checking for printer error.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (323 of 351) [15/ 05/ 2002 18: 03: 41] 380
380 Page 381 382
Linux Commands (Linux in a Nutshell, 3rd Edition)
ul ul [options] [names]
Translate underscores to underlining. The correct sequence with which to do this will vary by terminal type.
Some terminals are unable to handle underlining.

Options
-i
Translate -, when on a separate line, to underline, instead of translating underscores.
-t terminal-type
Specify terminal type. By default, TERM is consulted.

umount umount [options] [special-device/ directory]
System administration command. Unmount a filesystem. umount announces to the system that the removable
file structure previously mounted on device special-device is to be removed. umount also works by specifying
the directory. Any pending I/ O for the filesystem is completed, and the file structure is flagged as clean.

Options
-a
Unmount all filesystems that are listed in /etc/ mtab.
-n
Unmount, but do not record changes in /etc/ mtab.
-t type
Unmount only filesystems of type type.

uname uname [options]
Print information about the machine and operating system. Without options, print the name of the operating
system (Linux).

Options
-a, --all
Combine all the system information from the other options.
-m, --machine

Print the hardware the system is running on.
-n, --nodename

Print the machine's hostname.
-r, --release

Print the release number of the kernel.
-s, --sysname

Print the name of the operating system (Linux).
-p, --processor

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (324 of 351) [15/ 05/ 2002 18: 03: 41] 381
381 Page 382 383
Linux Commands (Linux in a Nutshell, 3rd Edition)
Print the type of processor (not available on all versions).
-v

Print build information about the kernel.
--help

Display a help message and then exit.
--version

Print version information and then exit.

uncompress uncompress [options] files
Uncompress files that were compressed (i. e., whose names end in .Z). See compress for the available options;
uncompress takes all the same options except -r and -b.

unexpand unexpand [options] [files]
Convert strings of initial whitespace, consisting of at least two spaces and/ or tabs to tabs. Read from standard
input if given no file or a file named -.

Options
-a, --all
Convert all, not just initial, strings of spaces and tabs.
-nums, -t nums, --tabs nums
nums is a comma-separated list of integers that specify the placement of tab stops. If a single integer is
provided, the tab stops are set to every integer spaces. By default, tab stops are 8 spaces apart. With -t
and --tabs, the list may be separated by whitespace instead of commas. This option implies -a.

--help
Print help message and then exit.
--version
Print the version number and then exit.

uniq uniq [options] [file1 [file2]]
Remove duplicate adjacent lines from sorted file1, sending one copy of each line to file2 (or to standard output).
Often used as a filter. Specify only one of -d or -u. See also comm and sort.

Options
-n, -f
n, --skip-fields= n
Ignore first n fields of a line. Fields are separated by spaces or by tabs.
+n, -s n, --skip-chars= n
Ignore first n characters of a field.
-c, --count
Print each line once, prefixing number of instances.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (325 of 351) [15/ 05/ 2002 18: 03: 41] 382
382 Page 383 384
Linux Commands (Linux in a Nutshell, 3rd Edition)
-d, --repeated
Print duplicate lines once but no unique lines.
-i, --ignore-case
Ignore case differences when checking for duplicates.
-u, --unique
Print only unique lines (no copy of duplicate entries is kept).
-w n, --check-chars= n
Compare only first n characters per line (beginning after skipped fields and characters).
--help
Print a help message and then exit.
--version
Print version information and then exit.
Examples
Send one copy of each line from list to output file list. new:
uniq list list. new
Show which names appear more than once:
sort names | uniq -d

unshar unshar [options] [files]
Unpack a shell archive (shar file). unshar scans mail messages looking for the start of a shell archive. It then
passes the archive through a copy of the shell to unpack it. unshar accepts multiple files. If no files are given,
standard input is used.

Options
-c, --overwrite
Overwrite existing files.
-d directory, --directory= directory
Change to directory before unpacking any files.
-e, --exit-0
Sequentially unpack multiple archives stored in same file; uses clue that many shar files are terminated
by an exit 0 at the beginning of a line. (Equivalent to -E "exit 0".)

-E string, --split-at= string
Like -e, but allows you to specify the string that separates archives.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (326 of 351) [15/ 05/ 2002 18: 03: 41] 383
383 Page 384 385
Linux Commands (Linux in a Nutshell, 3rd Edition)
-f, --force

Same as -c.
--help
Print help message and then exit.
--version
Print the version number and then exit.

update update [options]
System administration command. update is a daemon that controls how often the kernel's disk buffers are
flushed to disk. update is also known as bdflush. The daemon forks a couple of processes to call system
functions flush() and sync(). When called by an unprivileged user, no daemon is created. Instead, update calls
sync() and then exits. By default, update will wake up every 5 seconds and flush() some dirty buffers. If that
doesn't work, it will try waking up every 30 seconds to sync() the buffers to disk. Not all of the listed options are
available in every version of update.

Options
-d
Display the kernel parameters. This does not start the update daemon.
-f seconds
Call flush() at this interval. Default is 5.
-h
Help. Print a command summary.
-s seconds
Call sync() at this interval. Default is 30.
-S
Always use sync() instead of flush.
-0 percent
Flush buffers when the specified percent of the buffer cache is dirty.
-1 blocks
The maximum number of dirty blocks to write out per wake cycle.
-2 buffers
The number of clean buffers to try to obtain each time the free buffers are refilled.
-3 blocks
Flush buffers if dirty blocks exceed blocks when trying to refill the buffers.
-4 percent

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (327 of 351) [15/ 05/ 2002 18: 03: 41] 384
384 Page 385 386
Linux Commands (Linux in a Nutshell, 3rd Edition)
Percent of buffer cache to scan when looking for free clusters.
-5 seconds
Time for a data buffer to age before being flushed.
-6 seconds
Time for a nondata buffer to age before being flushed.
-7 constant
The time constant to use for load average.
-8 ratio
How low the load average can be before trimming back the number of buffers.

uptime uptime
Print the current time, amount of time logged in, number of users currently logged in (which may include the
same user multiple times), and system load averages. This output is also produced by the first line of the w
command.

useradd useradd [options] [user]
System administration command. Create new user accounts or update default account information. Unless
invoked with the -D option, user must be given. useradd will create new entries in system files. Home
directories and initial files may also be created as needed.

Options
-c
comment
Comment field.
-d dir
Home directory. The default is to use user as the directory name under the home directory specified with
the -D option.

-e date
Account expiration date. date is in the format MM/ DD/ YYYY. Two-digit year fields are also accepted.
The value is stored as the number of days since January 1, 1970. This option requires the use of shadow
passwords.

-f days
Permanently disable account this many days after the password has expired. A value of -1 disables this
feature. This option requires the use of shadow passwords.

-g group
Initial group name or ID number. If a different default group has not been specified using the -D option,
the default group is 1.

-G groups

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (328 of 351) [15/ 05/ 2002 18: 03: 41] 385
385 Page 386 387
Linux Commands (Linux in a Nutshell, 3rd Edition)
Supplementary groups given by name or number in a comma-separated list with no whitespace.

-k [dir]
Copy default files to user's home directory. Meaningful only when used with the -m option. Default files
are copied from /etc/ skel/ unless an alternate dir is specified.

-m
Make user's home directory if it does not exist. The default is not to make the home directory.
-o
Override. Accept a nonunique uid with the -u option. (Probably a bad idea.)
-s shell
Login shell.
-u uid
Numerical user ID. The value must be unique unless the -o option is used. The default value is the
smallest ID value greater than 99 and greater than every other uid.

-D [options]
Set or display defaults. If options are specified, set them. If no options are specified, display current
defaults. The options are:

-b dir
Home directory prefix to be used in creating home directories. If the -d option is not used when
creating an account, the user name will be appended to dir.

-e date
Expire date. Requires the use of shadow passwords.
-f days
Number of days after a password expires to disable an account. Requires the use of shadow
passwords.

-g group
Initial group name or ID number.
-s shell
Default login shell.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (329 of 351) [15/ 05/ 2002 18: 03: 41] 386
386 Page 387 388
Linux Commands (Linux in a Nutshell, 3rd Edition)
userdel userdel [option] user
System administration command. Delete all entries for user in system account files.
Option
-r
Remove the home directory of user and any files contained in it.

usermod usermod [options] user
System administration command. Modify user account information.
Options
-c
comment
Comment field.
-d dir
Home directory.
-e date
Account expiration date. date is in the format MM/ DD/ YYYY. Two-digit year fields are also accepted,
but the value is stored as the number of days since January 1, 1970. This option requires the use of
shadow passwords.

-f days
Permanently disable account this many days after the password has expired. A value of -1 disables this
feature. This option requires the use of shadow passwords.

-g group
Initial group name or number.
-G groups
Supplementary groups given by name or number in a comma-separated list with no whitespace. user will
be removed from any groups to which they currently belong that are not included in groups.

-l name
Login name. This cannot be changed while the user is logged in.
-o
Override. Accept a nonunique uid with the -u option.
-s shell
Login shell.
-u uid
Numerical user ID. The value must be unique unless the -o option is used. Any files owned by user in the
user's home directory will have their user ID changed automatically. Files outside of the home directory

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (330 of 351) [15/ 05/ 2002 18: 03: 41] 387
387 Page 388 389
Linux Commands (Linux in a Nutshell, 3rd Edition)
will not be changed. user should not be executing any processes while this is changed.

users users [file]
Print a space-separated list of each login session on the host. Note that this may include the same user multiple
times. Consult file or, by default, /etc/ utmp.

usleep usleep [microseconds]
usleep [options]
Sleep some number of microseconds (default is 1).
Options
--help
Print help information and then exit.
--usage
Print usage message and then exit.
-v, --version
Print version information.

uudecode uudecode [-o outfile] [file]
Read a uuencoded file and re-create the original file with the permissions and name set in the file (see
uuencode). The -o option specifies an alternate output file.

uuencode uuencode [-m] [file] name
Encode a binary file. The encoding uses only printable ASCII characters and includes the permissions and name
of the file. When file is reconverted via uudecode, the output is saved as name. If the file argument is omitted,
uuencode can take standard input, so a single argument is taken as the name to be given to the file when it is
decoded. With the -m option, base64 encoding is used.

Example
It's common to encode a file and save it with an identifying extension, such as .uue. This example encodes the
binary file flower12. jpg, names it rose. jpg, and saves it to a .uue file:

% uuencode flower12. jpg rose. jpg > rose. uue
Encode flower12. jpg and mail it:
% uuencode flower12. jpg flower12. jpg | mail ellen@ oreilly. com

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (331 of 351) [15/ 05/ 2002 18: 03: 42] 388
388 Page 389 390
Linux Commands (Linux in a Nutshell, 3rd Edition)
vacation vacation
vacation
[options] [user]
Automatically return a mail message to the sender announcing that you are on vacation.
Use vacation with no options to initialize the vacation mechanism. The process performs several steps.
1. Creates a .forward file in your home directory. The .forward file contains:
\user, "|/ usr/ bin/ vacation user"
user is your login name. The action of this file is to actually deliver the mail to user (i. e., you) and to run
the incoming mail through vacation.

2. Creates the .vacation. pag and .vacation. dir files. These files keep track of who has sent you messages, so
that they receive only one "I'm on vacation" message from you per week.

3. Starts an editor to edit the contents of .vacation. msg. The contents of this file are mailed back to
whomever sends you mail. Within its body, $subject is replaced with the contents of the incoming
message's Subject line.

Remove or rename the .forward file to disable vacation processing.
Options
The -a and -r options are used within a .forward file; see the example.
-a alias
Mail addressed to alias is actually mail for the user and should produce an automatic reply.
-i
Reinitialize the .vacation. pag and .vacation. dir files. Use this right before leaving for your next vacation.
-r interval
By default, no more than one message per week is sent to any sender. This option changes that interval.
interval is a number with a trailing s, m, h, d, or w indicating seconds, minutes, hours, days, or weeks,
respectively. If interval is infinite, only one reply is sent to each sender.

Example
Send no more than one reply every three weeks to any given sender:
$ cd
$ vacation -I
$ cat .forward
\jp, "|/ usr/ bin/ vacation -r3w jp"
$
cat .vacation. msg
From: jp@ wizard-corp. com (J. Programmer, via the vacation program)
Subject: I'm out of the office ...

Hi. I'm off on a well-deserved vacation after finishing
up whizprog 1.0. I will read and reply to your mail
regarding "$ SUBJECT" when I return.

Have a nice day.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (332 of 351) [15/ 05/ 2002 18: 03: 42] 389
389 Page 390 391

Linux Commands (Linux in a Nutshell, 3rd Edition)
vi vi [options] [files]
A screen-oriented text editor based on ex. For more information on vi, see Chapter 11, "The vi Editor".

vidmode vidmode [option] image [mode [offset]]
System administration command. Sets the video mode for a kernel image. If no arguments are specified, print
current mode value. mode is a 1-byte value located at offset 506 in a kernel image. You may change the mode by
specifying the kernel image to change, the new mode, and the byte offset at which to place the new information
(the default is 506). Note that rdev -v is a synonym for vidmode. If LILO is used, vidmode is not needed. The
video mode can be set from the LILO prompt during a boot.

Modes
-3
Prompt
-2
Extended VGA
-1
Normal VGA
0
Same as entering 0 at the prompt
1
Same as entering 1 at the prompt
2
Same as entering 2 at the prompt
3
Same as entering 3 at the prompt
n
Same as entering n at the prompt
Option
-o
offset
Same as specifying an offset as an argument.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (333 of 351) [15/ 05/ 2002 18: 03: 42] 390
390 Page 391 392
Linux Commands (Linux in a Nutshell, 3rd Edition)
w w [options] [user]
Print summaries of system usage, currently logged-in users, and what they are doing. w is essentially a
combination of uptime, who, and ps -a. Display output for one user by specifying user.

Options
-f
Toggle printing the from (remote hostname) field.
-h
Suppress headings and uptime information.
-s
Use the short format.
-u
Ignore the username while figuring out the current process and CPU times.
-V
Display version information.
File
/var/ run/ utmp
List of users currently logged on.

wall wall [file]
System administration command. Write to all users. wall reads a message from the standard input until an end-of-file.
It then sends this message to all users currently logged in, preceded by "Broadcast Message from..." If file is
specified, read input from that, rather than from standard input.

wc wc [options] [files]
Print character, word, and line counts for each file. Print a total line for multiple files. If no files are given, read
standard input. See other examples under ls and sort.

Options
-c, -bytes, --chars
Print character count only.
-l, --lines
Print line count only.
-w, --words
Print word count only.
--help

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (334 of 351) [15/ 05/ 2002 18: 03: 42] 391
391 Page 392 393
Linux Commands (Linux in a Nutshell, 3rd Edition)
Print help message and then exit.
--version
Print the version number and then exit.
Examples
Count the number of users logged in:
who | wc -l
Count the words in three essay files:
wc -w essay.[ 123]
Count lines in the file named by variable $file (don't display filename):
wc -l < $file

whatis whatis keywords
Search the short manual page descriptions in the whatis database for each keyword and print a one-line
description to standard output for each match. Like apropos, except that it only searches for complete words.
Equivalent to man -f.

whereis whereis [options] files
Locate the binary, source, and manual page files for specified commands/ files. The supplied filenames are first
stripped of leading pathname components and any (single) trailing extension of the form .ext (for example, .c).
Prefixes of s. resulting from use of source code control are also dealt with. whereis then attempts to locate the
desired program in a list of standard Linux directories (e. g., /bin, /etc, /usr/ bin, /usr/ local/ bin/, etc.).

Options
-b
Search only for binaries.
-f
Terminate the last directory list and signal the start of filenames; required when any of the -B, -M, or -S
options are used.

-m
Search only for manual sections.
-s
Search only for sources.
-u
Search for unusual entries, that is, files that do not have one entry of each requested type. Thus, the
command whereis -m -u * asks for those files in the current directory that have no documentation.

-B directories

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (335 of 351) [15/ 05/ 2002 18: 03: 42] 392
392 Page 393 394
Linux Commands (Linux in a Nutshell, 3rd Edition)
Change or otherwise limit the directories to search for binaries.

-M directory
Change or otherwise limit the directories to search for manual sections.
-S directory
Change or otherwise limit the directories to search for sources.
Example
Find all files in /usr/ bin that are not documented in /usr/ man/ man1 but that have source in /usr/ src:
% cd /usr/ bin
% whereis -u -M /usr/ man/ man1 -S /usr/ src -f *

which which [options] [--] [command] [...]
List the full pathnames of the files that would be executed if the named commands had been run. which searches
the user's $PATH environment variable. The C shell and tcsh have a built-in which command that has no
options. To use the options, specify the full pathname (e. g., /usr/ bin/ which).

Options
-a, --all
Print all matches, not just the first.
-i, --read-alias
Read aliases from standard input and write matches to standard output. Useful for using an alias for
which.

--skip-alias
Ignore --read-alias if present. Useful for finding normal binaries while using --read-alias in an alias for
which.

--skip-dot
Skip directories that start with a dot.
--skip-tilde
Skip directories that start with a tilde (~) and executables in $HOME.
--show-dot
If a matching command is found in a directory that starts with a dot, print ./ cmdname instead of the full
pathname.

--show-tilde
Print a tilde (~) to indicate the user's home directory. Ignored if the user is root.
--tty-only
Stop processing options on the right if not on a tty.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (336 of 351) [15/ 05/ 2002 18: 03: 42] 393
393 Page 394 395
Linux Commands (Linux in a Nutshell, 3rd Edition)
-v, -V, --version

Print version information and then exit.
Example
$ which cc ls
/usr/ bin/ cc
ls: aliased to ls -sFC

who who [options] [file]
who am i
Show who is logged in to the system. With no options, list the names of users currently logged in, their terminal,
the time they have been logged in, and the name of the host from which they have logged on. An optional system
file (default is /etc/ utmp) can be supplied to give additional information.

Options
am i
Print the username of the invoking user.
--help
Print a help message and then exit.
-i, -u, --idle
Include idle times. An idle time of . indicates activity within the last minute; one of old indicates no
activity in more than a day.

-l, --lookup
Attempt to include canonical hostnames via DNS.
-m
Same as who am i.
-q, --count
"Quick." Display only the usernames and total number of users.
--version
Print version information and then exit.
-w, -T, --mesg, --message, --writable
Include user's message status:
+
mesg y
(write messages allowed)
-mesg
n
(write messages refused)

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (337 of 351) [15/ 05/ 2002 18: 03: 42] 394
394 Page 395 396
Linux Commands (Linux in a Nutshell, 3rd Edition)
?
Cannot find terminal device
-H, --heading
Print headings.
Example
This sample output was produced at 8 a. m. on April 17:
$ who -uH
NAME LINE TIME IDLE PID COMMENTS
Earvin ttyp3 Apr 16 08: 14 16: 25 2240
Larry ttyp0 Apr 17 07: 33 . 15182

Since Earvin has been idle since yesterday afternoon (16 hours), it appears that he isn't at work yet. He simply
left himself logged in. Larry's terminal is currently in use.

whoami whoami
Print current user ID. Equivalent to id -un.

write write user [tty]
message
Initiate or respond to an interactive conversation with user. A write session is terminated with EOF. If the user
is logged in to more than one terminal, specify a tty number. See also talk; use mesg to keep other users from
writing to your terminal.

xargs xargs [options] [command]
Execute command (with any initial arguments), but read remaining arguments from standard input instead of
specifying them directly. xargs passes these arguments in several bundles to command, allowing command to
process more arguments than it could normally handle at once. The arguments are typically a long list of
filenames (generated by ls or find, for example) that get passed to xargs via a pipe.

Options
-0, --null
Expect filenames to be terminated by NULL instead of whitespace. Do not treat quotes or backslashes
specially.

-e[ string], --eof[= string]
Set EOF to _ or, if specified, to string.
--help
Print a summary of the options to xargs and then exit.
-i[ string], --replace[= string]
Edit all occurrences of {}, or string, to the names read in on standard input. Unquoted blanks are not
considered argument terminators. Implies -x and -l 1.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (338 of 351) [15/ 05/ 2002 18: 03: 42] 395
395 Page 396 397
Linux Commands (Linux in a Nutshell, 3rd Edition)
-l[ lines], --max-lines[= lines]
Allow no more than 1, or lines, nonblank input lines on the command line. Implies -x.
-n
args, --max-args= args
Allow no more than args arguments on the command line. May be overridden by -s.
-p, --interactive
Prompt for confirmation before running each command line. Implies -t.
-P
max, --max-procs= max
Allow no more than max processes to run at once. The default is 1. A maximum of 0 allows as many as
possible to run at once.

-r, --no-run-if-empty
Do not run command if standard input contains only blanks.
-s max, --max-chars= max
Allow no more than max characters per command line.
-t, --verbose
Verbose mode. Print command line on standard error before executing.
-x, --exit
If the maximum size (as specified by -s) is exceeded, exit.
--version
Print the version number of xargs and then exit.
Examples
grep
for pattern in all files on the system:
find / -print | xargs grep pattern > out &
Run diff on file pairs (e. g., f1. a and f1. b, f2. a and f2. b ...):
echo $* | xargs -n2 diff
The previous line would be invoked as a shell script, specifying filenames as arguments. Display file, one word
per line (same as deroff -w):

cat file | xargs -n1
Move files in olddir to newdir, showing each command:
ls olddir | xargs -i -t mv olddir/{} newdir/{}

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (339 of 351) [15/ 05/ 2002 18: 03: 42] 396
396 Page 397 398
Linux Commands (Linux in a Nutshell, 3rd Edition)
yacc yacc [options] file
Given a file containing context-free grammar, convert file into tables for subsequent parsing and send output to
y. tab. c. This command name stands for yet another compiler-compiler. See also flex, bison, and lex & yacc by
John Levine, Tony Mason, and Doug Brown.

Options
-b
prefix
Prepend prefix, instead of y, to the output file.
-d
Generate y. tab. h, producing #define statements that relate yacc's token codes to the token names declared
by the user.

-l
Exclude #line constructs from code produced in y. tab. c. (Use after debugging is complete.)
-t
Compile runtime debugging code.
-v
Generate y. output, a file containing diagnostics and notes about the parsing tables.

yes yes [strings]
yes [option]
Print the command-line arguments, separated by spaces and followed by a newline, until killed. If no arguments
are given, print y followed by a newline until killed. Useful in scripts and in the background; its output can be
piped to a program that issues prompts.

Options
--help
Print a help message and then exit.
--version
Print version information and then exit.

ypbind ypbind [options]
NFS/ NIS command. NIS binder process. ypbind is a daemon process typically activated at system startup time.
Its function is to remember information that lets client processes on a single node communicate with some
ypserv process. The information ypbind remembers is called a binding --the association of a domain name with
the Internet address of the NIS server and the port on that host at which the ypserv process is listening for
service requests. This information is cached in the file /var/ yp/ bindings/ domainname. version.

Options
-ypset

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (340 of 351) [15/ 05/ 2002 18: 03: 42] 397
397 Page 398 399
Linux Commands (Linux in a Nutshell, 3rd Edition)
May be used to change the binding. This option is very dangerous and should be used only for debugging
the network from a remote machine.

-ypsetme
ypset
requests may be issued from this machine only. Security is based on IP address checking, which
can be defeated on networks on which untrusted individuals may inject packets. This option is not
recommended.

ypcat ypcat [options] mname
NFS/ NIS command. Print values in an NIS database specified by mname, which may be either a map name or a
map nickname.

Options
-d
domain
Specify domain other than default domain.
-k
Display keys for maps in which values are null or key is not part of value.
-t
Do not translate mname to map name.
-x
Display map nickname table listing the nicknames (mnames) known and map name associated with each
nickname. Do not require an mname argument.

ypchfn ypchfn [option] [user]
NFS/ NIS command. Change your information stored in /etc/ passwd and displayed when you are fingered;
distribute the change over NIS. Without options, ypchfn enters interactive mode and prompts for changes. To
make a field blank, enter the keyword none. The superuser can change the information for any user. See also
yppasswd and ypchsh.

Options
-f
Behave like ypchfn (default).
-l
Behave like ypchsh.
-p
Behave like yppasswd.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (341 of 351) [15/ 05/ 2002 18: 03: 42] 398
398 Page 399 400
Linux Commands (Linux in a Nutshell, 3rd Edition)
ypchsh ypchsh [option] [user]
NFS/ NIS command. Change your login shell and distribute this information over NIS. Warn if shell does not
exist in /etc/ shells. The superuser can change the shell for any user. See also yppasswd and ypchfn.

Options
-f
Behave like ypchfn.
-l
Behave like ypchsh (default).
-p
Behave like yppasswd.

ypinit ypinit [options]
NFS/ NIS command. Build and install an NIS database on an NIS server. ypinit can be used to set up a master or
a slave server or slave copier. Only a privileged user can run ypinit.

Options
-c
master_ name
Set up a slave copier database. master_ name should be the hostname of an NIS server, either the master
server for all the maps or a server on which the database is up-to-date and stable.

-m
Indicates that the local host is to be the NIS server.
-s master_ name
Set up a slave server database. master_ name should be the hostname of an NIS server, either the master
server for all the maps or a server on which the database is up-to-date and stable.

ypmatch ypmatch [options] key... mname
NFS/ NIS command. Print value of one or more keys from an NIS map specified by mname. mname may be
either a map name or a map nickname.

Options
-d
domain
Specify domain other than default domain.
-k
Before printing value of a key, print key itself, followed by a colon (:).
-t
Do not translate nickname to map name.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (342 of 351) [15/ 05/ 2002 18: 03: 42] 399
399 Page 400 401
Linux Commands (Linux in a Nutshell, 3rd Edition)
-x

Display map nickname table listing the nicknames (mnames) known, and map name associated with each
nickname. Do not require an mname argument.

yppasswd yppasswd [option] [name]
NFS/ NIS command. Change login password in Network Information Service. Create or change your password,
and distribute the new password over NIS. The superuser can change the password for any user. See also ypchfn
and ypchsh.

Options
-f
Behave like ypchfn.
-l
Behave like ypchsh.
-p
Behave like yppasswd (default).

yppasswdd rpc. yppasswdd [option]
NFS/ NIS command. Server for modifying the NIS password file. yppasswdd handles password change requests
from yppasswd. It changes a password entry only if the password represented by yppasswd matches the
encrypted password of that entry and if the user ID and group ID match those in the server's /etc/ passwd file.
Then it updates /etc/ passwd and the password maps on the local server.

Option
-s
Support shadow password functions.

yppoll yppoll [options] mapname
NFS/ NIS command. Determine version of NIS map at NIS server. yppoll asks a ypserv process for the order
number and the hostname of the master NIS server for the named map.

Options
-h
host
Ask the ypserv process at host about the map parameters. If host is not specified, the hostname of the
NIS server for the local host (the one returned by ypwhich) is used.

-d domain
Use domain instead of the default domain.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (343 of 351) [15/ 05/ 2002 18: 03: 42] 400
400 Page 401 402
Linux Commands (Linux in a Nutshell, 3rd Edition)
yppush yppush [options] mapnames
NFS/ NIS command. Force propagation of changed NIS map. yppush copies a new version of an NIS map,
mapname, from the master NIS server to the slave NIS servers. It first constructs a list of NIS server hosts by
reading the NIS map ypservers with the -d option's domain argument. Keys within this map are the ASCII
names of the machines on which the NIS servers run. A "transfer map" request is sent to the NIS server at each
host, along with the information needed by the transfer agent to call back the yppush. When the attempt has
been completed and the transfer agent has sent yppush a status message, the results may be printed to stdout.
Normally invoked by /var/ yp/ Makefile.

Options
-d
domain
Specify a domain.
-v
Verbose --print message when each server is called and for each response.

ypserv ypserv [options]
NFS/ NIS command. NIS server process. ypserv is a daemon process typically activated at system startup time. It
runs only on NIS server machines with a complete NIS database. Its primary function is to look up information
in its local database of NIS maps. The operations performed by ypserv are defined for the implementor by the
NIS protocol specification and for the programmer by the header file <rpcvc/ yp_ prot. h>. Communication to and
from ypserv is by means of RPC calls.

Options
-d
NIS service should go to the DNS for more host information.
-localonly
Indicates ypserv should not respond to outside requests.
Files and directories
/var/ yp/[ domainname]/
Location of NIS databases.
/var/ yp/ Makefile
Makefile that is responsible for creating NIS databases.

ypset ypset [options] server
NFS/ NIS command. Point ypbind at a particular server. ypset tells ypbind to get NIS services for the specified
domain from the ypserv process running on server. server indicates the NIS server to bind to and can be
specified as a name or an IP address.

Options
-d
domain
Use domain instead of the default domain.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (344 of 351) [15/ 05/ 2002 18: 03: 42] 401
401 Page 402 403
Linux Commands (Linux in a Nutshell, 3rd Edition)
-h host
Set ypbind's binding on host, instead of locally. host can be specified as a name or an IP address.

ypwhich ypwhich [options] [host]
NFS/ NIS command. Return hostname of NIS server or map master. Without arguments, ypwhich cites the NIS
server for the local machine. If host is specified, that machine is queried to find out which NIS master it is using.

Options
-d
domain
Use domain instead of the default domain.
-m map
Find master NIS server for a map. No host can be specified with -m. map may be a map name or a
nickname for a map.

-t mapname
Inhibit nickname translation.
-x
Display map nickname table. Do not allow any other options.

ypxfr ypxfr [options] mapname
NFS/ NIS command. Transfer an NIS map from the server to the local host by making use of normal NIS
services. ypxfr creates a temporary map in the directory /etc/ yp/ domain (where domain is the default domain for
the local host), fills it by enumerating the map's entries, and fetches the map parameters and loads them. If run
interactively, ypxfr writes its output to the terminal. However, if it is invoked without a controlling terminal, and
if the log file /usr/ admin/ nislog exists, it appends all its output to that file.

Options
-b
Preserve the resolver flag in the map during the transfer.
-C tid prog ipadd port
This option is for use only by ypserv. When ypserv invokes ypxfr, it specifies that ypxfr should call
back a yppush process at the host with IP address ipadd, registered as program number prog, listening on
port port, and waiting for a response to transaction tid.

-c
Do not send a "Clear current map" request to the local ypserv process.
-d domain
Specify a domain other than the default domain.
-f
Force the transfer to occur even if the version at the master is older than the local version.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (345 of 351) [15/ 05/ 2002 18: 03: 42] 402
402 Page 403 404
Linux Commands (Linux in a Nutshell, 3rd Edition)
-h host
Get the map from host, regardless of what the map says the master is. If host is not specified, ypxfr asks
the NIS service for the name of the master and tries to get the map from there. host may be a name or an
Internet address in the form h. h. h. h.

-S
Use only NIS servers running as root and using a reserved port.
-s domain
Specify a source domain from which to transfer a map that should be the same across domains (such as
the services. byname map).

zcat zcat [options] [files]
Read one or more files that have been compressed with gzip or compress and write them to standard output.
Read standard input if no files are specified or if -is specified as one of the files; end input with EOF. zcat is
identical to gunzip -c and takes the options -fhLV described for gzip/ gunzip.

zcmp zcmp [options] files
Read compressed files and pass them, uncompressed, to the cmp command, along with any command-line
options. If a second file is not specified for comparison, look for a file called file. gz.

zdiff zdiff [options] files
Read compressed files and pass them, uncompressed, to the diff command, along with any command-line
options. If a second file is not specified for comparison, look for a file called file. gz.

zdump zdump [options] [zones]
System administration command. Dump a list of all known time zones or, if an argument is provided, a specific
zone or list of zones. Include each zone's current time with its name.

Options
-c
year
Specify a cutoff year to limit verbose output. Meaningful only with -v.
-v
Verbose mode. Include additional information about each zone.

zforce zforce [names]
Rename all gzipped files to filename. gz, unless file already has a .gz extension.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (346 of 351) [15/ 05/ 2002 18: 03: 42] 403
403 Page 404 405
Linux Commands (Linux in a Nutshell, 3rd Edition)
zgrep zgrep [options] [files]
Uncompress files and pass to grep, along with any command-line arguments. If no files are provided, read from
(and attempt to uncompress) standard input. May be invoked as zegrep or zfgrep and will in those cases invoke
egrep or fgrep.

zic zic [options] [files]
System administration command. Create time conversion information files from the file or files specified. If the
specified file is -, read information from standard input.

Options
-d
directory
Place the newly created files in directory. Default is /usr/ local/ etc/ zoneinfo.
-l timezone
Specify a timezone to use for local time. zic links the zone information for timezone with the zone
localtime.

-p timezone
Set the default rules for handling POSIX-format environment variables to the zone name specified by
timezone.

-s
Store time values only if they are the same when signed as when unsigned.
-v
Verbose mode. Include extra error checking and warnings.
-y command
Check year types with command. Default is yearistype.
-L
file
Consult file for information about leap seconds.
The source file( s) for zic should be formatted as a sequence of rule lines, zone lines, and link lines. An optional
file containing leap second rules can be specified on the command line. Rule lines describe how time should be
calculated. They describe changes in time, daylight savings time, war time, and any other changes that might
affect a particular time zone. Zone lines specify which rules apply to a given zone. Link lines link similar zones
together. Leap lines describe the exact time when leap seconds should be added or subtracted. Each of these
lines is made up of fields. Fields are separated from one another by any number of whitespace characters.
Comment lines are preceded by a #. The fields used in each line are listed next.

Rule line fields
The format of a rule line is:
Rule NAME FROM TO TYPE IN ON AT SAVE LETTERS
NAME
Name this set of rules.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (347 of 351) [15/ 05/ 2002 18: 03: 42] 404
404 Page 405 406
Linux Commands (Linux in a Nutshell, 3rd Edition)
FROM
Specify the first year to which this rule applies. Gregorian calendar dates are assumed. Instead of
specifying an actual year, you may specify minimum or maximum for the minimum or maximum year
representable as an integer.

TO
Specify the last year to which this rule applies. Syntax is the same as for the FROM field.
TYPE
Specify the type of year to which this rule should be applied. The wildcard -instructs that all years be
included. Any given year's type will be checked with the command given with the -y option or the default
yearistype year type. An exit status of 0 is taken to mean the year is of the given type; an exit status of 1
means that it is not of the given type (see -y option).

IN
Specify month in which this rule should be applied.
ON
Specify day in which this rule should be applied. Whitespace is not allowed. For example:
1
The 1st
firstSun
The first Sunday
Sun>= 3
The first Sunday to occur before or on the 3rd
AT
Specify the time after which the rule is in effect. For example, you may use 13, 13: 00, or 13: 00: 00 for
1: 00 p. m.. You may include one of several suffixes (without whitespace between):

s
Local standard time.
u, g, z
Universal time.
w
Wall clock time (default).
SAVE
Add this amount of time to the local standard time. Formatted like AT, without suffixes.
LETTERS

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (348 of 351) [15/ 05/ 2002 18: 03: 42] 405
405 Page 406 407
Linux Commands (Linux in a Nutshell, 3rd Edition)
Specify letter or letters to be used in time zone abbreviations (for example, S for EST). For no
abbreviation, enter -.

Zone line fields
The format of a zone line is:
Zone NAME GMTOFF RULES/ SAVE FORMAT [UNTIL]
NAME
Time zone name.
GMTOFF
The amount of hours by which this time zone differs from GMT. Formatted like AT. Negative times are
subtracted from GMT; by default, times are added to it.

RULES/ SAVE
Either the name of the rule to apply to this zone or the amount of time to add to local standard time. To
make the zone the same as local standard time, specify -.

FORMAT
How to format time zone abbreviations. Specify the variable part with %s.
UNTIL
Change the rule for the zone at this date. The next line must specify the new zone information and
therefore must omit the string "Zone" and the NAME field.

Link line fields
The format of a link line is:
Link LINK-FROM LINK-TO
LINK-FROM
The name of the zone that is being linked.
LINK-TO
An alternate name for the zone that was specified as LINK-FROM.
Leap line fields
The format of a leap line is:
Leap YEAR MONTH DAY HH: MM: SS CORR R/ S
YEAR MONTH DAY HH: MM: SS
Specify when the leap second happened.
CORR
Uses a + or a -to show whether the second was added or skipped.
R/ S

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (349 of 351) [15/ 05/ 2002 18: 03: 42] 406
406 Page 407 408
Linux Commands (Linux in a Nutshell, 3rd Edition)
An abbreviation of Rolling or Stationary to describe whether the leap second should be applied to local
wall clock time or to GMT.

zmore zmore [files]
Similar to more. Uncompress files and print them, one screenful at a time. Works on files compressed with
compress, gzip, or pack and with uncompressed files.

Commands
space
Print next screenful.
i[ number]
Print next screenful, or number lines. Set i to number lines.
d, ^D
Print next i, or 11, lines.
iz
Print next i lines or a screenful.
is
Skip i lines. Print next screenful.
if
Skip i screens. Print next screenful.
q, Q, :q, :Q
Go to next file, or, if current file is the last, exit zmore.
e, q
Exit zmore when the prompt "--More--( Next file: file)" is displayed.
s
Skip next file and continue.
=
Print line number.
i/ expr
Search forward for ith occurrence (in all files) of expr, which should be a regular expression. Display
occurrence, including the two previous lines of context.

in
Search forward for the ith occurrence of the last regular expression searched for.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (350 of 351) [15/ 05/ 2002 18: 03: 42] 407
407 Page 408 409

Linux Commands (Linux in a Nutshell, 3rd Edition)
!command

Execute command in shell. If command is not specified, execute last shell command. To invoke a shell
without passing it a command, enter \!.

.
Repeat the previous command.

znew znew [options] [files]
Uncompress .Z files and recompress them in .gz format.
Options
-9
Optimal (and slowest) compression method.
-f
Recompress even if filename. gz already exists.
-t
Test new .gz files before removing .Z files.
-v
Verbose mode.
-K
If the original .Z file is smaller than the .gz file, keep it.
-P
Pipe data to conversion program. This saves disk space.

2.8. RPC and XDR 4. Boot Methods
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in... 20Nutshell,% 203rd% 20Edition/ Pages/ ch03_ 01. htm (351 of 351) [15/ 05/ 2002 18: 03: 42] 408
408 Page 409 410

Boot Methods (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

Chapter 4. Boot Methods
Contents:
The Boot Process
LILO: The Linux Loader
Loadlin: Booting from MS-DOS
Dual Booting Linux and Windows NT/ 2000
Boot-time Kernel Options
initrd: Using a RAM Disk

This chapter describes some techniques for booting your Linux system. Depending on your
hardware and whether you want to run any other operating systems, you can configure the
system to boot Linux automatically or to provide a choice between several operating systems.
Choosing between operating systems is generally referred to as dual booting, but you can boot
more than two (e. g., Linux and Windows 95/ 98/ NT/ 2000). This chapter covers the following
topics:

l The boot process

l LILO: the Linux loader
l Loadlin: booting from MS-DOS
l Dual booting Linux and Windows NT/ 2000
l Boot-time kernel options
l initrd: using a RAM disk

4.1. The Boot Process
Once your Linux system is up and running, booting the system generally is pretty
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 01. htm (1 of 3) [15/ 05/ 2002 18: 04: 19] 409
409 Page 410 411

Boot Methods (Linux in a Nutshell, 3rd Edition)
straightforward. But with the wide variety of hardware and software in use, there are many
possibilities for configuring your boot process. The three most common choices are:

l Boot Linux from a floppy, leaving any other operating system to boot from the hard
drive.

l Use the Linux Loader, LILO.[ 2] This is probably the most common method of booting
and lets you boot both Linux and other operating systems.

[2] LILO is the standard boot program for i386-architecture machines.
On the Alpha, the equivalent boot program is called MILO (Mini
Loader), and on the SPARC, it is SILO.

l Run Loadlin, which is an MS-DOS program that boots Linux from within DOS.

Other boot managers that can load Linux are available, but we don't discuss them in this
chapter. We also won't talk further about booting from a floppy except to say that whatever
method you choose for booting, you should be sure to have a working boot floppy available
for emergency use. In particular, don't experiment with the files and options in this chapter
unless you have a boot floppy, because any error could leave you unable to boot from the hard
disk.

On an Intel-based PC, the first sector of every hard disk is known as the boot sector and
contains the partition table for that disk and possibly also code for booting an operating
system. The boot sector of the first hard disk is known as the master boot record (MBR),
because when you boot the system, the BIOS transfers control to a program that lives on that
sector along with the partition table. That code is the boot loader, the code that initiates an
operating system. When you add Linux to the system, you need to modify the boot loader,
replace it, or boot from a floppy disk to start Linux.

In Linux, each disk and each partition on the disk is treated as a device. So, for example, the
entire first hard disk is known as /dev/ hda and the entire second hard disk, if there is one, is
/dev/ hdb. The first partition of the first hard drive is /dev/ hda1, and the second partition is
/dev/ hda2; the first partition of the second hard drive is /dev/ hdb1; and so on. If your drives
are SCSI instead of IDE, the naming works the same way except that the devices are /dev/ sda,
/dev/ sda1,
and so on. Thus, if you want to specify that the Linux partition is the second
partition of the first hard drive (as in the examples in this chapter), you refer to it as /dev/ hda2.

The rest of the chapter describes the various techniques for booting Linux and the options that
you can specify to configure both the boot loader that you use and the Linux kernel. Both
LILO and Loadlin let you pass options to the loader and they also let you specify options for
the kernel.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 01. htm (2 of 3) [15/ 05/ 2002 18: 04: 19] 410
410 Page 411 412

Boot Methods (Linux in a Nutshell, 3rd Edition)
3. Linux Commands 4.2. LILO: The Linux Loader

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 01. htm (3 of 3) [15/ 05/ 2002 18: 04: 19] 411
411 Page 412 413

LILO: The Linux Loader (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

4.2. LILO: The Linux Loader
Once you've made the decision to install LILO, you still need to decide how it should be configured. If you want your
system to dual boot Linux and Windows 95/ 98, you can install LILO on the master boot record (MBR) and set it up to let
you select the system to boot. Dual booting Linux and Windows NT is not quite as straightforward, because Windows NT
has its own loader on the MBR, and it expects to be the one in charge. Therefore, you need to make Linux an option in the
NT loader and install LILO in the Linux partition as a secondary boot loader. The result is that the Windows NT loader
transfers control to LILO, which then boots Linux. The same applies to Windows 2000, which uses the NT loader. See
Section 4.4, "Dual Booting Linux and Windows NT/ 2000" later in this chapter for more information.

In addition to booting Linux, LILO can boot other operating systems, such as MS-DOS, Windows 95/ 98, or OS/ 2. During
installation, the major Linux distributions provide the opportunity to install LILO; it can also be installed later if necessary.
LILO can be installed on the master boot record (MBR) of your hard drive or as a secondary boot loader on the Linux
partition. LILO consists of several pieces, including the boot loader itself, a configuration file (/ etc/ lilo. conf), a map file
(/ boot/ map) containing the location of the kernel, and the lilo command (/ sbin/ lilo), which reads the configuration file and
uses the information to create or update the map file and to install the files LILO needs.

If LILO is installed on the MBR, it replaces the MS-DOS boot loader. If you have problems with your installation or you
simply want to uninstall LILO and restore the original boot loader, you can do one of the following:

l Boot Linux from a floppy disk and restore the backed-up boot sector:

% /sbin/ lilo -u
l Boot to DOS and run a special version of the fdisk command that rebuilds the MBR:

C:> fdisk /mbr
One thing to remember about LILO is that it has two aspects: the boot loader and the lilo command. The lilo command
configures and installs the boot loader and updates it as necessary. The boot loader is the code that executes at system boot
time and boots Linux or another operating system.

4.2.1. The LILO Configuration File
The lilo command reads the LILO configuration file, /etc/ lilo. conf, to get the information it needs to install LILO. Among
other things, it builds a map file containing the locations of all disk sectors needed for booting.

Note that any time you change /etc/ lilo. conf or rebuild or move a kernel image, you need to rerun lilo to rebuild the map file
and update LILO.

The configuration file starts with a section of global options, described in the next section. Global options are those that
apply to every system boot, regardless of what operating system you are booting. Here is an example of a global section (a
hash sign, #, begins a comment):

boot = /dev/ hda # The boot device is /dev/ hda
map = /boot/ map # Save the map file as /boot/ map
install = /boot/ boot. b # The file to install as the new boot sector

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 02. htm (1 of 10) [15/ 05/ 2002 18: 04: 23] 412
412 Page 413 414
LILO: The Linux Loader (Linux in a Nutshell, 3rd Edition)
prompt # Always display the boot prompt
timeout = 30 # Set a 3-second (30 tenths of a second) timeout

Following the global section, there is one section of options for each Linux kernel and for each non-Linux operating system
that you want LILO to be able to boot. Each of those sections is referred to as an image section, because each boots a
different kernel image (shorthand for a binary file containing a kernel) or another operating system. Each Linux image
section begins with an image= line.

image = /boot/ vmlinuz # Linux image file
label = linux # Label that appears at the boot prompt
root = /dev/ hda2 # Location of the root filesystem
vga = ask # Always prompt the user for VGA mode
read-only # Mount read-only to run fsck for a filesystem check

The equivalent section for a non-Linux operating system begins with other= instead of image=. For example:
other = /dev/ hda1 # Location of the partition
label = dos
table = /dev/ hda # Location of the partition table

Put LILO configuration options that apply to all images into the global section of /etc/ lilo. conf and options that apply to a
particular image into the section for that image. If an option is specified in both the global section and an image section, the
setting in the image section overrides the global setting for that image.

Here is an example of a complete /etc/ lilo. conf file for a system that has the Linux partition on /dev/ hda2:
## Global section
boot=/ dev/ hda2
map=/ boot/ map
delay= 30
timeout= 50
prompt
vga= ask

## Image section: For regular Linux
image=/ boot/ vmlinuz
label= linux
root=/ dev/ hda2
install=/ boot/ boot. b
map=/ boot/ map
read-only

## Image section: For testing a new Linux kernel
image=/ testvmlinuz
label= testlinux
root=/ dev/ hda2
install=/ boot/ boot. b
map=/ boot/ map
read-only
optional # Omit image if not available when map is built

## Image section: For booting DOS
other=/ dev/ hda1
label= dos
loader=/ boot/ chain. b
table=/ dev/ hda # The current partition table

## Image section: For booting Windows 95
other=/ dev/ hda1

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 02. htm (2 of 10) [15/ 05/ 2002 18: 04: 23] 413
413 Page 414 415

LILO: The Linux Loader (Linux in a Nutshell, 3rd Edition)
label= win95
loader=/ boot/ chain. b
table=/ dev/ hda

4.2.1.1. Global options
In addition to the options listed here, the kernel options append, read-only, read-write, root, and vga (described in
Section 4.2.1.3, "Kernel options" later) also can be set as global options.

backup= backup-file
Copies the original boot sector to backup-file instead of to the file /boot/ boot. nnnn, where nnnn is a number that
depends on the disk device type.
boot= boot-device

Sets the name of the device that contains the boot sector. boot defaults to the device currently mounted as root, such
as /dev/ hda2. Specifying a device such as /dev/ hda (without a number) indicates that LILO should be installed in the
master boot record; the alternative is to set it up on a particular partition such as /dev/ hda2.
compact

Merges read requests for adjacent disk sectors to speed up booting. Use of compact is particularly recommended
when booting from a floppy disk. Use of compact may conflict with linear.
default=
name

Uses the image name as the default boot image. If default is omitted, the first image specified in the configuration
file is used.
delay= tsecs

Specifies, in tenths of a second, how long the boot loader should wait before booting the default image. If serial is
set, delay is set to 20 at a minimum. The default is to not wait.
disk= device-name

Defines parameters for the disk specified by device-name if LILO can't figure them out. Normally, LILO can
determine the disk parameters itself and this option isn't needed. When disk is specified, it is followed by one or
more parameter lines, such as:

disk=/ dev/ sda
bios= 0x80 # First disk is usually 0x80, second is usually 0x81
sectors= ...
heads= ...

Note that this option is not the same as the disk geometry parameters you can specify with the hd boot command-line
option. With disk, the information is given to LILO; with hd, it is passed to the kernel. The parameters that can be
specified with disk are listed briefly here. They are described in detail in the LILO User's Guide, which comes with the
LILO distribution.

bios= bios-device-code
The number the BIOS uses to refer to the device. See the previous example.
cylinders= cylinders
The number of cylinders on the disk.
heads= heads
The number of heads on the disk.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 02. htm (3 of 10) [15/ 05/ 2002 18: 04: 23] 414
414 Page 415 416

LILO: The Linux Loader (Linux in a Nutshell, 3rd Edition)
inaccessible
Tells LILO that the BIOS can't read the disk; used to prevent the system from becoming unbootable if LILO thinks
the BIOS can read it.

partition= partition-device
Starts a new section for a partition. The section contains one variable, start= partition-offset, which specifies the
zero-based number of the first sector of the partition:

partition=/ dev/ sda1
start= 2048

sectors= sectors
The number of sectors per track.
disktab= disktab-file
This option has been superseded by the disk= option.
fix-table
If set, allows lilo to adjust 3D addresses (addresses specified as sector/ head/ cylinder) in partition tables. This is
sometimes necessary if a partition isn't track-aligned and another operating system such as MS-DOS is on the same
disk. See the lilo. conf manpage for details.

force-backup= backup-file
Like backup but overwrites an old backup copy if one exists.
ignore-table
Tells lilo to ignore corrupt partition tables.
install= boot-sector
Installs the specified file as the new boot sector. If install is omitted, the boot sector defaults to /boot/ boot. b.
lba32
Generates 32-bit Logical Block Addresses instead of sector/ head/ cylinder addresses, allowing booting from any
partition on hard disks greater than 8.4GB (i. e., it removes the 1024-cylinder limit). Requires BIOS support for the
EDD packet call interface[ 3] and at least LILO Version 21-4.

[3] If your BIOS is dated after 1998, it should include EDD packet call interface support.
linear
Generates linear sector addresses, which do not depend on disk geometry, instead of 3D (sector/ head/ cylinder)
addresses. If LILO can't determine your disk's geometry itself, you can try using linear; if that doesn't work, then
you need to specify the geometry with disk=. Note, however, that linear sometimes doesn't work with floppy disks,
and it may conflict with compact.

lock

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 02. htm (4 of 10) [15/ 05/ 2002 18: 04: 23] 415
415 Page 416 417
LILO: The Linux Loader (Linux in a Nutshell, 3rd Edition)
Tells LILO to record the boot command line and use it as the default for future boots until it is overridden by a new
boot command line. lock is useful if there is a set of options that you need to enter on the boot command line every
time you boot the system.

map= map-file
Specifies the location of the map file. Defaults to /boot/ map.
message= message-file
Specifies a file containing a message to be displayed before the boot prompt. The message can include a formfeed
character (Ctrl-L) to clear the screen. The map file must be rebuilt by rerunning the lilo command if the message file
is changed or moved. The maximum length of the file is 65,535 bytes.

nowarn
Disables warning messages.
optional
Specifies that any image that is not available when the map is created should be omitted and not offered as an option
at the boot prompt. Like the per-image option optional but applies to all images.

password= password
Specifies a password that the user is prompted to enter when trying to load an image. The password is not encrypted
in the configuration file, so if passwords are used, permissions should be set so that only the superuser is able to read
the file. This option is like the per-image version, except that all images are password-protected and they all have the
same password.

prompt
Automatically displays the boot prompt without waiting for the user to press the Shift, Alt, or Scroll Lock key. Note
that setting prompt without also setting timeout prevents unattended reboots.

restricted
Can be used with password to indicate that a password needs to be entered only if the user specifies parameters on
the command line. Like the per-image restricted option but applies to all images.

serial= parameters
Allows the boot loader to accept input from a serial line as well as from the keyboard. Sending a break on the serial
line corresponds to pressing a Shift key on the console to get the boot loader's attention. All boot images should be
password-protected if serial access is insecure (e. g., if the line is connected to a modem). Setting serial
automatically raises the value of delay to 20 (i. e., 2 seconds) if it is less than that. The parameter string parameters
has the following syntax:

port[, bps[ parity[ bits]]]
For example, to initialize COM1 with the default parameters:
serial= 0,2400n8
The parameters are:

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 02. htm (5 of 10) [15/ 05/ 2002 18: 04: 23] 416
416 Page 417 418
LILO: The Linux Loader (Linux in a Nutshell, 3rd Edition)
port

The port number of the serial port. The default is 0, which corresponds to COM1 (/ dev/ ttys0). The value can be one
of 0 through 3, for the four possible COM ports.

bps
The baud rate of the serial port. Possible values of bps are 110, 300, 1200, 2400, 4800, 9600, 19200, and 38400. The
default is 2400 bps.

parity
The parity used on the serial line. Parity is specified as: n or N for no parity, e or E for even parity, and o or O for
odd parity. However, the boot loader ignores input parity and strips the 8th bit.

bits
Specifies whether a character contains 7 or 8 bits. Default is 8 with no parity and 7 otherwise.
timeout= tsecs
Sets a timeout (specified in tenths of a second) for keyboard input. If no key has been pressed after the specified
time, the default image is booted automatically. timeout is also used to determine when to stop waiting for password
input. The default timeout is infinite.

verbose= level
Turns on verbose output, where higher values of level produce more output. If -v is also specified on the lilo
command line, the level is incremented by 1 for each occurrence of -v. The maximum verbosity level is 5.

4.2.1.2. Image options
The following options are specified for a particular image.
alias= name
Provides an alternate name for the image that can be used instead of the name specified with the label option.
image= pathname
Specifies the file or device containing the boot image of a bootable Linux kernel. Each per-image section that
specifies a bootable Linux kernel starts with an image option. See also the range option.

label= name
Specifies the name that is used for the image at the boot prompt. Defaults to the filename of the image file (without
the path).

loader= chain-loader
For a non-Linux operating system, specifies the chain loader to which LILO should pass control for booting that
operating system. The default is /boot/ chain. b. If the system will be booted from a drive that is neither the first hard
disk or a floppy, the chain loader must be specified.

lock

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 02. htm (6 of 10) [15/ 05/ 2002 18: 04: 23] 417
417 Page 418 419
LILO: The Linux Loader (Linux in a Nutshell, 3rd Edition)
Like lock as described in the global options section; it can also be specified in an image section.

optional
Specifies that the image should be omitted if it is not available when the map is created by the lilo command. Useful
for specifying test kernels that are not always present.

password= password
Specifies that the image is password-protected and provides the password that the user is prompted for when
booting. The password is not encrypted in the configuration file, so if passwords are used, only the superuser should
be able to read the file.

range= sectors
Used with the image option, when the image is specified as a device (e. g., image=/ dev/ fd0), to indicate the range of
sectors to be mapped into the map file. sectors can be given as the range start-end or as start+ number, where start
and end are zero-based sector numbers and number is the increment beyond start to include. If only start is
specified, only that one sector is mapped. For example:

image = /dev/ fd0
range = 1+ 512 # take 512 sectors, starting with sector 1

restricted
Specifies that a password is required for booting the image only if boot parameters are specified on the command
line.

table= device
Specifies, for a non-Linux operating system, the device that contains the partition table. If table is omitted, the boot
loader does not pass partition information to the operating system being booted. Note that /sbin/ lilo must be rerun if
the partition table is modified. This option cannot be used with unsafe.

unsafe
Can be used in the per-image section for a non-Linux operating system to indicate that the boot sector should not be
accessed when the map is created. If unsafe is specified, then some checking isn't done, but the option can be useful
for running the lilo command without having to insert a floppy disk when the boot sector is on a fixed-format floppy
disk device. This option cannot be used with table.

4.2.1.3. Kernel options
The following kernel options can be specified in /etc/ lilo. conf as well as on the boot command line:
append= string
Appends the options specified in string to the parameter line passed to the kernel. This typically is used to specify
certain hardware parameters. For example, if your system has more than 64 MB of memory (i. e., more than your
BIOS can recognize), you can use append:

append = "mem= 128M"
initrd= filename
Specifies the file to load into /dev/ initrd when booting with a RAM disk. See also the options load_ ramdisk (in

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 02. htm (7 of 10) [15/ 05/ 2002 18: 04: 23] 418
418 Page 419 420

LILO: The Linux Loader (Linux in a Nutshell, 3rd Edition)
Section 4.5, "Boot-time Kernel Options"), prompt_ ramdisk, ramdisk_ size, and ramdisk_ start (in Section 4.6,
"initrd: Using a RAM Disk").
literal= string

Like append but replaces all other kernel boot options.
noinitrd

Preserves the contents of /dev/ initrd so they can be read once after the kernel is booted.
prompt_ ramdisk= n

Specifies whether the kernel should prompt you to insert the floppy disk that contains the RAM disk image, for use
during Linux installation. Values of n are:

0
Don't prompt. Usually used for an installation in which the kernel and the RAM disk image both fit on one
floppy.
1

Prompt. This is the default.
ramdisk= size

Obsolete; use only with kernels older than Version 1.3.48. For newer kernels, see the option load_ ramdisk in
Section 4.5, "Boot-time Kernel Options" as well as prompt_ ramdisk, ramdisk_ size, and ramdisk_ start, elsewhere

in this section.
ramdisk_ size= n

Specifies the amount of memory, in kilobytes, to be allocated for the RAM disk. The default is 4096, which
allocates 4 megabytes.
ramdisk_ start= offset

Used for a Linux installation in which both the kernel and the RAM disk image are on the same floppy. offset
indicates the offset on the floppy where the RAM disk image begins; it is specified in kilobytes.
root= root-device

Specifies the device that should be mounted as root. If the special name current is used as the value, the root device
is set to the device on which the root filesystem currently is mounted. Defaults to the root-device setting contained
in the kernel image.
vga= mode

Specifies the VGA text mode that should be selected when booting. mode defaults to the VGA mode setting in the
kernel image. The values are case-insensitive. They are:

ask
Prompts the user for the text mode. Pressing Enter in response to the prompt displays a list of the available
modes.
extended (or ext)

Selects 80x50 text mode.
normal

Selects normal 80x25 text mode.
number

Use the text mode that corresponds to number. A list of available modes for your video card can be obtained
by booting with vga= ask and pressing Enter.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 02. htm (8 of 10) [15/ 05/ 2002 18: 04: 23] 419
419 Page 420 421
LILO: The Linux Loader (Linux in a Nutshell, 3rd Edition)
4.2.2. The lilo Command
You need to run the lilo command to install the LILO boot loader and to update it whenever the kernel changes or to reflect
changes to /etc/ lilo. conf.

The path to the lilo command is usually /sbin/ lilo. The syntax of the command is:
lilo [options]
Some of the options correspond to /etc/ lilo. conf keywords:

Configuration Keyword Command Option
boot=
bootdev -b bootdev
compact -c
delay=
tsecs -d tsecs
default= label -D label
disktab= file -f file
install= bootsector -i bootsector
lba32 -L
linear -l
map=
mapfile -m mapfile
fix-table -P fix
ignore-table -P ignore
backup=
file -s file
force-backup= file -S file
verbose= level -v

These options should be put in the configuration file whenever possible; putting them on the lilo command line instead of
in /etc/ lilo. conf is now deprecated. The next section describes those options that can be given only on the lilo command
line; the others are described earlier in this section.

4.2.3. lilo Command Options
The following list describes those lilo command options that are available only on the command line. Multiple options are
given separately:

% lilo -q -v
-C config-file
Specifies an alternative to the default configuration file (/ etc/ lilo. conf). lilo uses the configuration file to determine
what files to map when it installs LILO.

-I label

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 02. htm (9 of 10) [15/ 05/ 2002 18: 04: 23] 420
420 Page 421 422

LILO: The Linux Loader (Linux in a Nutshell, 3rd Edition)
Prints the path to the kernel specified by label to standard output or an error message if no matching label is found.
For example:

% lilo -I linux
/boot/ vmlinuz-2.0.34-0.6

-q
Lists the currently mapped files. lilo maintains a file (by default /boot/ map), containing the name and location of the
kernel( s) to boot. Running lilo with this option prints the names of the files in the map file to standard output, as in
this example (in which the asterisk indicates that linux is the default):

% lilo -q
linux *
test

-r root-directory
Specifies that before doing anything else, lilo should chroot to the indicated directory. Used for repairing a setup
from a boot floppy --you can boot from a floppy but have lilo use the boot files from the hard drive. For example, if
you issue the following commands, lilo will get the files it needs from the hard drive:

% mount /dev/ hda2 /mnt
% lilo -r /mnt

-R command-line
Sets the default command for the boot loader the next time it executes. The command executes once and then is
removed by the boot loader. This option typically is used in reboot scripts, just before calling shutdown -r.

-t
Indicates that this is a test. Does not really write a new boot sector or map file. Can be used with -v to find out what
lilo would do during a normal run.

-u device-name
Uninstalls lilo by restoring the saved boot sector from /boot/ boot. nnnn, after validating it against a timestamp.
device-name is the name of the device on which LILO is installed, such as /dev/ hda2.

-U device-name
Like -u but does not check the timestamp.
-V
Prints the lilo version number.

4. Boot Methods 4.3. Loadlin: Booting from
MS-DOS

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 02. htm (10 of 10) [15/ 05/ 2002 18: 04: 23] 421
421 Page 422 423

Loadlin: Booting from MS-DOS (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

4.3. Loadlin: Booting from MS-DOS
Loadlin is a Linux boot loader that you run from within a bootable MS-DOS partition; the
system must be in real DOS mode, not in an MS-DOS window running under Windows. No
installation is required; you just need to copy the executable file loadlin. exe from the Loadlin
distribution to your MS-DOS partition.[ 4] You also need a compressed Linux kernel (e. g.,

vmlinuz), which you can load from a floppy, from the DOS partition, or from a RAM disk. For
example:

[4] If Loadlin didn't come with your Linux distribution, you can download it
from any of the major Linux sites, such as the Metalab site at
http:// metalab. unc. edu/ pub/ Linux.

C:> loadlin c:\ vmlinuz root=/ dev/ hda2
This example loads the Linux kernel image vmlinuz, passing it the boot parameter
root=/ dev/ hda2, telling the kernel that the Linux root partition is /dev/ hda2. (If you are using
a RAM disk, see Section 4.6, "initrd: Using a RAM Disk" later in this chapter.)

If you want to use Loadlin with Windows 95/ 98, see the Loadlin User Guide and the
Loadlin+ Win95 mini-HOWTO for how to do that. Note that if your disk uses the FAT32
filesystem, the standard techniques for using Loadlin and Windows 95 won't work; if this is
the case or if you aren't sure whether you have FAT16 or FAT32, it's important to read the
mini-HOWTO before you proceed.

Loadlin can be run directly from the DOS prompt, as in the example, or it can be invoked
from CONFIG. SYS or AUTOEXEC. BAT. Like LILO, Loadlin takes both options that direct
its operation and options (also referred to as parameters) that it passes to the kernel.

There are two forms of the Loadlin syntax:
LOADLIN @params
LOADLIN [zimage_
file] [options] [boot_ params]

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 03. htm (1 of 3) [15/ 05/ 2002 18: 04: 28] 422
422 Page 423 424
Loadlin: Booting from MS-DOS (Linux in a Nutshell, 3rd Edition)
4.3.1. Using a Parameter File

In the first form of the preceding syntax, params is a DOS file that contains the options you
want Loadlin to run with. The Loadlin distribution comes with a sample parameter file,
test. par, that you can use as a basis for creating your own. Each line in a parameter file
contains one parameter. If you want to specify the name of the Linux kernel to use (the
image= parameter), it must be the first entry in the file. Comments start with a hash sign (#).
The entries in the parameter file can be overridden or appended on the command line. For
example, to override the value of vga set in the parameter file:

C:> LOADLIN @myparam vga= normal

4.3.2. Putting Parameters on the Command Line
In the second form of the preceding Loadlin syntax, zimage_ file is the name of a Linux kernel
to run, followed by a list of Loadlin options and/ or boot options. Specifying LOADLIN with
no parameters gives a help message listing the Loadlin options and some of the possible
kernel boot options. The message is long enough that you probably want to pipe the output
through a pager like more:

C:> LOADLIN | more
The Loadlin options are:
-clone
Bypasses certain checks --read the LOADLIN User Guide that comes with the Loadlin
distribution before using.

-d file
Debug mode. Like -t but sends output to file as well as to standard output.
-dskreset
Causes disks to be reset after loading but before booting Linux.
-noheap
For use by serious Linux hackers only; disables use of the setup heap.
-t

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 03. htm (2 of 3) [15/ 05/ 2002 18: 04: 28] 423
423 Page 424 425

Loadlin: Booting from MS-DOS (Linux in a Nutshell, 3rd Edition)
Test mode. Goes through the loading process but doesn't actually start Linux. Also sets
-v.

-txmode
Sets the screen to text mode (80x25) on startup.
-v
Verbose. Prints parameter and configuration information to standard output.
-wait= nn
After loading, waits nn (DOS) ticks before booting Linux.
In addition to these Loadlin options, the help message prints a number of kernel boot options
that you can specify. The boot options that it prints are only a few of the many available boot
options. See also the BootPrompt-HOWTO for a more complete list.

4.2. LILO: The Linux Loader 4.4. Dual Booting Linux and
Windows NT/ 2000

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 03. htm (3 of 3) [15/ 05/ 2002 18: 04: 28] 424
424 Page 425 426

Dual Booting Linux and Windows NT/ 2000 (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

4.4. Dual Booting Linux and Windows NT/ 2000
As we said earlier, when you run Windows NT, its boot loader expects to be the one in charge; therefore, the normal way to
dual boot Windows NT and Linux is to add Linux as an option on the NT boot menu. The information in this section also
applies to Windows 2000, which uses the NT loader.

To accomplish this, you need to provide the NT loader with a copy of the Linux boot sector. Here's how you do that on a
computer running Windows NT with an NTFS filesystem (note that Windows NT should be installed on your system
already). See the NT OS Loader+ Linux mini-HOWTO for more information and other alternatives.

You should have a Linux boot floppy available so that, if necessary, you can boot Linux before the NT boot loader has been
modified. You also should have a DOS-formatted floppy to transfer the boot sector to the Windows NT partition. If LILO is
already installed, you may need to modify /etc/ lilo. conf as described later. Otherwise, you'll either install LILO as part of the
Linux installation, or you can install it with the QuickInst script that comes with LILO. Once LILO is installed, and you have
a configuration file, you can set up the system for dual booting.

Note that the following instructions assume your Linux partition is on /dev/ hda2. If Linux is on another partition, be sure to
replace /dev/ hda2 in the following examples with the correct partition.

1. Specify the Linux root partition as your boot device. If you are editing /etc/ lilo. conf manually, your entry will look
like this:

boot=/ dev/ hda2
and will be the same as the root= entry.
2. Run the lilo command to install LILO on the Linux root partition.
3. At this point, if you need to reboot Linux, you'll have to use the boot floppy, because the NT loader hasn't been set up
yet to boot Linux.

4. From Linux, run the dd command to make a copy of the Linux boot sector:
% dd if=/ dev/ hda2 of=/ bootsect. lnx bs= 512 count= 1
This command copies one block, with a blocksize of 512 bytes, from the input file /dev/ hda2 to the output file
/bootsect. lnx. (The output filename can be whatever makes sense to you; it doesn't have to be bootsect. lnx.)

5. Copy bootsect. lnx to a DOS-formatted floppy disk:
% mount -t msdos /dev/ fd0 /mnt
% cp /bootsect. lnx /mnt
% umount /mnt

6. Reboot the system to Windows NT and copy the boot sector from the floppy disk to the hard disk. For example, using
the command line to copy the file:

C:> copy a:\ bootsect. lnx c:\ bootsect. lnx

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 04. htm (1 of 3) [15/ 05/ 2002 18: 04: 30] 425
425 Page 426 427

Dual Booting Linux and Windows NT/ 2000 (Linux in a Nutshell, 3rd Edition)
It doesn't matter where on the hard drive you put the file because you'll tell the NT loader where to find it in step 8.
7. Modify the attributes of the file boot. ini[ 5] to remove the system and read-only attributes so you can edit it:

[5] boot. ini is the Windows NT counterpart to /etc/ lilo. conf. It defines what operating systems the NT
loader can boot.

C:> attrib -s -r c:\ boot. ini
8. Edit boot. ini with a text editor to add the line:
C:\ bootsect. lnx=" Linux"
This line adds Linux to the boot menu and tells the Windows NT boot loader where to find the Linux boot sector.
You can insert the line anywhere in the [operating systems] section of the file. Its position in the file determines
where it will show up on the boot menu when you reboot your computer. Adding it at the end, for example, results in
a boot. ini file that looks something like this (the second multi( 0) entry is wrapped to fit in the margins of this page):

[boot loader]
timeout= 30
default= multi( 0) disk( 0) rdisk( 0) partition( 1)\ WINNT
[operating systems]
multi( 0) disk( 0) rdisk( 0) partition( 1)\ WINNT=" Windows NT Server Version 4.00"
multi( 0) disk( 0) rdisk( 0) partition( 1)\ WINNT=" Windows NT Server Version 4.00
[VGA mode]" /basevideo /sos
C:\ bootsect. lnx=" Linux"

If you want Linux to be the default operating system, modify the default= line to say:
default= C:\ bootsect. lnx
9. Rerun attrib to restore the system and read-only attributes:
C:> attrib +s +r c:\ boot. ini
Now you can shut down Windows NT and reboot; NT will prompt you with a menu that looks something like this:
OS Loader V4.00
Please select the operating system to start:
Windows NT Workstation Version 4.00
Windows NT Workstation Version 4.00 [VGA mode]
Linux

Select Linux, and the NT loader reads the Linux boot sector and transfers control to LILO, on the Linux partition.
If you later modify /etc/ lilo. conf or rebuild the kernel, you need to rerun the lilo command, create a new bootsect. lnx file, and
replace the version of bootsect. lnx on the Windows NT partition with the new version. That is, you need to rerun steps 2-6.

NOTE
If you have any problems or you simply want to remove LILO later, you can reverse the installation
procedure: boot to Windows NT, change the system and read-only attributes on boot. ini, reedit boot. ini to
remove the Linux entry, save the file, restore the system and read-only attributes, and remove the Linux boot
sector from the NT partition.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 04. htm (2 of 3) [15/ 05/ 2002 18: 04: 30] 426
426 Page 427 428

Dual Booting Linux and Windows NT/ 2000 (Linux in a Nutshell, 3rd Edition)
4.3. Loadlin: Booting from
MS-DOS
4.5. Boot-time Kernel
Options

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 04. htm (3 of 3) [15/ 05/ 2002 18: 04: 30] 427
427 Page 428 429

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 05. htm
Linux in a Nutshell, 3rd
Edition

4.5. Boot-time Kernel Options
The Loadlin and LILO sections of this chapter described some of the options you can specify
when you boot Linux. There are many more options that can be specified. This section
touches on the ways to pass options to the kernel and then describes some of the kinds of
parameters you might want to use. The parameters in this section affect the kernel and
therefore apply regardless of which boot loader you use.

As always with Unix systems, there are a number of choices for the boot process itself. If you
are using Loadlin, you can pass parameters to the kernel on the command line or in a file.

If LILO is your boot loader, you can add to or override the parameters specified in
/etc/ lilo. conf during the boot process as follows:

l If prompt is set in /etc/ lilo. conf, LILO always presents the boot prompt and waits for
input. At the prompt, you can choose the operating system to be booted. If you choose
Linux, you also can specify parameters.

l If prompt isn't set, when the word "LILO" appears, press Control, Shift, or Alt, and
the boot prompt appears. You also can press the Scroll Lock key before LILO is
printed and not have to wait poised over the keyboard for the right moment.

l At the boot prompt, specify the system you want to boot or press Tab to get a list of the
available choices. You then can enter the name of the image to boot. For example:

LILO boot: <press Tab>
linux test dos
boot:
linux

You also can add boot command options:
boot: linux single
l If you don't provide any input, LILO waits the amount of time specified in the delay
parameter and then boots the default operating system with the default parameters as

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 05. htm (1 of 3) [15/ 05/ 2002 18: 04: 34] 428
428 Page 429 430
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 05. htm
set in /etc/ lilo. conf.

Some of the boot parameters have been mentioned earlier. Many of the others are hardware-specific
and are too numerous to mention here. For a complete list of parameters and a
discussion of the booting process, see the BootPrompt-HOWTO. Some of the parameters not
shown earlier that you might find useful are listed next; many more are covered in the
HOWTO. Most of the following parameters are used to provide information or instructions
for the kernel, rather than to LILO.

debug
Prints all kernel messages to the console.
hd= cylinders, heads, sectors
Specifies the hard drive geometry to the kernel. Useful if Linux has trouble
recognizing the geometry of your drive, especially if it's an IDE drive with more than
1024 cylinders.

load_ ramdisk= n
Tells the kernel whether to load a RAM disk image for use during Linux installation.
Values of n are:

0
Don't try to load the image. This is the default.
1
Load the image from a floppy disk to the RAM disk.
mem= size
Specifies the amount of system memory installed. Useful if your BIOS reports memory
only up to 64 MB and your system has more memory installed. Specify as a number
with M or k (case-insensitive) appended:

mem= 128M
Because mem would have to be included on the command line for every boot, it often is
specified on a command line saved with lock or with append to be added to the parameters
passed to the kernel.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 05. htm (2 of 3) [15/ 05/ 2002 18: 04: 34] 429
429 Page 430 431

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 05. htm
noinitrd

When set, disables the two-stage boot and preserves the contents of /dev/ initrd so the
data is available after the kernel has booted. /dev/ initrd can be read only once, and then
its contents are returned to the system.

number
Starts Linux at the runlevel specified by number. A runlevel is an operating state that
the system can be booted to, such as a multiuser system or a system configuration
running the X Window System. A runlevel is generally one of the numbers from 1 to
6; the default usually is 3. The runlevels and their corresponding states are defined in
the file /etc/ inittab. See the manpage for /etc/ inittab for more information.

ro
Mounts the root filesystem read-only. Used for doing system maintenance, such as
checking the filesystem integrity, when you don't want anything written to the
filesystem.

rw
Mounts the root filesystem read-write. If neither ro nor rw is specified, the default
value (usually rw) stored in the kernel image is used.

single
Starts Linux in single-user mode. This option is used for system administration and
recovery. It gives you a root prompt as soon as the system boots, with minimal
initialization. No other logins are allowed.

4.4. Dual Booting Linux and
Windows NT/ 2000
4.6. initrd: Using a RAM
Disk

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 05. htm (3 of 3) [15/ 05/ 2002 18: 04: 34] 430
430 Page 431 432

initrd: Using a RAM Disk (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

4.6. initrd: Using a RAM Disk
Modern Linux distributions use a modular kernel, which allows modules to be added without requiring that the kernel be
rebuilt. If your root filesystem is on a device whose driver is a module, as is frequently true of SCSI disks, you can use the
initrd facility, which provides a two-stage boot process, to first set up a temporary root filesystem in a RAM disk containing
the modules you need to add (e. g., the SCSI driver) and then load the modules and mount the real root filesystem. The RAM
disk containing the temporary filesystem is the special device file /dev/ initrd.

Before you can use initrd, both RAM disk support (CONFIG_ BLK_ DEV_ RAM= y) and initial RAM disk support
(CONFIG_ BLK_ DEV_ INITRD= y) must be compiled into the Linux kernel. Then you need to prepare the normal root
filesystem and create the RAM disk image. Your Linux distribution may have utilities to do some of the setup for you; for
example, the Red Hat distribution comes with the mkinitrd command, which builds the initrd image. For detailed
information, see the initrd manpage and the file initrd. txt (the path may vary but is usually something like
/usr/ src/ linux/ Documentation/ initrd. txt).

Once your Linux system has been set up for initrd, you can do one of the following, depending on which boot loader you
are using:

l If LILO is your boot loader, add the initrd option to the appropriate image section:

image = /vmlinuz
initrd = /boot/ initrd # The file to load as the contents of /dev/ initrd
...

Run the /sbin/ lilo command, and you can reboot with initrd.
l If you are using Loadlin, add the initrd option to the command line:

loadlin c:\ linux\ vmlinuz initrd= c:\ linux\ initrd

4.5. Boot-time Kernel
Options
5. Red Hat and Debian
Package Managers

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch04_ 06. htm [15/ 05/ 2002 18: 04: 40] 431
431 Page 432 433

Red Hat and Debian Package Managers (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

Chapter 5. Red Hat and Debian Package
Managers
Contents:
The Red Hat Package Manager
The Debian Package Manager

This chapter describes the two major Linux packaging systems, the Red Hat Package Manager (RPM) and the
Debian GNU/ Linux Package Manager.

When you want to install applications on your Linux system, most often you'll find a binary or a source package
containing the application you want, instead of (or in addition to) a .tar. gz file. A package is a file containing the
files necessary to install an application. But note that while the package contains the files you need for installation,
the application might require the presence of other files or packages that are not included, such as particular
libraries (and even specific versions of the libraries), in order to be able to run. Such requirements are known as
dependencies.

Package management systems offer many benefits. As a user, you may find you want to query the package
database to find out what packages are installed on the system and their versions. As a system administrator, you
need tools to install and manage the packages on your system. And, if you are also a developer, you need to know
how to build a package for distribution.

Among other things, package managers:
l Provide tools for installing, updating, removing, and managing the software on your system.

l Let you install new or upgraded software directly across a network.
l Tell you what software package a particular file belongs to or what files a package contains.
l Maintain a database of packages on the system and their state, so you can find out what packages or
versions are installed on your system.

l Provide dependency checking, so you don't mess up your system with incompatible software.

l Provide PGP, MD5, or other signature verification tools.
l Provide tools for building packages.

Any user can list or query packages. However, installing, upgrading, or removing packages generally requires
superuser privileges. This is because the packages normally are installed in systemwide directories that are

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 01. htm (1 of 14) [15/ 05/ 2002 18: 04: 46] 432
432 Page 433 434
Red Hat and Debian Package Managers (Linux in a Nutshell, 3rd Edition)
writable only by root. Sometimes you can specify an alternate directory, to install, for example, a package into
your home directory or into a project directory where you have write permission.

Both RPM and the Debian Package Manager back up old files before installing an updated package. Not only does
this let you go back if there is a problem, but also if you've made changes (to configuration files, for example),
they aren't completely lost.

5.1. The Red Hat Package Manager
The Red Hat Package Manager (RPM) is a freely available packaging system for software distribution and
installation. In addition to Red Hat and Red Hat-based distributions, both SuSE and Caldera are among the Linux
distributions that use RPM.

Using RPM is straightforward. A single command, rpm, has options to perform all the package functions. For
example, to find out if the Emacs editor is installed on your system, you could say:

% rpm -q emacs
emacs-20.4-4

In addition, the GNOME-RPM program provides an X-based graphical frontend to RPM (that can be run even if
you are not running GNOME). This section describes the rpm command and then the gnorpm command that runs
GNOME-RPM.

5.1.1. The rpm Command
RPM packages are built, installed, and queried with the rpm command. RPM package names usually end with a
.rpm extension. rpm has a set of modes, each with its own options. The format of the rpm command is:

rpm [options] [packages]
With a few exceptions, as noted in the lists of options that follow, the first option specifies the rpm mode (e. g.,
install, query, update, build, etc.), and any remaining options affect that mode.

In the option descriptions that refer to packages, you'll sometimes see them specified as package-name and
sometimes as package-file. The package name is the name of the program or application, such as gif2png. The
package file is the name of the RPM file: gif2png-2.2.5-1. i386. rpm.

RPM provides a configuration file for specifying frequently used options. The system configuration file is usually
/etc/ rpmrc, and users can set up their own $HOME/. rpmrc file. You can use the --showrc option to show the
values RPM will use for all the options that may be set in an rpmrc file:

rpm --showrc
The rpm command includes FTP and HTTP clients, so you can specify an ftp:// or http:// URL to install or query
a package across the Internet. You can use an FTP or HTTP URL wherever package-file is specified in the
commands presented here.

Any user can query the RPM database. Most of the other functions require superuser privileges.

5.1.1.1. General options
The following options can be used with all modes:
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 01. htm (2 of 14) [15/ 05/ 2002 18: 04: 46] 433
433 Page 434 435
Red Hat and Debian Package Managers (Linux in a Nutshell, 3rd Edition)
--dbpath path
Use path as the path to the RPM database.
--ftpport port
Use port as the FTP port.
--ftpproxy host
Use host as a proxy server for all transfers. Specified if you are FTPing through a firewall system that uses
a proxy.

--help
Print a long usage message (running rpm with no options gives a shorter usage message).
--justdb
Update only the database; don't change any files.
--pipe command
Pipe the rpm output to command.
--quiet
Display only error messages.
--rcfile filename
Use filename as the configuration file instead of the system configuration file /etc/ rpmrc or
$HOME/. rpmrc.

--root dir
Perform all operations within directory dir.
--version
Print the version number of rpm.
-vv
Print debugging information.

5.1.1.2. Install, upgrade, and freshen options
Install or upgrade an RPM package. The syntax of the install command is:
rpm -i [install-options] package_ file ...
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 01. htm (3 of 14) [15/ 05/ 2002 18: 04: 46] 434
434 Page 435 436
Red Hat and Debian Package Managers (Linux in a Nutshell, 3rd Edition)
rpm --install [install-options] package_ file ...

To install a new version of a package and remove an existing version at the same time, use the upgrade command
instead:

rpm -U [install-options] package_ file ...
rpm --upgrade [install-options] package_ file ...

One feature of -U is that if the package doesn't already exist on the system, it acts like -i and installs it. To prevent
that behavior, you can freshen a package instead; in that case, rpm upgrades the package only if an earlier version
is already installed. The freshen syntax is:

rpm -F [install-options] package_ file ...
rpm --freshen [install-options] package_ file ...

Installation and upgrade options are:
--allfiles
Install or upgrade all files.
--badreloc
Used with --relocate to force relocation even if the package is not relocatable.
--excludedocs
Don't install any documentation files.
--excludepath path
Don't install any file whose filename begins with path.
--force
Force the installation. Equivalent to using --replacepkgs, --replacefiles, and --oldpackage.
-h, --hash
Print 50 hash marks as the package archive is unpacked. Use with --version for a nicer display.
--ignorearch
Install even if the binary package is intended for a different architecture.
--ignoreos
Install binary package even if the operating systems don't match.
--ignoresize
Don't check disk space availability before installing.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 01. htm (4 of 14) [15/ 05/ 2002 18: 04: 46] 435
435 Page 436 437
Red Hat and Debian Package Managers (Linux in a Nutshell, 3rd Edition)
--includedocs
Install documentation files. This is needed only if excludedocs: 1 is specified in an rpmrc file.
--nodeps
Don't check whether this package depends on the presence of other packages.
--noorder
Don't reorder packages to satisfy dependencies before installing.
--noscripts
Don't execute any preinstall or postinstall scripts.
--notriggers
Don't execute any scripts triggered by package installation.
--oldpackage
Allow an upgrade to replace a newer package with an older one.
--percent
Print percent-completion messages as files are unpacked.
--prefix path
Set the installation prefix to path for relocatable packages.
--replacefiles
Install the packages even if they replace files from other installed packages.
--replacepkgs
Install the packages even if some of them are already installed.
--test
Go through the installation to see what it would do, but don't actually install the package.

5.1.1.3. Query options
The syntax for the query command is:
rpm -q[ information-options] [package-options]
rpm --query[ information-options] [package-options]

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 01. htm (5 of 14) [15/ 05/ 2002 18: 04: 46] 436
436 Page 437 438

Red Hat and Debian Package Managers (Linux in a Nutshell, 3rd Edition)
There are two subsets of query options: package selection options that determine what packages to query and
information selection options that determine what information to provide.

5.1.1.3.1. Package selection options
package_ name
Query the installed package package_ name.
-a, --all
Query all installed packages.
-f file, --file file
Find out what package owns file.
-g group, --group group
Find out what packages have group group.
-p package_ file
Query the uninstalled package package_ file.
--querybynumber num
Query the numth database entry. Primarily useful for debugging.
-qf, --queryformat num
Specify the format for displaying the query output, using tags to represent different types of data (e. g.,
NAME, FILENAME, DISTRIBUTION). The format specification is a variation of the standard printf
formatting. (Use --querytags in Section 5.1.1.8, "Miscellaneous options" to view a list of available tags.

--specfile specfile

Query specfile as if it were a package.
--triggeredby pkg

List packages that trigger installation of package pkg.
--whatrequires capability

List packages that require the given capability to function.
--whatprovides capability

List packages that provide the given capability.
5.1.1.3.2. Information selection options
-c, --configfiles
List configuration files in the package.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 01. htm (6 of 14) [15/ 05/ 2002 18: 04: 46] 437
437 Page 438 439
Red Hat and Debian Package Managers (Linux in a Nutshell, 3rd Edition)
--changelog
Display the log of change information for the package.
-d, --docfiles
List documentation files in the package.
--dump
Dump information for each file in the package. This option must be used with at least one of -l, -c, or -d.
The output includes the following information in this order:

path size mtime md5sum mode owner group isconfig isdoc rdev symlink
--filesbypkg
List all files in each package.
-i
Display package information, including the name, version, and description.
-l, --list
List all files in the package.
--last
List packages by install time, with the latest packages listed first.
--provides
List the capabilities this package provides.
-R, --requires
List any packages this package depends on.
-s, --state
List each file in the package and its state. The possible states are normal, not installed, or replaced.
--scripts
List any package-specific shell scripts used during installation and uninstallation of the package.

5.1.1.4. Uninstall options
The syntax for the uninstall command is:

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 01. htm (7 of 14) [15/ 05/ 2002 18: 04: 46] 438
438 Page 439 440
Red Hat and Debian Package Managers (Linux in a Nutshell, 3rd Edition)
rpm -e package_ name
rpm --erase package_ name

The uninstall options are:
--allmatches
Remove all versions of the package. Only one package should be specified; otherwise, an error results.
--nodeps
Don't check dependencies before uninstalling the package.
--noscripts
Don't execute any preuninstall or postuninstall scripts.
--notriggers
Don't execute any scripts triggered by the removal of this package.
--test
Don't really uninstall anything; just go through the motions.

5.1.1.5. Verify options
The syntax for the verify command is:
rpm -V|-y| --verify[ package-selection-options]
Verify mode compares information about the installed files in a package with information about the files that
came in the original package and displays any discrepancies. The information compared includes the size, MD5
sum, permissions, type, owner, and group of each file. Uninstalled files are ignored.

The package selection options include those available for query mode, as well as the following:
--nofiles
Ignore missing files.
--nomd5
Ignore MD5 checksum errors.
--nopgp
Ignore PGP checking errors.
The output is formatted as an eight-character string, possibly followed by a "c" to indicate a configuration file, and
then the filename. Each of the eight characters in the string represents the result of comparing one file attribute to
the value of that attribute from the RPM database. A period (.) indicates that the file passed that test. The

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 01. htm (8 of 14) [15/ 05/ 2002 18: 04: 46] 439
439 Page 440 441

Red Hat and Debian Package Managers (Linux in a Nutshell, 3rd Edition)
following characters indicate failure of the corresponding test:

5 MD5 sum
D Device
G Group
L Symlink
M Mode (includes permissions and file type)
S File size
T Mtime
U User

5.1.1.6. Database rebuild options
The syntax of the command to rebuild the RPM database is:
rpm --rebuilddb [options]
You also can build a new database:
rpm --initdb [options]
The options available with the database rebuild mode are the --dbpath and --root options described earlier under
Section 5.1.1.1, "General options".

5.1.1.7. Signature check options
RPM packages may have a PGP signature built into them. PGP configuration information is read from /etc/ rpmrc.
The syntax of the signature-check mode is:

rpm --checksig package_ file...
rpm -K package_ file...

The signature-checking options are:
--nogpg
Don't check any GPG signatures.
--nomd5
Don't check any MD5 signatures.
--nopgp
Don't check any PGP signatures.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 01. htm (9 of 14) [15/ 05/ 2002 18: 04: 46] 440
440 Page 441 442
Red Hat and Debian Package Managers (Linux in a Nutshell, 3rd Edition)
Two other options let you add signatures to packages:

--addsign binary-pkgfile...
Generate and append new signatures to those that already exist in the specified binary packages.
--resign binary-pkgfile...
Generate and insert new signatures in the specified binary packages, removing any existing signatures.

5.1.1.8. Miscellaneous options
Several additional rpm options are available:
--querytags
Print the tags available for use with the --queryformat option in query mode.
--setgids packages
Set file owner and group of the specified packages to those in the database.
--setperms packages
Set file permissions of the specified packages to those in the database.
--showrc
Show the values rpm will use for all options that can be set in an .rpmrc file.

5.1.1.9. FTP/ HTTP options
The following options are available for use with ftp:// and http:// URLs in install, update, and query modes:
--ftpport port
Use port for making an FTP connection on the proxy FTP server instead of the default port. Same as
specifying the macro _ftpport.

--ftpproxy host
Use host as the proxy server for FTP transfers through a firewall that uses a proxy. Same as specifying the
macro _ftpproxy.

--httpport port
Use port for making an HTTP connection on the proxy HTTP server instead of the default port. Same as
specifying the macro _httpport.

--httpproxy host

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 01. htm (10 of 14) [15/ 05/ 2002 18: 04: 46] 441
441 Page 442 443
Red Hat and Debian Package Managers (Linux in a Nutshell, 3rd Edition)
Use host as a proxy server for HTTP transfers. Same as specifying the macro _httpproxy.

5.1.1.10. Build options
The syntax for the build options is:
rpm -[ b| t] step [build-options] spec-file ...
Specify -b to build a package directly from a spec file or -t to open a tarred gzipped file and use its spec file. Both
forms take the following single-character step arguments:

p
Perform the prep stage, unpacking source files and applying patches.
l
Do a list check, expanding macros in the files section of the spec file and verifying that each file exists.
c
Perform the build stage. Done after the prep stage; generally equivalent to doing a make.
i
Perform the install stage. Done after the prep and build stages; generally equivalent to doing a make
install.

b
Build a binary package. Done after prep, build, and install.
s
Build a source package. Done after prep, build, and install.
a
Build both binary and source packages. Done after prep, build, and install.
The following additional options can be used when building an rpm file:
--buildarch arch
--buildos os

For use with pre-3.0 versions of RPM. Build the package for architecture arch or the operating system os.
Replaced in 3.0 with --target.

--buildroot dir
Override the BuildRoot tag with dir when building the package.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 01. htm (11 of 14) [15/ 05/ 2002 18: 04: 46] 442
442 Page 443 444
Red Hat and Debian Package Managers (Linux in a Nutshell, 3rd Edition)
--clean

Clean up (remove) the build files after the package has been made.
--rmsource
Remove the source files and the spec file when the build is done. Can be used as a standalone option with
rpm to clean up files separately from creating the packages.

--short-circuit
Can be used with -bc and -bi to skip previous stages.
--sign
Add a PGP signature to the package.
--target platform
When building the package, set the macros _target, _target_ arch, and _target_ os to the value indicated
by platform.

--test
Go through the motions, but don't execute any build stages. Used for testing spec files.
--timecheck
Set the timecheck age (the maximum age in seconds of a file being packaged). Set to 0 to disable.
Two other options can be used standalone with rpm to recompile or rebuild a package:
--rebuild source-pkgfile...
Like --recompile, but also build a new binary package. Remove the build directory, the source files, and
the spec file once the build is complete.

--recompile source-pkgfile...
Install the named source package, and prep, compile, and install the package.

5.1.1.11. RPM examples
Query the RPM database to find Emacs-related packages:
% rpm -q -a | grep emacs
Query an uninstalled package, printing information about the package, and list the files it contains:
% rpm -qpil ~/ downloads/ bash2-doc-2.03-8. i386. rpm
Install a package (assumes superuser privileges):

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 01. htm (12 of 14) [15/ 05/ 2002 18: 04: 46] 443
443 Page 444 445
Red Hat and Debian Package Managers (Linux in a Nutshell, 3rd Edition)
% rpm -i sudo-1.5.3-6. i386. rpm
5.1.2. GNOME-RPM
GNOME-RPM is a graphical user frontend to rpm that runs under X. You can run gnorpm even if you are not
running GNOME. When you run gnorpm, it opens a window that lets you manage your rpm packages via a
graphical interface. The format of the gnorpm command is:

gnorpm [options]

5.1.2.1. gnorpm options
The gnorpm options are:
--geometry= geom
Specify the geometry of the main window in standard X geometry format (i. e., w h+ x+ y).
-i pkgfiles, --install pkgfiles
Install the specified packages.
-p pkgs, --packages pkgs
The packages are in files, not in the rpm database (i. e., they haven't been installed yet).
-q pkgs, --query pkgs
Display a query window for the specified installed packages.
-qp pkgfiles, --query --packages pkgfiles
Display a query window for the specified package files. This is the same as specifying the -q and -p
options.

-U pkgfiles, --upgrade pkgfiles
Upgrade the specified packages.
-K pkgfiles, --checksig pkgfiles
Check the signatures on the specified packages.
-y pkgs, --verify pkgs
Verify the specified packages.
-?, --help
Display a help message and exit.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 01. htm (13 of 14) [15/ 05/ 2002 18: 04: 46] 444
444 Page 445 446

Red Hat and Debian Package Managers (Linux in a Nutshell, 3rd Edition)
--root= dir

Specify the filesystem root to use.
--usage
Display a brief usage message and exit.

5.1.2.2. The GNOME-RPM window
The GNOME-RPM main window has five parts. At the top is a menu bar with three buttons:
Packages
Menu options are Query, Uninstall, and Verify.
Operations
Menu options are Find, Web find, Install, and Preferences.
Help
Provides online help for GNOME-RPM.
Below the menu bar is a toolbar, with buttons to Install, Unselect, Uninstall, Query, Verify, Find, and Web find.
At the very bottom of the window is a status bar.

The rest of the window is the main panel. On the left is the package panel, which displays package folders in a
tree structure. Clicking on a folder selects it; double-click to display the contents of the folder (i. e., the packages in
that folder) on the righthand panel. Clicking on a package selects it; you then can use the menus and the toolbar
buttons to operate on the package. You can select several packages at the same time and operate on them as a
group. Right-clicking on a package icon selects the package if it isn't already and presents a menu with Query,
Uninstall, and Verify options.

See the GNOME-RPM documentation and online help for full details.

4.6. initrd: Using a RAM
Disk
5.2. The Debian Package
Manager

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 01. htm (14 of 14) [15/ 05/ 2002 18: 04: 46] 445
445 Page 446 447

The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

5.2. The Debian Package Manager
Debian GNU/ Linux provides several package management tools, primarily intended to facilitate the building, installation,
and management of binary packages. Debian package names generally end in .deb. The Debian package management tools
include:

dpkg
Until recently, the most important of the Debian packaging tools and still the primary package management program.
Used to install or uninstall packages or as a frontend to dpkg-deb.

dpkg-deb
Lower-level packaging tool. Used to create and manage the Debian package archives. Accepts and executes
commands from dpkg or can be called directly.

dselect
An interactive frontend to dpkg.
apt-get
The currently available piece of the Advanced Package Tool (APT), which is still being developed and is intended to
be a modern, user-friendly package management tool. Can be run from the command line or selected as a method
from dselect. One of the features of apt-get is that you can use it to get and install packages across the Internet by
specifying an ftp:// or http:// URL. Another feature is that you can use it to upgrade all packages currently installed on
your system in a single operation.

5.2.1. Files
Some important files used by the Debian package management tools are:
control
Comes with each package; documents dependencies; contains the name and version of the package, a description,
maintainer, installed size, and so on.

conffiles
Comes with each package and contains a list of the configuration files associated with the package.
preinst, postinst, prerm, postrm
Scripts that can be included in a package to be run before installation, after installation, before removal, or after
removal of the package.

/var/ lib/ dpkg/ available

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (1 of 16) [15/ 05/ 2002 18: 04: 52] 446
446 Page 447 448
The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
Contains information about packages available on the system.

/var/ lib/ dpkg/ status
Contains information about the status of packages available on the system.
/etc/ apt/ sources. list
A list for APT of package sources, used to locate packages. The sources are listed one per line, in order of preference.
/etc/ apt/ apt. conf
The main APT configuration file.

5.2.2. Package States and Selection States
The possible states that a package can be in are:
config-files
Only the configuration files for the package are present on the system.
half-configured
The package is unpacked and configuration was started but not completed.
half-installed
Installation was started but not completed.
installed
The package is unpacked and configured.
not-installed
The package is not installed.
unpacked
The package is unpacked but not configured.
The possible package selection states are:
deinstall
The package has been selected for deinstallation (i. e., for removal of everything but configuration files).
install
The package has been selected for installation.
purge
The package has been selected to be purged (i. e., for removal of everything including the configuration files).

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (2 of 16) [15/ 05/ 2002 18: 04: 52] 447
447 Page 448 449
The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
5.2.3. Package Flags

There are two possible package flags that can be set for a package. They are:
hold
The package is not to be handled by dpkg, unless forced with the --force-hold option.
reinst-required
The package is broken and needs to be reinstalled. Such a package cannot be removed, unless forced with the --force-reinstreq
option.

5.2.4. Scripts
In addition to the commands described in the next subsection, several shell and Perl scripts are included with the package
manager for use in building packages:

dpkg-buildpackage
Help automate package building. Shell script.
dpkg-distaddfile
Add an entry for a file to debian/ files. Perl script.
dpkg-genchanges
Generate an upload control file from the information in an unpacked, built, source tree and the files it has generated.
Perl script.

dpkg-gencontrol
Read information from an unpacked source tree and display a binary package control file on standard output. Perl
script.

dpkg-name
Rename Debian packages to their full package names. Shell script.
dpkg-parsechangelog
Read and parse the changelog from an unpacked source tree and write the information to standard output in machine-readable
form. Perl script.

dpkg-scanpackages
Create a Packages file from a tree of binary packages. The Packages file is used by dselect to provide a list of
packages available for installation. Perl script.

dpkg-shlibdeps
Calculate shared library dependencies for named executables. Perl script.
dpkg-source

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (3 of 16) [15/ 05/ 2002 18: 04: 52] 448
448 Page 449 450
The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
Pack and unpack Debian source archives. Perl script.

5.2.5. Debian Package Manager Command Summary

apt-cdrom apt-cdrom [options] command
Add a new CD-ROM to APT's list of available sources. Currently, the only command is add, which is required
(except with the --help option). The database of CD-ROM IDs that APT maintains is /var/ state/ apt/ cdroms. list.

Options
Options can be specified on the command line or they may be set in the configuration file. Boolean options set in
the configuration file can be overridden on the command line in a number of different ways, a couple of which
are --no-opt and -opt= no, where opt is the single-character or full name of the option.

-a, --thorough
Do a thorough package scan. May be needed with some old Debian CD-ROMs.
-c, --config-file
Specify a configuration file to be read after the default configuration file.
-d, --cdrom
Specify the CD-ROM mount point, which must be listed in /etc/ fstab. The configuration option is
Acquire:: cdrom:: mount.

-f, --fast
Do a fast copy, assuming the files are valid and don't all need checking. Specify this only if this disk has
been run before without error. The configuration option is APT:: CDROM:: Fast.

-h, --help
Print help message and exit.
-m, --no-mount
Don't mount or unmount the mount point. The configuration option is APT:: CDROM:: NoMount.
-n, --just-print, --recon, --no-act
Check everything, but don't actually make any changes. The configuration option is
APT:: CDROM:: NoAct.

-o, --option
Set a configuration option. Syntax is -o group:: tool= option (e. g., APT:: CDROM= Fast).
-r, --rename
Prompt for a new label and rename the disk to the new value. The configuration option is
APT:: CDROM:: Rename.

-v, --version

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (4 of 16) [15/ 05/ 2002 18: 04: 52] 449
449 Page 450 451
The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
Print the version information and exit.

apt-get apt-get [options] command [package...]
A command-line tool for handling packages. Will eventually be a backend to APT.
Commands
autoclean
Like clean, but remove only package files that can no longer be downloaded.
clean
Clear the local repository of retrieved package files.
check
Update the package cache and check for broken packages.
dist-upgrade
Like upgrade but also handle dependencies intelligently.
dselect-upgrade
Used together with dselect. Track the changes made by dselect to the Status field of available packages
and take actions necessary to realize that status.

install package...
Install one or more packages. Specify the package name, not the full filename. Other required packages
also are retrieved and installed. With a hyphen appended to the package name, the package is removed if
it is already installed.

remove package...
Remove one or more packages. Specify the package name, not the full filename. With a plus sign
appended to the name, the package is installed.

source package...
Find source packages and download them into the current directory. If specified with --compile, the
source packages are compiled into binary packages. With --download-only, the source packages are not
unpacked.

update
Resynchronize the package overview files from their sources. Must be done before an upgrade or dist-upgrade.

upgrade
Install the latest versions of all packages currently installed. Run update first.
Options
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (5 of 16) [15/ 05/ 2002 18: 04: 52] 450
450 Page 451 452
The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
Options can be specified on the command line or they may be set in the configuration file. Boolean options set in
the configuration file can be overridden on the command line in one of several ways, a couple of which are --no-opt
and -opt= no, where opt is the single-character or full name of the option.

-b, --compile, --build
Compile source packages after download.
-c, --config-file
Specify a configuration file to read after the default.
-d, --download-only
Retrieve package files, but don't unpack or install them. The configuration option is APT:: Get:: Download-only.

-f, --fix-broken
Try to fix a system with broken dependencies. Can be used alone or with a command. The configuration
option is APT:: Get:: Fix-Broken.

--force-yes
Force yes. Causes APT to continue without prompting if it is doing something that could damage your
system. Use with great caution and only if absolutely necessary. The configuration option is
APT:: Get:: force-yes.

-h, --help
Display a help message and exit.
--ignore-hold
Ignore a hold placed on a package. Use with dist-upgrade to override many undesired holds. The
configuration option is APT:: Get:: Ignore-Hold.

-m, --ignore-missing, --fix-missing
Ignore missing or corrupted packages or packages that cannot be retrieved. Can cause problems when
used with -f.

--no-download
Disable package downloading; use with --ignore-missing to force APT to use only the packages that
have already been downloaded.

--no-upgrade
Do not upgrade packages. Use with install to prevent upgrade of packages that are already installed. The
configuration option is APT:: Get:: no-upgrade.

-o, --option
Set a configuration option. Syntax is -o group:: tool= option (e. g., APT:: Get= force-yes).

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (6 of 16) [15/ 05/ 2002 18: 04: 52] 451
451 Page 452 453
The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
--print-uris

Print URIs of files instead of fetching them. Print path, destination filename, size, and expected MD5
hash. The configuration option is APT:: Get:: Print-URIs.

-q, --quiet
Quiet. Omit progress indicators, produce only logging output. Add a q to make even quieter.
-s, --simulate, --just-print, --dry-run, --recon, --no-act
Go through the motions, but don't actually make any changes to the system. The configuration option is
APT:: Get:: Simulate.

-u, --show-upgraded
Print a list of all packages to be upgraded. The configuration option is APT:: Get:: Show-Upgraded.
-v, --version
Display the version and exit.
-y, --yes, --assume-yes
Automatically reply "yes" to prompts and run noninteractively. Abort if there is an error. The
configuration option is APT:: Get:: Assume-Yes.

dpkg dpkg [options] action
A tool for installing, managing, and building packages. Serves as a frontend to dpkg-deb.
dpkg actions
These actions are carried out by dpkg itself:
-i pkgfile, --install pkgfile
Install the package specified as pkgfile. With -R or --recursive, pkgfile must be a directory.
--unpack pkgfile
Unpack the package, but don't configure it. With -R or --recursive, pkgfile must be a directory.
--configure [packages|-a|--pending]
Reconfigure one or more unpacked packages. If -a or --pending is given instead of packages, configure
all packages that are unpacked but not configured.

-r, --remove [packages|-a|--pending]
--purge [packages|-a|--pending]

Remove or purge one or more installed packages. Removal gets rid of everything except the
configuration files listed in debian/ conffiles; purging also removes the configuration files. If -a or --
pending
is given instead of packages, dpkg removes or purges all packages that are unpacked and
marked (in /var/ lib/ dpkg/ status) for removing or purging.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (7 of 16) [15/ 05/ 2002 18: 04: 52] 452
452 Page 453 454
The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
--print-avail package

Print the details about package from /var/ lib/ dpkg/ available.
--update-avail pkgs-file
--merge-avail pkgs-file

Update the record of available files kept in /var/ lib/ dpkg/ available. This information is used by dpkg and
dselect to determine what packages are available. Update will replace the information with the contents
of the pkgs-file, distributed as Packages. Merge combines the information from Packages with the
existing information.

-A pkgfile, --record-avail pkgfile
Update the record of available files kept in /var/ lib/ dpkg/ available with information from pkgfile. This
information is used by dpkg and dselect to determine what packages are available. With -R or --
recursive,
pkgfile must be a directory.

--forget-old-unavail
Forget about uninstalled unavailable packages.
--clear-avail
Remove existing information about what packages are available.
-l, --list [pkg-name-pattern]
List all packages whose names match the specified pattern. With no pattern, list all packages in
/var/ lib/ dpkg/ available. The pattern can include standard shell wildcard characters and may have to be
quoted to prevent the shell from doing filename expansion.

-s packages, --status packages
Report the status of one or more packages by displaying the entry in the status database
/var/ lib/ dpkg/ status.

-C, --audit
Search for partially installed packages and suggest how to get them working.
--get-selections [pattern]
Get list of package selections and write to standard output. With pattern specified, write selections that
match the pattern.

--set-selections
Set package selections based on input file read from standard input.
--yet-to-unpack
Search for uninstalled packages that have been selected for installation.
-L packages, --listfiles packages
List installed files that came from the specified package or packages.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (8 of 16) [15/ 05/ 2002 18: 04: 52] 453
453 Page 454 455
The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
-S filename-pattern, --search filename-pattern
Search installed packages for a filename. The pattern can include standard shell wildcard characters and
may have to be quoted to prevent the shell from doing filename expansion.

--print-architecture
Print target architecture.
--print-gnu-build-architecture
Print the GNU version of the target architecture.
--print-installation-architecture
Print host architecture for installation.
--compare-versions ver1 op ver2
Perform a binary comparison of two version numbers. The operators lt le eq ne ge gt treat a
missing version as earlier. The operators lt-nl le-nl ge-nl gt-nl treat a missing version as
later (where nl is "not later"). There is a third set of operators (< << <= = >= >> >) that is
provided for compatibility with control-file syntax. dpkg returns zero for success (i. e., the condition is
satisfied) and nonzero otherwise.

--help
Print help message and exit.
--force-help
Print help message about the --force-list options and exit.
-Dh, --debug= help
Print debugging help message and exit.
--license
Print dpkg license information and exit. Accepts the spelling --licence in addition to --license.
--version
Print dpkg version information and exit.
dpkg-deb actions
The following actions can be specified for dpkg and are passed to dpkg-deb for execution. Also see dpkg-deb.
-b
dir [archive], --build dir [archive]
Build a package.
-c archive, --contents archive
List the contents of a package.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (9 of 16) [15/ 05/ 2002 18: 04: 52] 454
454 Page 455 456
The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
-e, --control archive dir
Extract control information from a package.
-f archive [control-fields], --field archive [control-fields]
Display the control field or fields of a package.
-I archive [control-files], --info archive [control-files]
Show information about a package.
--fsys-tarfile archive
Display the filesystem tar-file contained by a package.
-x archive dir, --extract archive dir
Extract the files from a package.
-X archive dir, --vextract archive dir
Extract and display the filenames from a package.
Options
--abort-after=
num
Abort processing after num errors. Default is 50.
-B, --auto-deconfigure
When a package is removed, automatically deconfigure any other package that depended on it.
-Doctal, --debug= octal
Turn on debugging, with the octal value specifying the desired level of debugging information. Use -Dh
or --debug= help to display the possible values. You can OR the values to get the desired output.

-E, --skip-same-version
Don't install the package if this version is already installed.
--force-list, --no-force-list, --refuse-list
Force or refuse to force an operation. list is specified as a comma-separated item of options. With --force,
a warning is printed, but processing continues. --refuse and --no-force cause processing to stop with an
error. The force/ refuse options are:

architecture
Process even if intended for a different architecture.
auto-select
Select or deselect packages to install or remove them. Forced by default.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (10 of 16) [15/ 05/ 2002 18: 04: 52] 455
455 Page 456 457
The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
bad-path
Some programs are missing from the path.
configure-any
Configure any unconfigured package that the package depends on.
conflicts
Permit installation of conflicting packages. Can result in problems from files being overwritten.
depends
Turn dependency problems into warnings.
depends-version
Warn of version problems when checking dependencies, but otherwise ignore.
downgrade
Install even if a newer version is already installed. Forced by default.
hold
Process packages even if they are marked to be held.
not-root
Try to install or remove even when not logged on as root.
overwrite
Overwrite a file from one package with the same file from another package. Forced by default.
overwrite-dir
Overwrite one package's directory with a file from another package.
overwrite-diverted
Overwrite a diverted file with an undiverted version.
remove-essential
Remove an essential package. Note that this can cause your system to stop working.
remove-reinstreq
Remove packages that are broken and are marked to require reinstallation.
-G
Don't install a package if a newer version is already installed. The same as --refuse-downgrade.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (11 of 16) [15/ 05/ 2002 18: 04: 52] 456
456 Page 457 458
The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
--ignore-depends= pkglist

Dependency problems result only in a warning for the packages in pkglist.
--largemem
Specify that dpkg can use as much memory as it needs.
--new
New binary package format. This is a dpkg-deb option.
--no-act
Go through the motions, but don't actually write any changes. Used for testing. Be sure to specify before
the action; otherwise changes might be written.

--nocheck
Ignore the contents of the control file when building a package. This is a dpkg-deb option.
-O, --selected-only
Process only packages that are marked as selected for installation.
--old
Old binary package format. This is a dpkg-deb option.
-R, --recursive
Recursively handle .deb files found in the directories specified with -A, --install, --unpack, and --avail
and their subdirectories.

-R, --root= dir, --admindir= dir, --instdir= dir
Change default directories. admindir contains administrative files with status and other information
about packages; it defaults to /var/ lib/ dpkg. instdir is the directory in which packages are installed and
defaults to /. Changing the root directory to dir automatically changes instdir to dir and admindir to
/dir/ var/ lib/ dpkg.

--smallmem
Specify that dpkg should try to preserve memory.

dpkg-deb dpkg-deb action [options]
Backend command for building and managing Debian package archives. Also see dpkg; you'll often want to use
dpkg to pass commands through to dpkg-deb, rather than call dpkg-deb directly.

Actions
-b
dir [archive], --build dir [archive]
Create an archive from the filesystem tree starting with directory dir. The directory must have a DEBIAN
subdirectory containing the control file and any other control information. If archive is specified and is a

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (12 of 16) [15/ 05/ 2002 18: 04: 52] 457
457 Page 458 459
The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
filename, the package is written to that file; if no archive is specified, the package is written to dir. deb. If
the archive already exists, it is replaced. If archive is the name of a directory, the dpkg-deb looks in the
control file for the information it needs to generate the package name. (Note that for this reason, you
cannot use --no-check with a directory name.)

-c archive, --contents archive
List the filesystem-tree portion of archive.
-e, --control archive dir
Extract control information from archive into the directory dir, which is created if it doesn't exist.
-f archive [control-fields], --field archive [control-fields]
Extract information about one or more fields in the control file for archive. If no fields are provided, print
the entire control file.

-h, --help
Print help information and exit.
-I archive [control-files], --info archive [control-files]
Provide information about binary package archive. If no control files are provided, print a summary of
the package contents; otherwise, print the control files in the order they were specified. An error message
is printed to standard error for any missing components.

--fsys-tarfile archive
Extract the filesystem tree from archive, and send it to standard output in tar format. Can be used with
tar to extract individual files from an archive.

--license
Print the license information and exit. Accepts the spelling --licence in addition to --license.
--version
Print the version number and exit.
-x archive dir, --extract archive dir
-X archive dir, --vextract archive dir

Extract the filesystem tree from archive into the specified directory, creating dir if it doesn't already exist.
-x (--extract) works silently, while -X (--vextract) lists the files as it extracts them. Do not use this
option to install packages; use dpkg instead.

Options
-D
Turn on debugging.
--new
Build a new-style archive format (this is the default).

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (13 of 16) [15/ 05/ 2002 18: 04: 52] 458
458 Page 459 460
The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
--no-check
Don't check the control file before building an archive. This lets you build a broken archive.
--old
Build an old-style archive format.

dpkg-split dpkg-split [action] [options]
Split a binary package into smaller pieces and reassemble the pieces, manually or in automatic mode. The
automatic mode maintains a queue of parts for reassembling. Useful for transferring to and from floppy disks.

Actions
-a -o
output part, --auto -o output part
Add part to the queue for automatic reassembly and if all the parts are available, reassemble the package
as output.

-d [packages], --discard [packages]
Discard parts from the automatic-assembly queue. If any packages are specified, discard only parts from
those packages. Otherwise, empty the queue.

-I parts, --info parts
Print information about the part file or files specified.
-j parts, --join parts
Join the parts of a package file together from the parts specified. The default output file is package-version.
deb.

-l, --listq
List the contents of the queue of parts waiting for reassembly, giving the package name, the parts that are
on the queue, and the number of bytes.

-s full-package [prefix], --full-package [prefix]
Split the package full-package into parts, named prefixNofM. deb. The prefix defaults to the full-package
name without the .deb extension.

-h, --help
Print help message and exit.
--license
Print the license information and exit. Accepts the spelling --licence in addition to --license.
--version
Print the version information and exit.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (14 of 16) [15/ 05/ 2002 18: 04: 52] 459
459 Page 460 461
The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
Options

--depotdir
Specify an alternate directory depotdir for the queue of parts waiting for reassembly. Default is
/var/ lib/ dpkg.

--msdos
Force --split output filenames to be MS-DOS-compatible.
-Q, --npquiet
Do not print an error message for a part that doesn't belong to a binary package when doing automatic
queuing or reassembly.

-o output, --output output
Use output as the filename for a reassembled package.
-S num, --partsize num
When splitting, specify the maximum part size (num) in kilobytes. Default is 450 KB.

dselect dselect [options] [action]
A screen-oriented user frontend to dpkg. The primary user interface for installing and managing packages. See
dpkg and dpkg-deb for information on building packages.

Actions
If dselect is run with no action specified on the command line, it displays the following menu:
* 0. [A] ccess Choose the access method to use.
1. [U] pdate Update list of available packages, if possible.
2. [S] elect Request which packages you want on your system.
3. [I] nstall Install and upgrade wanted packages.
4. [C] onfig Configure any packages that are unconfigured.
5. [R] emove Remove unwanted software.
6. [Q] uit Quit dselect.

The asterisk (on the first line here) shows the currently selected option. Any of the menu items can be specified
directly on the command line as an action (access, update, select, install, config, remove, quit) to go directly to
the desired activity. For example:

% dselect access
If you enter quit on the command line, dselect exits immediately without doing anything. An additional
command-line action is menu, which displays the menu and is equivalent to omitting the action.

Options
--admindir
dir
Change the directory that holds internal data files to dir. Default is /var/ lib/ dpkg.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (15 of 16) [15/ 05/ 2002 18: 04: 52] 460
460 Page 461 462

The Debian Package Manager (Linux in a Nutshell, 3rd Edition)
-D [file], --debug [file]

Turn on debugging. Send output to file if specified.
--help
Print help message and exit.
--license
Print the license information and exit. Accepts the spelling --licence in addition to --license.
--version
Print version information and exit.

5. Red Hat and Debian
Package Managers
6. The Linux Shells: An
Overview

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in%...% 20Nutshell,% 203rd% 20Edition/ Pages/ ch05_ 02. htm (16 of 16) [15/ 05/ 2002 18: 04: 52] 461
461 Page 462 463

The Linux Shells: An Overview (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

Chapter 6. The Linux Shells: An
Overview
Contents:
Purpose of the Shell
Shell Flavors
Common Features
Differing Features

The shell is a program that acts as a buffer between you and the operating system. In its role
as a command interpreter, it should (for the most part) act invisibly. It also can be used for
simple programming.

This section introduces three shells commonly used on Linux systems --the Bourne-Again
shell (bash), the C shell (csh), and csh's enhanced version, tcsh --and summarizes the major
differences between them. Details on them are provided in Chapter 7, "bash: The Bourne-Again

Shell", and Chapter 8, "csh and tcsh". (Some Linux distributions also offer the Korn
shell, ksh, another popular version of the Bourne shell with some of the same features as
bash.)

The following topics are presented in this chapter:
l Purpose of the shell
l Shell flavors
l Common features
l Differing features

6.1. Purpose of the Shell
There are three main uses for the shell:

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch06_ 01. htm (1 of 2) [15/ 05/ 2002 18: 05: 13] 462
462 Page 463 464

The Linux Shells: An Overview (Linux in a Nutshell, 3rd Edition)
l Interactive use

l Customization of your Linux session
l Programming

6.1.1. Interactive Use
When the shell is used interactively, it waits for you to issue commands, processes them (to
interpret special characters, such as wildcards), and executes them. Shells also provide a set of
commands, known as built-ins, to supplement Linux commands.

6.1.2. Customization of Your Linux Session
A Linux shell defines variables, such as the locations of your home directory and mail spool,
to control the behavior of your session. Some variables are preset by the system; you can
define others in startup files that your shell reads when you log in. Startup files also can
contain Linux or shell commands, for execution immediately after login.

6.1.3. Programming
A series of individual commands (be they shell or other Linux commands available on the
system) combined into one executable file is called a shell script. Batch files in MS-DOS are a
similar concept. bash is considered a powerful programming shell, while scripting in csh is
rumored to be hazardous to your health.

5.2. The Debian Package
Manager
6.2. Shell Flavors

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch06_ 01. htm (2 of 2) [15/ 05/ 2002 18: 05: 13] 463
463 Page 464 465

Shell Flavors (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

6.2. Shell Flavors
Many different Linux shells are available. This book describes the three most popular shells:
l The Bourne-Again shell (bash), which is based on the Bourne shell (sh) and is
standard for Linux l
The C shell (csh), which uses C syntax and has many conveniences l
tcsh, an extension of csh that appears instead of csh in many Linux distributions

Most systems have more than one shell, and people will often use one shell for writing shell
scripts and another for interactive use.

When you log in, the system determines which shell to run by consulting your entry in
/etc/ passwd. The last field of each entry calls a program to run as the default shell. For
example:

Program Name Shell
/bin/ sh Bourne-Again shell
/bin/ bash Bourne-Again shell
/bin/ csh C shell (or tcsh)
/bin/ tcsh tcsh

You can change to another shell by typing the program name at the command line. For
example, to change from bash to tcsh, type:

$ exec tcsh

6. The Linux Shells: An
Overview
6.3. Common Features

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch06_ 02. htm (1 of 2) [15/ 05/ 2002 18: 05: 16] 464
464 Page 465 466

Shell Flavors (Linux in a Nutshell, 3rd Edition)
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch06_ 02. htm (2 of 2) [15/ 05/ 2002 18: 05: 16] 465
465 Page 466 467

Common Features (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

6.3. Common Features
The following table is a sampling of features that are common to bash, csh, and tcsh. Note
that tcsh is an enhanced version of csh; therefore, tcsh includes all features of csh, plus some
others.

Symbol/ Command Meaning/ Action
> Redirect output.
>> Append output to file.
< Redirect input.
<< ``Here'' document (redirect input).
| Pipe output.
& Run process in background.
; Separate commands on same line.
* Match any character( s) in filename.
? Match single character in filename.
!n Repeat command number n.
[ ] Match any characters enclosed.
( ) Execute in subshell.
` ` Substitute output of enclosed command.
" " Partial quote (allows variable and command expansion).
\ Quote following character.
$var Use value for variable.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch06_ 03. htm (1 of 2) [15/ 05/ 2002 18: 05: 19] 466
466 Page 467 468

Common Features (Linux in a Nutshell, 3rd Edition)
$$ Process ID.
$0 Command name.

$n nth argument (0< n 9).
$* All arguments.
# Begin comment.
bg Background execution.
break Break from loop statements.
cd Change directories.
continue Resume a program loop.
echo Display output.
eval Evaluate arguments.
exec Execute a new shell or other program.
fg Foreground execution.
jobs Show active jobs.
kill Terminate running jobs.
newgrp Change to a new group.
shift Shift positional parameters.
stop Suspend a background job.
suspend Suspend a foreground job.
umask Set or list permissions on files to be created.
unset Erase variable or function definitions.
wait Wait for a background job to finish.

6.2. Shell Flavors 6.4. Differing Features
Copyright 2001 O'Reilly & QKFIN. All rights reserved.
file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch06_ 03. htm (2 of 2) [15/ 05/ 2002 18: 05: 19] 467
467 Page 468 469

Differing Features (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

6.4. Differing Features
The following table is a sampling of features that are different among the three shells:

Meaning/ Action bash csh tcsh
Default prompt. $ % %
Force redirection. >| >! >!
Force append. >>! >>!
Variable assignment. var= val set var= val set var= val
Set environment variable. export var= val setenv var val setenv var val
Number of arguments. $# $# argv $# argv
Exit status. $? $status $?
Execute commands in file. . file source file source file
End a loop statement. done end end
End case or switch. esac endsw endsw
Loop through variables. for/ do foreach foreach

Sample if statement. if [ $i -eq 5 ] if ($ i== 5) if ($ i== 5)
End if statement. fi endif endif
Set resource limits. ulimit limit limit
Read from terminal. read $< $<
Make a variable read-only. readonly set -r

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch06_ 04. htm (1 of 2) [15/ 05/ 2002 18: 05: 22] 468
468 Page 469 470

Differing Features (Linux in a Nutshell, 3rd Edition)
File inquiry operator; tests
for nonzero size. -s

Complete current word. Tab Tab
Ignore interrupts. trap 2 onintr onintr
Begin until loop. until/ do until until
Begin while loop. while/ do while while

6.3. Common Features 7. bash: The Bourne-Again
Shell

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch06_ 04. htm (2 of 2) [15/ 05/ 2002 18: 05: 22] 469
469 Page 470 471

bash: The Bourne-Again Shell (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

Chapter 7. bash: The Bourne-Again Shell
Contents:
Overview of Features
Invoking the Shell
Syntax
Variables
Arithmetic Expressions
Command History
Built-in Commands
Job Control

This chapter presents the following topics:
l Overview of features

l Invoking the shell
l Syntax
l Variables
l Arithmetic expressions
l Command history
l Built-in commands
l Job control

7.1. Overview of Features
bash
is the GNU version of the standard Bourne shell --the original Unix shell --and incorporates many popular features from
other shells such as csh, tcsh, and the Korn shell (ksh). Both tcsh, which is described in the following chapter, and ksh, which
offers many of the features in this chapter, also are available on most distributions of Linux. But bash is the standard Linux
shell, loaded by default when most user accounts are created.

If executed as part of the user's login, bash starts by executing any commands found in /etc/ profile. Then it executes the
commands found in ~/. bash_ profile, ~/. bash_ login, or ~/. profile (searching for each file only if the previous file is not found).
Many distributions change shell defaults in /etc/ profile for all users, even changing the behavior of common commands like ls.

In addition, every time it starts (as a subshell or a login shell), bash looks for a file named ~/. bashrc. Many system
administration utilities create a small ~/. bashrc automatically, and many users create quite large startup files. Any commands
that can be executed from the shell can be included. A small sample file may look like this; each feature can be found either in
this chapter or in Chapter 3, "Linux Commands":

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch07_ 01. htm (1 of 2) [15/ 05/ 2002 18: 05: 25] 470
470 Page 471 472

bash: The Bourne-Again Shell (Linux in a Nutshell, 3rd Edition)
# Set bash variable to keep 50 commands in history.
HSTSIZE= 50
#
# Set prompt to show current working directory and history number of command.
PS1= '\ w: Command \!$ '
#
# Set path to search for commands in my personal directories, then standard ones.
PATH=~/ bin:~/ scripts:$ PATH
#
# Keep group and others from writing my newly created files.
umask 022
#
# Show color-coded file types.
alias ls= 'ls --color= yes'
#
# Make executable and .o files ugly yellow so I can find and delete them.
export LS_ COLORS=" ex= 43:*. o= 43"
#
# Quick and dirty test of a single-file program.
function gtst () {
g++ -o $1 $1. C && ./$ 1
}
#
# Remove .o files.
alias clean= 'find ~ -name \*. o -exec rm {} \; '

bash provides the following features:
l Input/ output redirection
l Wildcard characters (metacharacters) for filename abbreviation
l Shell variables for customizing your environment
l Powerful programming capabilities
l Command-line editing (using vi-or Emacs-style editing commands)
l Access to previous commands (command history)
l Integer arithmetic
l Arithmetic expressions
l Command name abbreviation (aliasing)
l Job control
l Integrated programming features
l Control structures
l Directory stacking (using pushd and popd)
l Brace/ tilde expansion
l Key bindings

6.4. Differing Features 7.2. Invoking the Shell
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch07_ 01. htm (2 of 2) [15/ 05/ 2002 18: 05: 25] 471
471 Page 472 473

Invoking the Shell (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

7.2. Invoking the Shell
The command interpreter for bash can be invoked as follows:
bash [options] [arguments]
bash can execute commands from a terminal (when -i is specified), from a file (when the first
argument is an executable script), or from standard input (if no arguments remain or if -s is
specified).

7.2.1. Options
Options that appear here with double hyphens also work when entered with single hyphens,
but the double-hyphen versions are recommended because they are standard.

-, --
Treat all subsequent strings as arguments, not options.
--dump-po-strings

Same as --dump-strings but uses a special "portable object" format suitable for
scripting.
--dump-strings

For execution in non-English locales, dump all strings that bash translates.
-c str

Read commands from string str.
-i

Create an interactive shell (prompt for input).
--help

Print information about which version of bash is installed, plus a list of options.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch07_ 02. htm (1 of 3) [15/ 05/ 2002 18: 05: 28] 472
472 Page 473 474
Invoking the Shell (Linux in a Nutshell, 3rd Edition)
--login

Behave like a login shell; try to process /etc/ profile on startup. Then process
~/. bash_ profile, ~/. bash_ login, or ~/. profile (searching for each file only if the
previous file is not found).
--nobraceexpansion

Disable brace expansion.
--noediting

Disable line editing with arrow and control keys.
--noprofile

Do not process /etc/ profile, ~/. bash_ profile, ~/. bash_ login, or ~/. profile on startup.
--norc

Do not process ~/. bashrc on startup.
-p

Start up as a privileged user; don't process $HOME/. profile.
--posix

Conform to POSIX standard.
-r

Restrict users to a very secure, limited environment; for instance, they cannot change
out of the startup directory or use the > sign to redirect output.
--rcfile file

Substitute file for .bashrc on startup.
--restricted

Same as -r.
-s

Read commands from standard input; output from built-in commands goes to file
descriptor 1; all other shell output goes to file descriptor 2.
-v

Print each line as it is executed (useful for tracing scripts).
--verbose

Same as -v.
--version

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch07_ 02. htm (2 of 3) [15/ 05/ 2002 18: 05: 28] 473
473 Page 474 475

Invoking the Shell (Linux in a Nutshell, 3rd Edition)
Print information about which version of bash is installed.
-x

Turn on debugging, as described under the -x option to the set built-in command.
-D

For execution in non-English locales, dump all strings that bash translates.
The remaining options to bash are listed under the set built-in command.

7.2.2. Arguments
Arguments are assigned, in order, to the positional parameters $1, $2, and so forth. If the first
argument is an executable script, commands are read from it and remaining arguments are
assigned to $1, $2, and so on.

7. bash: The Bourne-Again
Shell
7.3. Syntax

Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch07_ 02. htm (3 of 3) [15/ 05/ 2002 18: 05: 28] 474
474 Page 475 476

Syntax (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

7.3. Syntax
This subsection describes the many symbols peculiar to bash. The topics are arranged as follows:
l Special files
l Filename metacharacters
l Command-line editing
l Quoting
l Command forms
l Redirection forms
l Coprocesses

7.3.1. Special Files
File Purpose
/etc/ profile Executed automatically at login
$HOME/. bash_ profile Executed automatically at login
$HOME/. bashrc Executed automatically at shell startup
$HOME/. bash_ logout Executed automatically at logout
$HOME/. bash_ history Record of last session's commands
/etc/ passwd Source of home directories for ~name abbreviations

7.3.2. Filename Metacharacters
Characters Meaning
*
Match any string of zero or more characters.
? Match any single character.
[abc...] Match any one of the enclosed characters; a hyphen can be used to specify a range (e. g., a-z, A-Z, 0-9).
[! abc...] Match any character not among the enclosed characters.
{str1,...} Brace expansion: match any of the enclosed strings.
~name HOME directory of user name.
~+ Current working directory (PWD).
~-Previous working directory from directory stack (OLDPWD, see also the pushd built-in command).
~+ n The nth entry in the directory stack, counting from the start of the list with the first entry being 0.
~-n The nth entry in the directory stack, counting from the end of the list with the last entry being 0.

Patterns can be a sequence of patterns separated by |; if any of the subpatterns match, the entire sequence is considered matching.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch07_ 03. htm (1 of 9) [15/ 05/ 2002 18: 05: 32] 475
475 Page 476 477

Syntax (Linux in a Nutshell, 3rd Edition)
This extended syntax resembles that available to egrep and awk.

7.3.2.1. Examples
$ ls new* List new and new. 1
$ cat ch? Match ch9 but not ch10
$ vi [D-R]* Match files that begin with uppercase D through R

7.3.3. Command-line Editing
Command lines can be edited like lines in either Emacs or vi. Emacs is the default. See Section 7.6.1, "Line-Edit Mode" later in
this chapter for more information.

vi mode has two submodes, insert mode and command mode. The default mode is insert; you can go to command mode by
pressing Esc. In command mode, typing a (append) or i (insert) will return you to insert mode.

Some users discover that the Del or Backspace key on the terminal does not delete the character before the cursor, as it should.
Sometimes the problem can be solved by issuing one of the following commands (or placing it in your .bashrc file):

stty erase ^?
stty erase ^H

See the stty command in Chapter 3, "Linux Commands" for more information. On the X Window System, an alternative solution
is to use the xmodmap command, but this cannot be described easily here because it requires you to do some research about your
terminal.

Table 7-1 through Table 7-14 show various Emacs and vi commands.

Table 7-1. Basic Emacs-Mode Commands

Command Description
Ctrl-B
Move backward one character (without deleting).
Ctrl-F Move forward one character.
Del Delete one character backward.
Ctrl-D Delete one character forward.

Table 7-2. Emacs-Mode Word Commands
Command Description
Esc b
Move one word backward.
Esc f Move one word forward.
Esc Del Kill one word backward.
Esc d Kill one word forward.
Ctrl-Y Retrieve (yank) last item killed.

Table 7-3. Emacs-Mode Line Commands
Command Description
Ctrl-A
Move to beginning of line.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch07_ 03. htm (2 of 9) [15/ 05/ 2002 18: 05: 32] 476
476 Page 477 478
Syntax (Linux in a Nutshell, 3rd Edition)
Ctrl-E Move to end of line.
Ctrl-K Kill forward to end of line.

Table 7-4. Emacs-Mode Commands for Moving Through the History File
Command Description
Ctrl-P
Move to previous line.
Ctrl-N Move to next line.
Ctrl-R Search backward.
Esc < Move to first line of history file.
Esc > Move to last line of history file.

Table 7-5. Completion Commands
Command Description
Tab
Attempt to perform general completion of the text.
Esc ? List the possible completions.
Esc / Attempt filename completion.
Ctrl-X / List the possible filename completions.
Esc ~ Attempt username completion.
Ctrl-X ~ List the possible username completions.
Esc $ Attempt variable completion.
Ctrl-X $ List the possible variable completions.
Esc @ Attempt hostname completion.
Ctrl-X @ List the possible hostname completions.
Esc ! Attempt command completion.
Ctrl-X ! List the possible command completions.
Esc Tab Attempt completion from previous commands in the history list.

Table 7-6. Emacs-Mode Miscellaneous Commands
Command Description
Ctrl-J
Same as Return.
Ctrl-L Clear the screen, placing the current line at the top of the screen.
Ctrl-M Same as Return.
Ctrl-O Same as Return, then display next line in command history.
Ctrl-T Transpose character left of and under the cursor.
Ctrl-U Kill the line from the beginning to point.
Ctrl-V Insert keypress instead of interpreting it as a command.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch07_ 03. htm (3 of 9) [15/ 05/ 2002 18: 05: 32] 477
477 Page 478 479

Syntax (Linux in a Nutshell, 3rd Edition)
Ctrl-[ Same as Esc (most keyboards).
Esc c Capitalize word under or after cursor.
Esc u Change word under or after cursor to all capital letters.
Esc l Change word under or after cursor to all lowercase letters.
Esc . Insert last word in previous command line after point.
Esc _ Same as Esc.

Table 7-7. Editing Commands in vi Input Mode
Command Description
Del
Delete previous character.
Ctrl-W Erase previous word (i. e., erase until a blank).
Ctrl-V Insert keypress instead of interpreting it as a command.
Esc Enter control mode (see Table 7-8).

Table 7-8. Basic vi Control Mode Commands
Command Description
h
Move left one character.
l Move right one character.
b Move left one word.
w Move right one word.
B Move to beginning of preceding nonblank word.
W Move to beginning of next nonblank word.
e Move to end of current word.
E Move to end of current nonblank word.
0 Move to beginning of line.
^ Move to first nonblank character in line.
$ Move to end of line.

Table 7-9. Commands for Entering vi Input Mode
Command Description
i
Insert text before current character (insert).
a Insert text after current character (append).
I Insert text at beginning of line.
A Insert text at end of line.
r Replace current character with this text.
R Overwrite existing text.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch07_ 03. htm (4 of 9) [15/ 05/ 2002 18: 05: 32] 478
478 Page 479 480
Syntax (Linux in a Nutshell, 3rd Edition)
Table 7-10. Some vi-Mode Deletion Commands
Command Description
dh
Delete one character backward.
dl Delete one character forward.
db Delete one word backward.
dw Delete one word forward.
dB Delete one nonblank word backward.
dW Delete one nonblank word forward.
d$ Delete to end-of-line.
d0 Delete to beginning of line.

Table 7-11. Abbreviations for vi-Mode Delete Commands
Command Description
D
Delete to end of line (equivalent to d$).
dd
Delete entire line (equivalent to 0d$).
C
Delete to end of line; enter input mode (equivalent to c$).
cc
Delete entire line; enter input mode (equivalent to 0c$).
X
Delete character backward (equivalent to dl).
x
Delete character forward (equivalent to dh).

Table 7-12. vi Control Mode Commands for Searching the Command History
Command Description
k
or -Move backward one line.
j or + Move forward one line.
G Move to line given by repeat count.
/string Search backward for string.
?string Search forward for string.
n Repeat search in same direction as previous.
N Repeat search in opposite direction of previous.

Table 7-13. vi-Mode Character-Finding Commands
Command Description
fx
Move right to next occurrence of x.
Fx Move left to previous occurrence of x.
tx Move right to next occurrence of x, then back one space.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch07_ 03. htm (5 of 9) [15/ 05/ 2002 18: 05: 32] 479
479 Page 480 481
Syntax (Linux in a Nutshell, 3rd Edition)
Tx Move left to previous occurrence of x, then forward one space.
; Redo last character-finding command.
, Redo last character-finding command in opposite direction.

Table 7-14. Miscellaneous vi-Mode Commands
Command Description
~ Invert (toggle) case of current character( s).
-Append last word of previous command; enter input mode.
Ctrl-L Clear the screen and redraw the current line on it; good for when your screen becomes garbled.

# Prepend # (comment character) to the line and send it to the history file; useful for saving a command to be executed later, without having to retype it.

7.3.4. Quoting
Quoting disables a character's special meaning and allows it to be used literally, as itself. The following characters have special
meaning to bash:

Character Meaning
; Command separator
& Background execution
( ) Command grouping (enter a subshell)
{ } Command block
| Pipe
> < & Redirection symbols
* ? [ ] ~ ! Filename metacharacters
" ' \ Used in quoting other characters
` Command substitution
$ Variable substitution (or command substitution)
newline space tab Word separators
# Comment

The following characters can be used for quoting:
Character Action

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch07_ 03. htm (6 of 9) [15/ 05/ 2002 18: 05: 32] 480
480 Page 481 482
Syntax (Linux in a Nutshell, 3rd Edition)
" "
Everything between " and " is taken literally, except for the following characters that keep their special meaning:
$
Variable substitution will occur.
`

Command substitution will occur.
"

This marks the end of the double quote.

' ' Everything between ' and ' is taken literally, except for another '.
\ The character following a \ is taken literally. Use within " " to escape ", $, and `. Often used to escape itself, spaces, or newlines.

7.3.4.1. Examples
$ echo 'Single quotes "protect" double quotes'
Single quotes "protect" double quotes

$ echo "Well, isn't that \" special\"?"
Well, isn't that "special"?

$ echo "You have `ls| wc -l` files in `pwd`"
You have 43 files in /home/ bob

$ echo "The value of \$ x is $x"
The value of $x is 100

7.3.5. Command Forms

Syntax Effect
cmd & Execute cmd in background.
cmd1 ; cmd2 Command sequence; execute multiple cmds on the same line.
(cmd1 ; cmd2) Subshell; treat cmd1 and cmd2 as a command group.
cmd1 | cmd2 Pipe; use output from cmd1 as input to cmd2.
cmd1
`cmd2` Command substitution; use cmd2 output as arguments to cmd1.
cmd1
$( cmd2) Command substitution; nesting is allowed.
cmd1 && cmd2 AND; execute cmd2 only if cmd1 succeeds.
cmd1 || cmd2 OR; execute cmd2 only if cmd1 fails.
{ cmd1 ; cmd2 } Execute commands in the current shell.

7.3.5.1. Examples
$ nroff file & Format in the background
$
cd; ls Execute sequentially
$
(date; who; pwd) > logfile All output is redirected
$
sort file | pr -3 | lp Sort file, page output, then print
$
vi `grep -l ifdef *. c` Edit files found by grep
$
egrep '( yes| no) ' `cat list` Specify a list of files to search

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch07_ 03. htm (7 of 9) [15/ 05/ 2002 18: 05: 32] 481
481 Page 482 483

Syntax (Linux in a Nutshell, 3rd Edition)
$ egrep '( yes| no) ' $( cat list) Same as previous using bash command
substitution
$
egrep '( yes| no) ' $(< list) Same, but faster
$
grep XX file && lp file Print file if it contains the pattern
$
grep XX file || echo "XX not found" Echo an error message if the pattern is not
found

7.3.6. Redirection Forms

File Descriptor Name Common Abbreviation Typical Default
0 Standard input stdin Keyboard
1 Standard output stdout Screen
2 Standard error stderr Screen

The usual input source or output destination can be changed as shown in Table 7-15.
Table 7-15. I/ O Redirectors

Redirector Function
>
file Direct standard output to file.
< file Take standard input from file.
cmd1
| cmd2 Pipe; take standard output of cmd1 as standard input to cmd2.
>> file Direct standard output to file; append to file if it already exists.
>| file Force standard output to file even if noclobber is set.
n>| file Force output from the file descriptor n to file even if noclobber is set.
<> file Use file as both standard input and standard output.

<< text
Read standard input up to a line identical to text (text can be stored in a shell variable). Input is usually typed on
the screen or in the shell program. Commands that typically use this syntax include cat, echo, ex, and sed. If
text is enclosed in quotes, standard input will not undergo variable substitution, command substitution, etc.

n> file Direct file descriptor n to file.
n< file
Set file as file descriptor n.
>& n Duplicate standard output to file descriptor n.
<& n Duplicate standard input from file descriptor n.
&> file Direct standard output and standard error to file.
<&-Close the standard input.
>&-Close the standard output.
n>&-Close the output from file descriptor n.
n<&-
Close the input from file descriptor n.

7.3.6.1. Examples
$ cat part1 > book
$ cat part2 part3 >> book
$ mail tim < report

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch07_ 03. htm (8 of 9) [15/ 05/ 2002 18: 05: 33] 482
482 Page 483 484

Syntax (Linux in a Nutshell, 3rd Edition)
$ grep Chapter part* 2> error_ file

$ sed 's/^/ XX /' << END_ ARCHIVE
> This is often how a shell archive is "wrapped",
> bundling text for distribution. You would normally
> run sed from a shell program, not from the command line.
> END_ ARCHIVE
XX This is often how a shell archive is "wrapped",
XX bundling text for distribution. You would normally
XX run sed from a shell program, not from the command line.

To redirect standard output to standard error:
$ echo "Usage error: see administrator" 1>& 2
The following command sends output (files found) to filelist and sends error messages (inaccessible files) to file no_ access:
$ find / -print > filelist 2> no_ access

7.3.7. Coprocesses
Coprocesses are a feature of bash and do not appear in other shells.

Syntax Effect
cmd1 | cmd2 |& Coprocess; execute the pipeline in the background. The shell sets up a two-way pipe, allowing redirection of both standard input and standard output.

read -p var Read coprocess input into variable var.
print -p string Write string to the coprocess.
cmd <& p Take input for cmd from the coprocess.
cmd >& p Send output of cmd to the coprocess.

7.3.7.1. Examples
cat memo Print contents of file
Sufficient unto the day is
A word to the wise.
ed -memo |& Start coprocess
print -p /word/ Send ed command to coprocess
read -p search Read output of ed command into variable search
print "$ search" Show the line on standard output
A word to the wise.

7.2. Invoking the Shell 7.4. Variables
Copyright 2001 O'Reilly & QKFIN. All rights reserved.

file:/// E|/ O'Reilly/ O'Reilly% 20-% 20Linux% 20in% 20a% 20Nutshell,% 203rd% 20Edition/ Pages/ ch07_ 03. htm (9 of 9) [15/ 05/ 2002 18: 05: 33] 483
483 Page 484 485

Variables (Linux in a Nutshell, 3rd Edition)
Linux in a Nutshell, 3rd
Edition

7.4. Variables
Variables are prefaced by a dollar sign ($) and optionally enclosed in braces ({}). You can
assign a value to a variable through an equals sign (=); no whitespace can appear on either
side of the equals sign:

$ TMP= temp. file
By default, variables are seen only within the shell itself; to pass variables to other programs
invoked within the shell, see the export built-in command.

If subscripted by brackets ([]), the variable is considered an array variable. For instance:
$ DIR_ LIST[ 0]= src
$ DIR_ LIST[ 1]= headers
$ ls ${ DIR_ LIST[ 1]}

The contents of headers are listed. Many substitutions and commands in this chapter handle
arrays by operating on each element