2091 lines
77 KiB
Plaintext
2091 lines
77 KiB
Plaintext
\input texinfo @c -*-texinfo-*-
|
|
@c %**start of header
|
|
@setfilename grep.info
|
|
@settitle grep, print lines matching a pattern
|
|
@c %**end of header
|
|
|
|
@c This file has the new style title page commands.
|
|
@c Run `makeinfo' rather than `texinfo-format-buffer'.
|
|
|
|
@c smallbook
|
|
|
|
@c tex
|
|
@c \overfullrule=0pt
|
|
@c end tex
|
|
|
|
@include version.texi
|
|
|
|
@c Combine indices.
|
|
@syncodeindex ky cp
|
|
@syncodeindex pg cp
|
|
@syncodeindex tp cp
|
|
|
|
@defcodeindex op
|
|
@syncodeindex op fn
|
|
@syncodeindex vr fn
|
|
|
|
@ifinfo
|
|
@direntry
|
|
* grep: (grep). print lines matching a pattern.
|
|
@end direntry
|
|
This file documents @command{grep}, a pattern matching engine.
|
|
|
|
|
|
Published by the Free Software Foundation,
|
|
59 Temple Place - Suite 330
|
|
Boston, MA 02111-1307, USA
|
|
|
|
@c man begin COPYRIGHT
|
|
Copyright @copyright{} 2000, 2001 Free Software Foundation, Inc.
|
|
|
|
Permission is granted to make and distribute verbatim copies of
|
|
this manual provided the copyright notice and this permission notice
|
|
are preserved on all copies.
|
|
|
|
@ignore
|
|
Permission is granted to process this file through TeX and print the
|
|
results, provided the printed document carries a copying permission
|
|
notice identical to this one except for the removal of this paragraph
|
|
(this paragraph not being relevant to the printed manual).
|
|
|
|
@end ignore
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.1 or
|
|
any later version published by the Free Software Foundation; with the
|
|
Invariant Sections being ``GNU General Public License'' and ``GNU Free
|
|
Documentation License'', with no Front-Cover Texts, and with no
|
|
Back-Cover Texts. A copy of the license is included in the section
|
|
entitled ``GNU Free Documentation License'' (@pxref{Copying}).
|
|
@c man end
|
|
@end ifinfo
|
|
|
|
@setchapternewpage off
|
|
|
|
@titlepage
|
|
@title grep, searching for a pattern
|
|
@subtitle version @value{VERSION}, @value{UPDATED}
|
|
@author Alain Magloire et al.
|
|
|
|
@page
|
|
@vskip 0pt plus 1filll
|
|
Copyright @copyright{} 2000, 2001 Free Software Foundation, Inc.
|
|
|
|
@sp 2
|
|
Published by the Free Software Foundation, @*
|
|
59 Temple Place - Suite 330, @*
|
|
Boston, MA 02111-1307, USA
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.1 or
|
|
any later version published by the Free Software Foundation; with the
|
|
Invariant Sections being ``GNU General Public License'' and ``GNU Free
|
|
Documentation License'', with no Front-Cover Texts, and with no
|
|
Back-Cover Texts. A copy of the license is included in the section
|
|
entitled ``GNU Free Documentation License''.
|
|
@end titlepage
|
|
|
|
|
|
@ifnottex
|
|
@node Top
|
|
@top Grep
|
|
|
|
@command{grep} searches for lines matching a pattern.
|
|
|
|
This document was produced for version @value{VERSION} of @sc{gnu}
|
|
@command{grep}.
|
|
@end ifnottex
|
|
|
|
@menu
|
|
* Introduction:: Introduction.
|
|
* Invoking:: Invoking @command{grep}; description of options.
|
|
* Diagnostics:: Exit status returned by @command{grep}.
|
|
* Grep Programs:: @command{grep} programs.
|
|
* Regular Expressions:: Regular Expressions.
|
|
* Usage:: Examples.
|
|
* Reporting Bugs:: Reporting Bugs.
|
|
* Copying:: License terms.
|
|
* Concept Index:: A menu with all the topics in this manual.
|
|
* Index:: A menu with all @command{grep} commands
|
|
and command-line options.
|
|
@end menu
|
|
|
|
|
|
@node Introduction, Invoking, Top, Top
|
|
@chapter Introduction
|
|
|
|
@cindex Searching for a pattern.
|
|
|
|
@command{grep} searches the input files
|
|
for lines containing a match to a given
|
|
pattern list. When it finds a match in a line, it copies the line to standard
|
|
output (by default), or does whatever other sort of output you have requested
|
|
with options.
|
|
|
|
Though @command{grep} expects to do the matching on text,
|
|
it has no limits on input line length other than available memory,
|
|
and it can match arbitrary characters within a line.
|
|
If the final byte of an input file is not a newline,
|
|
@command{grep} silently supplies one.
|
|
Since newline is also a separator for the list of patterns, there
|
|
is no way to match newline characters in a text.
|
|
|
|
@node Invoking
|
|
@chapter Invoking @command{grep}
|
|
|
|
@command{grep} comes with a rich set of options from @sc{posix.2} and @sc{gnu}
|
|
extensions.
|
|
|
|
@table @samp
|
|
|
|
@item -c
|
|
@itemx --count
|
|
@opindex -c
|
|
@opindex --count
|
|
@cindex counting lines
|
|
Suppress normal output; instead print a count of matching
|
|
lines for each input file. With the @samp{-v}, @samp{--invert-match} option,
|
|
count non-matching lines.
|
|
|
|
@item -e @var{pattern}
|
|
@itemx --regexp=@var{pattern}
|
|
@opindex -e
|
|
@opindex --regexp=@var{pattern}
|
|
@cindex pattern list
|
|
Use @var{pattern} as the pattern; useful to protect patterns
|
|
beginning with a @samp{-}.
|
|
|
|
@item -f @var{file}
|
|
@itemx --file=@var{file}
|
|
@opindex -f
|
|
@opindex --file
|
|
@cindex pattern from file
|
|
Obtain patterns from @var{file}, one per line. The empty
|
|
file contains zero patterns, and therefore matches nothing.
|
|
|
|
@item -i
|
|
@itemx --ignore-case
|
|
@opindex -i
|
|
@opindex --ignore-case
|
|
@cindex case insensitive search
|
|
Ignore case distinctions in both the pattern and the input files.
|
|
|
|
@item -l
|
|
@itemx --files-with-matches
|
|
@opindex -l
|
|
@opindex --files-with-matches
|
|
@cindex names of matching files
|
|
Suppress normal output; instead print the name of each input
|
|
file from which output would normally have been printed.
|
|
The scanning of every file will stop on the first match.
|
|
|
|
@item -n
|
|
@itemx --line-number
|
|
@opindex -n
|
|
@opindex --line-number
|
|
@cindex line numbering
|
|
Prefix each line of output with the line number within its input file.
|
|
|
|
@item -o
|
|
@itemx --only-matching
|
|
@opindex -o
|
|
@opindex --only-matching
|
|
@cindex only matching
|
|
Print only the part of matching lines that actually matches @var{pattern}.
|
|
|
|
@item -q
|
|
@itemx --quiet
|
|
@itemx --silent
|
|
@opindex -q
|
|
@opindex --quiet
|
|
@opindex --silent
|
|
@cindex quiet, silent
|
|
Quiet; do not write anything to standard output. Exit immediately with
|
|
zero status if any match is found, even if an error was detected. Also
|
|
see the @samp{-s} or @samp{--no-messages} option.
|
|
|
|
@item -s
|
|
@itemx --no-messages
|
|
@opindex -s
|
|
@opindex --no-messages
|
|
@cindex suppress error messages
|
|
Suppress error messages about nonexistent or unreadable files.
|
|
Portability note: unlike @sc{gnu} @command{grep}, traditional
|
|
@command{grep} did not conform to @sc{posix.2}, because traditional
|
|
@command{grep} lacked a @samp{-q} option and its @samp{-s} option behaved
|
|
like @sc{gnu} @command{grep}'s @samp{-q} option. Shell scripts intended
|
|
to be portable to traditional @command{grep} should avoid both
|
|
@samp{-q} and @samp{-s} and should redirect
|
|
output to @file{/dev/null} instead.
|
|
|
|
@item -v
|
|
@itemx --invert-match
|
|
@opindex -v
|
|
@opindex --invert-match
|
|
@cindex invert matching
|
|
@cindex print non-matching lines
|
|
Invert the sense of matching, to select non-matching lines.
|
|
|
|
@item -x
|
|
@itemx --line-regexp
|
|
@opindex -x
|
|
@opindex --line-regexp
|
|
@cindex match the whole line
|
|
Select only those matches that exactly match the whole line.
|
|
|
|
@end table
|
|
|
|
@section @sc{gnu} Extensions
|
|
|
|
@table @samp
|
|
|
|
@item -A @var{num}
|
|
@itemx --after-context=@var{num}
|
|
@opindex -A
|
|
@opindex --after-context
|
|
@cindex after context
|
|
@cindex context lines, after match
|
|
Print @var{num} lines of trailing context after matching lines.
|
|
|
|
@item -B @var{num}
|
|
@itemx --before-context=@var{num}
|
|
@opindex -B
|
|
@opindex --before-context
|
|
@cindex before context
|
|
@cindex context lines, before match
|
|
Print @var{num} lines of leading context before matching lines.
|
|
|
|
@item -C @var{num}
|
|
@itemx --context=@var{num}
|
|
@opindex -C
|
|
@opindex --context
|
|
@cindex context
|
|
Print @var{num} lines of output context.
|
|
|
|
@item --colour[=@var{WHEN}]
|
|
@itemx --color[=@var{WHEN}]
|
|
@opindex --colour
|
|
@cindex highlight, color, colour
|
|
The matching string is surrounded by the marker specify in @var{GREP_COLOR}.
|
|
@var{WHEN} may be `never', `always', or `auto'.
|
|
|
|
@item -@var{num}
|
|
@opindex -NUM
|
|
Same as @samp{--context=@var{num}} lines of leading and trailing
|
|
context. However, grep will never print any given line more than once.
|
|
|
|
|
|
@item -V
|
|
@itemx --version
|
|
@opindex -V
|
|
@opindex --version
|
|
@cindex Version, printing
|
|
Print the version number of @command{grep} to the standard output stream.
|
|
This version number should be included in all bug reports.
|
|
|
|
@item --help
|
|
@opindex --help
|
|
@cindex Usage summary, printing
|
|
Print a usage message briefly summarizing these command-line options
|
|
and the bug-reporting address, then exit.
|
|
|
|
@itemx --binary-files=@var{type}
|
|
@opindex --binary-files
|
|
@cindex binary files
|
|
If the first few bytes of a file indicate that the file contains binary
|
|
data, assume that the file is of type @var{type}. By default,
|
|
@var{type} is @samp{binary}, and @command{grep} normally outputs either
|
|
a one-line message saying that a binary file matches, or no message if
|
|
there is no match. If @var{type} is @samp{without-match},
|
|
@command{grep} assumes that a binary file does not match;
|
|
this is equivalent to the @samp{-I} option. If @var{type}
|
|
is @samp{text}, @command{grep} processes a binary file as if it were
|
|
text; this is equivalent to the @samp{-a} option.
|
|
@emph{Warning:} @samp{--binary-files=text} might output binary garbage,
|
|
which can have nasty side effects if the output is a terminal and if the
|
|
terminal driver interprets some of it as commands.
|
|
|
|
@item -b
|
|
@itemx --byte-offset
|
|
@opindex -b
|
|
@opindex --byte-offset
|
|
@cindex byte offset
|
|
Print the byte offset within the input file before each line of output.
|
|
When @command{grep} runs on @sc{ms-dos} or MS-Windows, the printed
|
|
byte offsets
|
|
depend on whether the @samp{-u} (@samp{--unix-byte-offsets}) option is
|
|
used; see below.
|
|
|
|
@item -D @var{action}
|
|
@itemx --devices=@var{action}
|
|
@opindex -D
|
|
@opindex --devices
|
|
@cindex device search
|
|
If an input file is a device, FIFO or socket, use @var{action} to process it.
|
|
By default, @var{action} is @samp{read}, which means that devices are
|
|
read just as if they were ordinary files.
|
|
If @var{action} is @samp{skip}, devices, FIFOs and sockets are silently
|
|
skipped.
|
|
|
|
@item -d @var{action}
|
|
@itemx --directories=@var{action}
|
|
@opindex -d
|
|
@opindex --directories
|
|
@cindex directory search
|
|
If an input file is a directory, use @var{action} to process it.
|
|
By default, @var{action} is @samp{read}, which means that directories are
|
|
read just as if they were ordinary files (some operating systems
|
|
and filesystems disallow this, and will cause @command{grep} to print error
|
|
messages for every directory or silently skip them). If @var{action} is
|
|
@samp{skip}, directories are silently skipped. If @var{action} is
|
|
@samp{recurse}, @command{grep} reads all files under each directory,
|
|
recursively; this is equivalent to the @samp{-r} option.
|
|
|
|
@item -H
|
|
@itemx --with-filename
|
|
@opindex -H
|
|
@opindex --With-filename
|
|
@cindex with filename prefix
|
|
Print the filename for each match.
|
|
|
|
@item -h
|
|
@itemx --no-filename
|
|
@opindex -h
|
|
@opindex --no-filename
|
|
@cindex no filename prefix
|
|
Suppress the prefixing of filenames on output when multiple files are searched.
|
|
|
|
@item --line-buffered
|
|
@opindex --line-buffered
|
|
@cindex line buffering
|
|
Set the line buffering policy, this can be a performance penality.
|
|
|
|
@item --label=@var{LABEL}
|
|
@opindex --label
|
|
@cindex changing name of standard input
|
|
Displays input actually coming from standard input as input coming from file
|
|
@var{LABEL}. This is especially useful for tools like zgrep, e.g.
|
|
@command{gzip -cd foo.gz |grep --label=foo something}
|
|
|
|
@item -L
|
|
@itemx --files-without-match
|
|
@opindex -L
|
|
@opindex --files-without-match
|
|
@cindex files which don't match
|
|
Suppress normal output; instead print the name of each input
|
|
file from which no output would normally have been printed.
|
|
The scanning of every file will stop on the first match.
|
|
|
|
@item -a
|
|
@itemx --text
|
|
@opindex -a
|
|
@opindex --text
|
|
@cindex suppress binary data
|
|
@cindex binary files
|
|
Process a binary file as if it were text; this is equivalent to the
|
|
@samp{--binary-files=text} option.
|
|
|
|
@item -I
|
|
Process a binary file as if it did not contain matching data; this is
|
|
equivalent to the @samp{--binary-files=without-match} option.
|
|
|
|
@item -w
|
|
@itemx --word-regexp
|
|
@opindex -w
|
|
@opindex --word-regexp
|
|
@cindex matching whole words
|
|
Select only those lines containing matches that form
|
|
whole words. The test is that the matching substring
|
|
must either be at the beginning of the line, or preceded
|
|
by a non-word constituent character. Similarly,
|
|
it must be either at the end of the line or followed by
|
|
a non-word constituent character. Word-constituent
|
|
characters are letters, digits, and the underscore.
|
|
|
|
@item -r
|
|
@itemx -R
|
|
@itemx --recursive
|
|
@opindex -r
|
|
@opindex --recursive
|
|
@cindex recursive search
|
|
@cindex searching directory trees
|
|
For each directory mentioned in the command line, read and process all
|
|
files in that directory, recursively. This is the same as the
|
|
@samp{--directories=recurse} option.
|
|
|
|
@item --include=@var{file_pattern}
|
|
@opindex --include
|
|
@cindex include files
|
|
@cindex searching directory trees
|
|
When processing directories recursively, only files matching @var{file_pattern}
|
|
will be search.
|
|
|
|
@item --exclude=@var{file_pattern}
|
|
@opindex --exclude
|
|
@cindex exclude files
|
|
@cindex searching directory trees
|
|
When processing directories recursively, skip files matching @var{file_pattern}.
|
|
|
|
@item -m @var{num}
|
|
@itemx --max-count=@var{num}
|
|
@opindex -m
|
|
@opindex --max-count
|
|
@cindex max-count
|
|
Stop reading a file after @var{num} matching lines. If the input is
|
|
standard input from a regular file, and @var{num} matching lines are
|
|
output, @command{grep} ensures that the standard input is positioned to
|
|
just after the last matching line before exiting, regardless of the
|
|
presence of trailing context lines. This enables a calling process
|
|
to resume a search. For example, the following shell script makes use
|
|
of it:
|
|
|
|
@example
|
|
while grep -m 1 PATTERN
|
|
do
|
|
echo xxxx
|
|
done < FILE
|
|
@end example
|
|
|
|
But the following probably will not work because a pipe is not a regular
|
|
file:
|
|
|
|
@example
|
|
# This probably will not work.
|
|
cat FILE |
|
|
while grep -m 1 PATTERN
|
|
do
|
|
echo xxxx
|
|
done
|
|
@end example
|
|
|
|
When @command{grep} stops after NUM matching lines, it outputs
|
|
any trailing context lines. Since context does not include matching
|
|
lines, @command{grep} will stop when it encounters another matching line.
|
|
When the @samp{-c} or @samp{--count} option is also used,
|
|
@command{grep} does not output a count greater than @var{num}.
|
|
When the @samp{-v} or @samp{--invert-match} option is
|
|
also used, @command{grep} stops after outputting @var{num}
|
|
non-matching lines.
|
|
|
|
@item -y
|
|
@opindex -y
|
|
@cindex case insensitive search, obsolete option
|
|
Obsolete synonym for @samp{-i}.
|
|
|
|
@item -U
|
|
@itemx --binary
|
|
@opindex -U
|
|
@opindex --binary
|
|
@cindex DOS/Windows binary files
|
|
@cindex binary files, DOS/Windows
|
|
Treat the file(s) as binary. By default, under @sc{ms-dos}
|
|
and MS-Windows, @command{grep} guesses the file type by looking
|
|
at the contents of the first 32kB read from the file.
|
|
If @command{grep} decides the file is a text file, it strips the
|
|
@code{CR} characters from the original file contents (to make
|
|
regular expressions with @code{^} and @code{$} work correctly).
|
|
Specifying @samp{-U} overrules this guesswork, causing all
|
|
files to be read and passed to the matching mechanism
|
|
verbatim; if the file is a text file with @code{CR/LF} pairs
|
|
at the end of each line, this will cause some regular
|
|
expressions to fail. This option has no effect on platforms other than
|
|
@sc{ms-dos} and MS-Windows.
|
|
|
|
@item -u
|
|
@itemx --unix-byte-offsets
|
|
@opindex -u
|
|
@opindex --unix-byte-offsets
|
|
@cindex DOS byte offsets
|
|
@cindex byte offsets, on DOS/Windows
|
|
Report Unix-style byte offsets. This switch causes
|
|
@command{grep} to report byte offsets as if the file were Unix style
|
|
text file, i.e., the byte offsets ignore the @code{CR} characters which were
|
|
stripped. This will produce results identical to running @command{grep} on
|
|
a Unix machine. This option has no effect unless @samp{-b}
|
|
option is also used; it has no effect on platforms other than @sc{ms-dos} and
|
|
MS-Windows.
|
|
|
|
@item --mmap
|
|
@opindex --mmap
|
|
@cindex memory mapped input
|
|
If possible, use the @code{mmap} system call to read input, instead of
|
|
the default @code{read} system call. In some situations, @samp{--mmap}
|
|
yields better performance. However, @samp{--mmap} can cause undefined
|
|
behavior (including core dumps) if an input file shrinks while
|
|
@command{grep} is operating, or if an I/O error occurs.
|
|
|
|
@item -Z
|
|
@itemx --null
|
|
@opindex -Z
|
|
@opindex --null
|
|
@cindex zero-terminated file names
|
|
Output a zero byte (the @sc{ascii} @code{NUL} character) instead of the
|
|
character that normally follows a file name. For example, @samp{grep
|
|
-lZ} outputs a zero byte after each file name instead of the usual
|
|
newline. This option makes the output unambiguous, even in the presence
|
|
of file names containing unusual characters like newlines. This option
|
|
can be used with commands like @samp{find -print0}, @samp{perl -0},
|
|
@samp{sort -z}, and @samp{xargs -0} to process arbitrary file names,
|
|
even those that contain newline characters.
|
|
|
|
@item -z
|
|
@itemx --null-data
|
|
@opindex -z
|
|
@opindex --null-data
|
|
@cindex zero-terminated lines
|
|
Treat the input as a set of lines, each terminated by a zero byte (the
|
|
@sc{ascii} @code{NUL} character) instead of a newline. Like the @samp{-Z}
|
|
or @samp{--null} option, this option can be used with commands like
|
|
@samp{sort -z} to process arbitrary file names.
|
|
|
|
@end table
|
|
|
|
Several additional options control which variant of the @command{grep}
|
|
matching engine is used. @xref{Grep Programs}.
|
|
|
|
@section Environment Variables
|
|
|
|
Grep's behavior is affected by the following environment variables.
|
|
|
|
A locale @code{LC_@var{foo}} is specified by examining the three
|
|
environment variables @env{LC_ALL}, @env{LC_@var{foo}}, and @env{LANG},
|
|
in that order. The first of these variables that is set specifies the
|
|
locale. For example, if @env{LC_ALL} is not set, but @env{LC_MESSAGES}
|
|
is set to @samp{pt_BR}, then Brazilian Portuguese is used for the
|
|
@code{LC_MESSAGES} locale. The C locale is used if none of these
|
|
environment variables are set, or if the locale catalog is not
|
|
installed, or if @command{grep} was not compiled with national language
|
|
support (@sc{nls}).
|
|
|
|
@cindex environment variables
|
|
|
|
@table @env
|
|
|
|
@item GREP_OPTIONS
|
|
@vindex GREP_OPTIONS
|
|
@cindex default options environment variable
|
|
This variable specifies default options to be placed in front of any
|
|
explicit options. For example, if @code{GREP_OPTIONS} is
|
|
@samp{--binary-files=without-match --directories=skip}, @command{grep}
|
|
behaves as if the two options @samp{--binary-files=without-match} and
|
|
@samp{--directories=skip} had been specified before
|
|
any explicit options. Option specifications are separated by
|
|
whitespace. A backslash escapes the next character, so it can be used to
|
|
specify an option containing whitespace or a backslash.
|
|
|
|
@item GREP_COLOR
|
|
@vindex GREP_COLOR
|
|
@cindex highlight markers
|
|
This variable specifies the surrounding markers use to highlight the matching
|
|
text. The default is control ascii red.
|
|
|
|
@item LC_ALL
|
|
@itemx LC_COLLATE
|
|
@itemx LANG
|
|
@vindex LC_ALL
|
|
@vindex LC_COLLATE
|
|
@vindex LANG
|
|
@cindex character type
|
|
@cindex national language support
|
|
@cindex NLS
|
|
These variables specify the @code{LC_COLLATE} locale, which determines
|
|
the collating sequence used to interpret range expressions like
|
|
@samp{[a-z]}.
|
|
|
|
@item LC_ALL
|
|
@itemx LC_CTYPE
|
|
@itemx LANG
|
|
@vindex LC_ALL
|
|
@vindex LC_CTYPE
|
|
@vindex LANG
|
|
@cindex character type
|
|
@cindex national language support
|
|
@cindex NLS
|
|
These variables specify the @code{LC_CTYPE} locale, which determines the
|
|
type of characters, e.g., which characters are whitespace.
|
|
|
|
@item LC_ALL
|
|
@itemx LC_MESSAGES
|
|
@itemx LANG
|
|
@vindex LC_ALL
|
|
@vindex LC_MESSAGES
|
|
@vindex LANG
|
|
@cindex language of messages
|
|
@cindex message language
|
|
@cindex national language support
|
|
@cindex NLS
|
|
@cindex translation of message language
|
|
These variables specify the @code{LC_MESSAGES} locale, which determines
|
|
the language that @command{grep} uses for messages. The default C
|
|
locale uses American English messages.
|
|
|
|
@item POSIXLY_CORRECT
|
|
@vindex POSIXLY_CORRECT
|
|
If set, @command{grep} behaves as @sc{posix.2} requires; otherwise,
|
|
@command{grep} behaves more like other @sc{gnu} programs. @sc{posix.2}
|
|
requires that options that
|
|
follow file names must be treated as file names; by default, such
|
|
options are permuted to the front of the operand list and are treated as
|
|
options. Also, @sc{posix.2} requires that unrecognized options be
|
|
diagnosed as
|
|
``illegal'', but since they are not really against the law the default
|
|
is to diagnose them as ``invalid''. @code{POSIXLY_CORRECT} also
|
|
disables @code{_@var{N}_GNU_nonoption_argv_flags_}, described below.
|
|
|
|
@item _@var{N}_GNU_nonoption_argv_flags_
|
|
@vindex _@var{N}_GNU_nonoption_argv_flags_
|
|
(Here @code{@var{N}} is @command{grep}'s numeric process ID.) If the
|
|
@var{i}th character of this environment variable's value is @samp{1}, do
|
|
not consider the @var{i}th operand of @command{grep} to be an option, even if
|
|
it appears to be one. A shell can put this variable in the environment
|
|
for each command it runs, specifying which operands are the results of
|
|
file name wildcard expansion and therefore should not be treated as
|
|
options. This behavior is available only with the @sc{gnu} C library, and
|
|
only when @code{POSIXLY_CORRECT} is not set.
|
|
|
|
@end table
|
|
|
|
@node Diagnostics
|
|
@chapter Diagnostics
|
|
|
|
Normally, exit status is 0 if selected lines are found and 1 otherwise.
|
|
But the exit status is 2 if an error occurred, unless the @option{-q} or
|
|
@option{--quiet} or @option{--silent} option is used and a selected line
|
|
is found.
|
|
|
|
@node Grep Programs
|
|
@chapter @command{grep} programs
|
|
|
|
@command{grep} searches the named input files (or standard input if no
|
|
files are named, or the file name @file{-} is given) for lines containing
|
|
a match to the given pattern. By default, @command{grep} prints the
|
|
matching lines. There are four major variants of @command{grep},
|
|
controlled by the following options.
|
|
|
|
@table @samp
|
|
|
|
@item -G
|
|
@itemx --basic-regexp
|
|
@opindex -G
|
|
@opindex --basic-regexp
|
|
@cindex matching basic regular expressions
|
|
Interpret the pattern as a basic regular expression. This is the default.
|
|
|
|
@item -E
|
|
@itemx --extended-regexp
|
|
@opindex -E
|
|
@opindex --extended-regexp
|
|
@cindex matching extended regular expressions
|
|
Interpret the pattern as an extended regular expression.
|
|
|
|
@item -F
|
|
@itemx --fixed-strings
|
|
@opindex -F
|
|
@opindex --fixed-strings
|
|
@cindex matching fixed strings
|
|
Interpret the pattern as a list of fixed strings, separated
|
|
by newlines, any of which is to be matched.
|
|
|
|
@item -P
|
|
@itemx --perl-regexp
|
|
@opindex -P
|
|
@opindex --perl-regexp
|
|
@cindex matching Perl regular expressions
|
|
Interpret the pattern as a Perl regular expression.
|
|
|
|
@end table
|
|
|
|
In addition, two variant programs @sc{egrep} and @sc{fgrep} are available.
|
|
@sc{egrep} is the same as @samp{grep -E}. @sc{fgrep} is the
|
|
same as @samp{grep -F}.
|
|
|
|
@node Regular Expressions
|
|
@chapter Regular Expressions
|
|
@cindex regular expressions
|
|
|
|
A @dfn{regular expression} is a pattern that describes a set of strings.
|
|
Regular expressions are constructed analogously to arithmetic expressions,
|
|
by using various operators to combine smaller expressions.
|
|
@command{grep} understands two different versions of regular expression
|
|
syntax: ``basic''(BRE) and ``extended''(ERE). In @sc{gnu} @command{grep},
|
|
there is no difference in available functionality using either syntax.
|
|
In other implementations, basic regular expressions are less powerful.
|
|
The following description applies to extended regular expressions;
|
|
differences for basic regular expressions are summarized afterwards.
|
|
|
|
The fundamental building blocks are the regular expressions that match
|
|
a single character. Most characters, including all letters and digits,
|
|
are regular expressions that match themselves. Any metacharacter
|
|
with special meaning may be quoted by preceding it with a backslash.
|
|
|
|
A regular expression may be followed by one of several
|
|
repetition operators:
|
|
|
|
@table @samp
|
|
|
|
@item .
|
|
@opindex .
|
|
@cindex dot
|
|
@cindex period
|
|
The period @samp{.} matches any single character.
|
|
|
|
@item ?
|
|
@opindex ?
|
|
@cindex question mark
|
|
@cindex match sub-expression at most once
|
|
The preceding item is optional and will be matched at most once.
|
|
|
|
@item *
|
|
@opindex *
|
|
@cindex asterisk
|
|
@cindex match sub-expression zero or more times
|
|
The preceding item will be matched zero or more times.
|
|
|
|
@item +
|
|
@opindex +
|
|
@cindex plus sign
|
|
The preceding item will be matched one or more times.
|
|
|
|
@item @{@var{n}@}
|
|
@opindex @{n@}
|
|
@cindex braces, one argument
|
|
@cindex match sub-expression n times
|
|
The preceding item is matched exactly @var{n} times.
|
|
|
|
@item @{@var{n},@}
|
|
@opindex @{n,@}
|
|
@cindex braces, second argument omitted
|
|
@cindex match sub-expression n or more times
|
|
The preceding item is matched n or more times.
|
|
|
|
@item @{@var{n},@var{m}@}
|
|
@opindex @{n,m@}
|
|
@cindex braces, two arguments
|
|
The preceding item is matched at least @var{n} times, but not more than
|
|
@var{m} times.
|
|
|
|
@end table
|
|
|
|
Two regular expressions may be concatenated; the resulting regular
|
|
expression matches any string formed by concatenating two substrings
|
|
that respectively match the concatenated subexpressions.
|
|
|
|
Two regular expressions may be joined by the infix operator @samp{|}; the
|
|
resulting regular expression matches any string matching either subexpression.
|
|
|
|
Repetition takes precedence over concatenation, which in turn
|
|
takes precedence over alternation. A whole subexpression may be
|
|
enclosed in parentheses to override these precedence rules.
|
|
|
|
@section Character Class
|
|
|
|
@cindex bracket expression
|
|
@cindex character class
|
|
A @dfn{bracket expression} is a list of characters enclosed by @samp{[} and
|
|
@samp{]}. It matches any single character in that list; if the first
|
|
character of the list is the caret @samp{^}, then it matches any character
|
|
@strong{not} in the list. For example, the regular expression
|
|
@samp{[0123456789]} matches any single digit.
|
|
|
|
@cindex range expression
|
|
Within a bracket expression, a @dfn{range expression} consists of two
|
|
characters separated by a hyphen. It matches any single character that
|
|
sorts between the two characters, inclusive, using the locale's
|
|
collating sequence and character set. For example, in the default C
|
|
locale, @samp{[a-d]} is equivalent to @samp{[abcd]}. Many locales sort
|
|
characters in dictionary order, and in these locales @samp{[a-d]} is
|
|
typically not equivalent to @samp{[abcd]}; it might be equivalent to
|
|
@samp{[aBbCcDd]}, for example. To obtain the traditional interpretation
|
|
of bracket expressions, you can use the C locale by setting the
|
|
@env{LC_ALL} environment variable to the value @samp{C}.
|
|
|
|
Finally, certain named classes of characters are predefined within
|
|
bracket expressions, as follows.
|
|
Their interpretation depends on the @code{LC_CTYPE} locale; the
|
|
interpretation below is that of the C locale, which is the default
|
|
if no @code{LC_CTYPE} locale is specified.
|
|
|
|
@cindex classes of characters
|
|
@cindex character classes
|
|
@table @samp
|
|
|
|
@item [:alnum:]
|
|
@opindex alnum
|
|
@cindex alphanumeric characters
|
|
Alphanumeric characters:
|
|
@samp{[:alpha:]} and @samp{[:digit:]}.
|
|
|
|
@item [:alpha:]
|
|
@opindex alpha
|
|
@cindex alphabetic characters
|
|
Alphabetic characters:
|
|
@samp{[:lower:]} and @samp{[:upper:]}.
|
|
|
|
@item [:blank:]
|
|
@opindex blank
|
|
@cindex blank characters
|
|
Blank characters:
|
|
space and tab.
|
|
|
|
@item [:cntrl:]
|
|
@opindex cntrl
|
|
@cindex control characters
|
|
Control characters. In @sc{ascii}, these characters have octal codes 000
|
|
through 037, and 177 (@code{DEL}). In other character sets, these are
|
|
the equivalent characters, if any.
|
|
|
|
@item [:digit:]
|
|
@opindex digit
|
|
@cindex digit characters
|
|
@cindex numeric characters
|
|
Digits: @code{0 1 2 3 4 5 6 7 8 9}.
|
|
|
|
@item [:graph:]
|
|
@opindex graph
|
|
@cindex graphic characters
|
|
Graphical characters:
|
|
@samp{[:alnum:]} and @samp{[:punct:]}.
|
|
|
|
@item [:lower:]
|
|
@opindex lower
|
|
@cindex lower-case letters
|
|
Lower-case letters:
|
|
@code{a b c d e f g h i j k l m n o p q r s t u v w x y z}.
|
|
|
|
@item [:print:]
|
|
@opindex print
|
|
@cindex printable characters
|
|
Printable characters:
|
|
@samp{[:alnum:]}, @samp{[:punct:]}, and space.
|
|
|
|
@item [:punct:]
|
|
@opindex punct
|
|
@cindex punctuation characters
|
|
Punctuation characters:
|
|
@code{!@: " # $ % & ' ( ) * + , - .@: / : ; < = > ?@: @@ [ \ ] ^ _ ` @{ | @} ~}.
|
|
|
|
@item [:space:]
|
|
@opindex space
|
|
@cindex space characters
|
|
@cindex whitespace characters
|
|
Space characters:
|
|
tab, newline, vertical tab, form feed, carriage return, and space.
|
|
|
|
@item [:upper:]
|
|
@opindex upper
|
|
@cindex upper-case letters
|
|
Upper-case letters:
|
|
@code{A B C D E F G H I J K L M N O P Q R S T U V W X Y Z}.
|
|
|
|
@item [:xdigit:]
|
|
@opindex xdigit
|
|
@cindex xdigit class
|
|
@cindex hexadecimal digits
|
|
Hexadecimal digits:
|
|
@code{0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f}.
|
|
|
|
@end table
|
|
For example, @samp{[[:alnum:]]} means @samp{[0-9A-Za-z]}, except the latter
|
|
depends upon the C locale and the @sc{ascii} character
|
|
encoding, whereas the former is independent of locale and character set.
|
|
(Note that the brackets in these class names are
|
|
part of the symbolic names, and must be included in addition to
|
|
the brackets delimiting the bracket list.)
|
|
|
|
Most metacharacters lose their special meaning inside lists.
|
|
|
|
@table @samp
|
|
@item ]
|
|
ends the list if it's not the first list item. So, if you want to make
|
|
the @samp{]} character a list item, you must put it first.
|
|
|
|
@item [.
|
|
represents the open collating symbol.
|
|
|
|
@item .]
|
|
represents the close collating symbol.
|
|
|
|
@item [=
|
|
represents the open equivalence class.
|
|
|
|
@item =]
|
|
represents the close equivalence class.
|
|
|
|
@item [:
|
|
represents the open character class followed by a valid character class name.
|
|
|
|
@item :]
|
|
represents the close character class followed by a valid character class name.
|
|
|
|
@item -
|
|
represents the range if it's not first or last in a list or the ending point
|
|
of a range.
|
|
|
|
@item ^
|
|
represents the characters not in the list. If you want to make the @samp{^}
|
|
character a list item, place it anywhere but first.
|
|
|
|
@end table
|
|
|
|
@section Backslash Character
|
|
@cindex backslash
|
|
|
|
The @samp{\} when followed by certain ordinary characters take a special
|
|
meaning :
|
|
|
|
@table @samp
|
|
|
|
@item @samp{\b}
|
|
Match the empty string at the edge of a word.
|
|
|
|
@item @samp{\B}
|
|
Match the empty string provided it's not at the edge of a word.
|
|
|
|
@item @samp{\<}
|
|
Match the empty string at the beginning of word.
|
|
|
|
@item @samp{\>}
|
|
Match the empty string at the end of word.
|
|
|
|
@item @samp{\w}
|
|
Match word constituent, it is a synonym for @samp{[[:alnum:]]}.
|
|
|
|
@item @samp{\W}
|
|
Match non word constituent, it is a synonym for @samp{[^[:alnum:]]}.
|
|
|
|
@end table
|
|
|
|
For example , @samp{\brat\b} matches the separate word @samp{rat},
|
|
@samp{c\Brat\Be} matches @samp{crate}, but @samp{dirty \Brat} doesn't
|
|
match @samp{dirty rat}.
|
|
|
|
@section Anchoring
|
|
@cindex anchoring
|
|
|
|
The caret @samp{^} and the dollar sign @samp{$} are metacharacters that
|
|
respectively match the empty string at the beginning and end of a line.
|
|
|
|
@section Back-reference
|
|
@cindex back-reference
|
|
|
|
The back-reference @samp{\@var{n}}, where @var{n} is a single digit, matches
|
|
the substring previously matched by the @var{n}th parenthesized subexpression
|
|
of the regular expression. For example, @samp{(a)\1} matches @samp{aa}.
|
|
When use with alternation if the group does not participate in the match, then
|
|
the back-reference makes the whole match fail. For example, @samp{a(.)|b\1}
|
|
will not match @samp{ba}. When multiple regular expressions are given with
|
|
@samp{-e} or from a file @samp{-f file}, the back-referecences are local to
|
|
each expression.
|
|
|
|
@section Basic vs Extended
|
|
@cindex basic regular expressions
|
|
|
|
In basic regular expressions the metacharacters @samp{?}, @samp{+},
|
|
@samp{@{}, @samp{|}, @samp{(}, and @samp{)} lose their special meaning;
|
|
instead use the backslashed versions @samp{\?}, @samp{\+}, @samp{\@{},
|
|
@samp{\|}, @samp{\(}, and @samp{\)}.
|
|
|
|
@cindex interval specifications
|
|
Traditional @command{egrep} did not support the @samp{@{} metacharacter,
|
|
and some @command{egrep} implementations support @samp{\@{} instead, so
|
|
portable scripts should avoid @samp{@{} in @samp{egrep} patterns and
|
|
should use @samp{[@{]} to match a literal @samp{@{}.
|
|
|
|
@sc{gnu} @command{egrep} attempts to support traditional usage by
|
|
assuming that @samp{@{} is not special if it would be the start of an
|
|
invalid interval specification. For example, the shell command
|
|
@samp{egrep '@{1'} searches for the two-character string @samp{@{1}
|
|
instead of reporting a syntax error in the regular expression.
|
|
@sc{posix.2} allows this behavior as an extension, but portable scripts
|
|
should avoid it.
|
|
|
|
@node Usage
|
|
@chapter Usage
|
|
|
|
@cindex Usage, examples
|
|
Here is an example shell command that invokes @sc{gnu} @command{grep}:
|
|
|
|
@example
|
|
grep -i 'hello.*world' menu.h main.c
|
|
@end example
|
|
|
|
@noindent
|
|
This lists all lines in the files @file{menu.h} and @file{main.c} that
|
|
contain the string @samp{hello} followed by the string @samp{world};
|
|
this is because @samp{.*} matches zero or more characters within a line.
|
|
@xref{Regular Expressions}. The @samp{-i} option causes @command{grep}
|
|
to ignore case, causing it to match the line @samp{Hello, world!}, which
|
|
it would not otherwise match. @xref{Invoking}, for more details about
|
|
how to invoke @command{grep}.
|
|
|
|
@cindex Using @command{grep}, Q&A
|
|
@cindex FAQ about @command{grep} usage
|
|
Here are some common questions and answers about @command{grep} usage.
|
|
|
|
@enumerate
|
|
|
|
@item
|
|
How can I list just the names of matching files?
|
|
|
|
@example
|
|
grep -l 'main' *.c
|
|
@end example
|
|
|
|
@noindent
|
|
lists the names of all C files in the current directory whose contents
|
|
mention @samp{main}.
|
|
|
|
@item
|
|
How do I search directories recursively?
|
|
|
|
@example
|
|
grep -r 'hello' /home/gigi
|
|
@end example
|
|
|
|
@noindent
|
|
searches for @samp{hello} in all files under the directory
|
|
@file{/home/gigi}. For more control of which files are searched, use
|
|
@command{find}, @command{grep} and @command{xargs}. For example,
|
|
the following command searches only C files:
|
|
|
|
@smallexample
|
|
find /home/gigi -name '*.c' -print | xargs grep 'hello' /dev/null
|
|
@end smallexample
|
|
|
|
This differs from the command:
|
|
|
|
@example
|
|
grep -r 'hello' *.c
|
|
@end example
|
|
|
|
which merely looks for @samp{hello} in all files in the current
|
|
directory whose names end in @samp{.c}. Here the @option{-r} is
|
|
probably unnecessary, as recursion occurs only in the unlikely event
|
|
that one of @samp{.c} files is a directory.
|
|
|
|
@item
|
|
What if a pattern has a leading @samp{-}?
|
|
|
|
@example
|
|
grep -e '--cut here--' *
|
|
@end example
|
|
|
|
@noindent
|
|
searches for all lines matching @samp{--cut here--}. Without @samp{-e},
|
|
@command{grep} would attempt to parse @samp{--cut here--} as a list of
|
|
options.
|
|
|
|
@item
|
|
Suppose I want to search for a whole word, not a part of a word?
|
|
|
|
@example
|
|
grep -w 'hello' *
|
|
@end example
|
|
|
|
@noindent
|
|
searches only for instances of @samp{hello} that are entire words; it
|
|
does not match @samp{Othello}. For more control, use @samp{\<} and
|
|
@samp{\>} to match the start and end of words. For example:
|
|
|
|
@example
|
|
grep 'hello\>' *
|
|
@end example
|
|
|
|
@noindent
|
|
searches only for words ending in @samp{hello}, so it matches the word
|
|
@samp{Othello}.
|
|
|
|
@item
|
|
How do I output context around the matching lines?
|
|
|
|
@example
|
|
grep -C 2 'hello' *
|
|
@end example
|
|
|
|
@noindent
|
|
prints two lines of context around each matching line.
|
|
|
|
@item
|
|
How do I force grep to print the name of the file?
|
|
|
|
Append @file{/dev/null}:
|
|
|
|
@example
|
|
grep 'eli' /etc/passwd /dev/null
|
|
@end example
|
|
|
|
gets you:
|
|
|
|
@smallexample
|
|
/etc/passwd:eli:DNGUTF58.IMe.:98:11:Eli Smith:/home/do/eli:/bin/bash
|
|
@end smallexample
|
|
|
|
@item
|
|
Why do people use strange regular expressions on @command{ps} output?
|
|
|
|
@example
|
|
ps -ef | grep '[c]ron'
|
|
@end example
|
|
|
|
If the pattern had been written without the square brackets, it would
|
|
have matched not only the @command{ps} output line for @command{cron},
|
|
but also the @command{ps} output line for @command{grep}.
|
|
Note that some platforms @command{ps} limit the ouput to the width
|
|
of the screen, grep does not have any limit on the length of a line
|
|
except the available memory.
|
|
|
|
@item
|
|
Why does @command{grep} report ``Binary file matches''?
|
|
|
|
If @command{grep} listed all matching ``lines'' from a binary file, it
|
|
would probably generate output that is not useful, and it might even
|
|
muck up your display. So @sc{gnu} @command{grep} suppresses output from
|
|
files that appear to be binary files. To force @sc{gnu} @command{grep}
|
|
to output lines even from files that appear to be binary, use the
|
|
@samp{-a} or @samp{--binary-files=text} option. To eliminate the
|
|
``Binary file matches'' messages, use the @samp{-I} or
|
|
@samp{--binary-files=without-match} option.
|
|
|
|
@item
|
|
Why doesn't @samp{grep -lv} print nonmatching file names?
|
|
|
|
@samp{grep -lv} lists the names of all files containing one or more
|
|
lines that do not match. To list the names of all files that contain no
|
|
matching lines, use the @samp{-L} or @samp{--files-without-match}
|
|
option.
|
|
|
|
@item
|
|
I can do @sc{or} with @samp{|}, but what about @sc{and}?
|
|
|
|
@example
|
|
grep 'paul' /etc/motd | grep 'franc,ois'
|
|
@end example
|
|
|
|
@noindent
|
|
finds all lines that contain both @samp{paul} and @samp{franc,ois}.
|
|
|
|
@item
|
|
How can I search in both standard input and in files?
|
|
|
|
Use the special file name @samp{-}:
|
|
|
|
@example
|
|
cat /etc/passwd | grep 'alain' - /etc/motd
|
|
@end example
|
|
|
|
@item
|
|
@cindex palindromes
|
|
How to express palindromes in a regular expression?
|
|
|
|
It can be done by using the back referecences, for example a palindrome
|
|
of 4 chararcters can be written in BRE.
|
|
|
|
@example
|
|
grep -w -e '\(.\)\(.\).\2\1' file
|
|
@end example
|
|
|
|
It matches the word "radar" or "civic".
|
|
|
|
Guglielmo Bondioni proposed a single RE that finds all the palindromes up to 19
|
|
characters long.
|
|
|
|
@example
|
|
egrep -e '^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?).?\9\8\7\6\5\4\3\2\1$' file
|
|
@end example
|
|
|
|
Note this is done by using GNU ERE extensions, it might not be portable on
|
|
other greps.
|
|
|
|
@item
|
|
Why are my expressions whith the vertical bar fail?
|
|
|
|
@example
|
|
/bin/echo "ba" | egrep '(a)\1|(b)\1'
|
|
@end example
|
|
|
|
The first alternate branch fails then the first group was not in the match
|
|
this will make the second alternate branch fails. For example, "aaba" will
|
|
match, the first group participate in the match and can be reuse in the
|
|
second branch.
|
|
|
|
@item
|
|
What do @command{grep, fgrep, egrep} stand for ?
|
|
|
|
grep comes from the way line editing was done on Unix. For example,
|
|
@command{ed} uses this syntax to print a list of matching lines on the screen.
|
|
|
|
@example
|
|
global/regular expression/print
|
|
g/re/p
|
|
@end example
|
|
|
|
@command{fgrep} stands for Fixed @command{grep}, @command{egrep} Extended
|
|
@command{grep}.
|
|
|
|
@end enumerate
|
|
|
|
@node Reporting Bugs, Copying, Usage, Top
|
|
@chapter Reporting bugs
|
|
|
|
@cindex Bugs, reporting
|
|
Email bug reports to @email{bug-gnu-utils@@gnu.org}.
|
|
Be sure to include the word ``grep'' somewhere in the ``Subject:'' field.
|
|
|
|
Large repetition counts in the @samp{@{n,m@}} construct may cause
|
|
@command{grep} to use lots of memory. In addition, certain other
|
|
obscure regular expressions require exponential time and
|
|
space, and may cause grep to run out of memory.
|
|
Back-references are very slow, and may require exponential time.
|
|
|
|
@node Copying, GNU General Public License, Reporting Bugs, Top
|
|
@chapter Copying
|
|
@cindex Copying
|
|
GNU grep is licensed under the GNU GPL, which makes it @dfn{free
|
|
software}.
|
|
|
|
Please note that ``free'' in ``free software'' refers to liberty, not
|
|
price. As some GNU project advocates like to point out, think of ``free
|
|
speech'' rather than ``free beer''. The exact and legally binding
|
|
distribution terms are spelled out below; in short, you have the right
|
|
(freedom) to run and change grep and distribute it to other people, and
|
|
even---if you want---charge money for doing either. The important
|
|
restriction is that you have to grant your recipients the same rights
|
|
and impose the same restrictions.
|
|
|
|
This method of licensing software is also known as @dfn{open source}
|
|
because, among other things, it makes sure that all recipients will
|
|
receive the source code along with the program, and be able to improve
|
|
it. The GNU project prefers the term ``free software'' for reasons
|
|
outlined at
|
|
@url{http://www.gnu.org/philosophy/free-software-for-freedom.html}.
|
|
|
|
The exact license terms are defined by this paragraph and the GNU
|
|
General Public License it refers to:
|
|
|
|
@quotation
|
|
GNU grep is free software; you can redistribute it and/or modify it
|
|
under the terms of the GNU General Public License as published by the
|
|
Free Software Foundation; either version 2 of the License, or (at your
|
|
option) any later version.
|
|
|
|
GNU grep is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
for more details.
|
|
|
|
A copy of the GNU General Public License is included as part of this
|
|
manual; if you did not receive it, write to the Free Software
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
@end quotation
|
|
|
|
In addition to this, this manual is free in the same sense:
|
|
|
|
@quotation
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.1 or
|
|
any later version published by the Free Software Foundation; with the
|
|
Invariant Sections being ``GNU General Public License'' and ``GNU Free
|
|
Documentation License'', with no Front-Cover Texts, and with no
|
|
Back-Cover Texts. A copy of the license is included in the section
|
|
entitled ``GNU Free Documentation License''.
|
|
@end quotation
|
|
|
|
@c #### Maybe we should wrap these licenses in ifinfo? Stallman says
|
|
@c that the GFDL needs to be present in the manual, and to me it would
|
|
@c suck to include the license for the manual and not the license for
|
|
@c the program.
|
|
|
|
The full texts of the GNU General Public License and of the GNU Free
|
|
Documentation License are available below.
|
|
|
|
@menu
|
|
* GNU General Public License:: GNU GPL
|
|
* GNU Free Documentation License:: GNU FDL
|
|
@end menu
|
|
|
|
@node GNU General Public License, GNU Free Documentation License, Copying, Copying
|
|
@section GNU General Public License
|
|
@center Version 2, June 1991
|
|
@cindex GPL, GNU General Public License
|
|
|
|
@display
|
|
Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
|
|
675 Mass Ave, Cambridge, MA 02139, USA
|
|
|
|
Everyone is permitted to copy and distribute verbatim copies
|
|
of this license document, but changing it is not allowed.
|
|
@end display
|
|
|
|
@unnumberedsec Preamble
|
|
|
|
The licenses for most software are designed to take away your
|
|
freedom to share and change it. By contrast, the GNU General Public
|
|
License is intended to guarantee your freedom to share and change free
|
|
software---to make sure the software is free for all its users. This
|
|
General Public License applies to most of the Free Software
|
|
Foundation's software and to any other program whose authors commit to
|
|
using it. (Some other Free Software Foundation software is covered by
|
|
the GNU Library General Public License instead.) You can apply it to
|
|
your programs, too.
|
|
|
|
When we speak of free software, we are referring to freedom, not
|
|
price. Our General Public Licenses are designed to make sure that you
|
|
have the freedom to distribute copies of free software (and charge for
|
|
this service if you wish), that you receive source code or can get it
|
|
if you want it, that you can change the software or use pieces of it
|
|
in new free programs; and that you know you can do these things.
|
|
|
|
To protect your rights, we need to make restrictions that forbid
|
|
anyone to deny you these rights or to ask you to surrender the rights.
|
|
These restrictions translate to certain responsibilities for you if you
|
|
distribute copies of the software, or if you modify it.
|
|
|
|
For example, if you distribute copies of such a program, whether
|
|
gratis or for a fee, you must give the recipients all the rights that
|
|
you have. You must make sure that they, too, receive or can get the
|
|
source code. And you must show them these terms so they know their
|
|
rights.
|
|
|
|
We protect your rights with two steps: (1) copyright the software, and
|
|
(2) offer you this license which gives you legal permission to copy,
|
|
distribute and/or modify the software.
|
|
|
|
Also, for each author's protection and ours, we want to make certain
|
|
that everyone understands that there is no warranty for this free
|
|
software. If the software is modified by someone else and passed on, we
|
|
want its recipients to know that what they have is not the original, so
|
|
that any problems introduced by others will not reflect on the original
|
|
authors' reputations.
|
|
|
|
Finally, any free program is threatened constantly by software
|
|
patents. We wish to avoid the danger that redistributors of a free
|
|
program will individually obtain patent licenses, in effect making the
|
|
program proprietary. To prevent this, we have made it clear that any
|
|
patent must be licensed for everyone's free use or not licensed at all.
|
|
|
|
The precise terms and conditions for copying, distribution and
|
|
modification follow.
|
|
|
|
@iftex
|
|
@unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
@end iftex
|
|
@ifinfo
|
|
@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
|
@end ifinfo
|
|
|
|
@enumerate
|
|
@item
|
|
This License applies to any program or other work which contains
|
|
a notice placed by the copyright holder saying it may be distributed
|
|
under the terms of this General Public License. The ``Program'', below,
|
|
refers to any such program or work, and a ``work based on the Program''
|
|
means either the Program or any derivative work under copyright law:
|
|
that is to say, a work containing the Program or a portion of it,
|
|
either verbatim or with modifications and/or translated into another
|
|
language. (Hereinafter, translation is included without limitation in
|
|
the term ``modification''.) Each licensee is addressed as ``you''.
|
|
|
|
Activities other than copying, distribution and modification are not
|
|
covered by this License; they are outside its scope. The act of
|
|
running the Program is not restricted, and the output from the Program
|
|
is covered only if its contents constitute a work based on the
|
|
Program (independent of having been made by running the Program).
|
|
Whether that is true depends on what the Program does.
|
|
|
|
@item
|
|
You may copy and distribute verbatim copies of the Program's
|
|
source code as you receive it, in any medium, provided that you
|
|
conspicuously and appropriately publish on each copy an appropriate
|
|
copyright notice and disclaimer of warranty; keep intact all the
|
|
notices that refer to this License and to the absence of any warranty;
|
|
and give any other recipients of the Program a copy of this License
|
|
along with the Program.
|
|
|
|
You may charge a fee for the physical act of transferring a copy, and
|
|
you may at your option offer warranty protection in exchange for a fee.
|
|
|
|
@item
|
|
You may modify your copy or copies of the Program or any portion
|
|
of it, thus forming a work based on the Program, and copy and
|
|
distribute such modifications or work under the terms of Section 1
|
|
above, provided that you also meet all of these conditions:
|
|
|
|
@enumerate a
|
|
@item
|
|
You must cause the modified files to carry prominent notices
|
|
stating that you changed the files and the date of any change.
|
|
|
|
@item
|
|
You must cause any work that you distribute or publish, that in
|
|
whole or in part contains or is derived from the Program or any
|
|
part thereof, to be licensed as a whole at no charge to all third
|
|
parties under the terms of this License.
|
|
|
|
@item
|
|
If the modified program normally reads commands interactively
|
|
when run, you must cause it, when started running for such
|
|
interactive use in the most ordinary way, to print or display an
|
|
announcement including an appropriate copyright notice and a
|
|
notice that there is no warranty (or else, saying that you provide
|
|
a warranty) and that users may redistribute the program under
|
|
these conditions, and telling the user how to view a copy of this
|
|
License. (Exception: if the Program itself is interactive but
|
|
does not normally print such an announcement, your work based on
|
|
the Program is not required to print an announcement.)
|
|
@end enumerate
|
|
|
|
These requirements apply to the modified work as a whole. If
|
|
identifiable sections of that work are not derived from the Program,
|
|
and can be reasonably considered independent and separate works in
|
|
themselves, then this License, and its terms, do not apply to those
|
|
sections when you distribute them as separate works. But when you
|
|
distribute the same sections as part of a whole which is a work based
|
|
on the Program, the distribution of the whole must be on the terms of
|
|
this License, whose permissions for other licensees extend to the
|
|
entire whole, and thus to each and every part regardless of who wrote it.
|
|
|
|
Thus, it is not the intent of this section to claim rights or contest
|
|
your rights to work written entirely by you; rather, the intent is to
|
|
exercise the right to control the distribution of derivative or
|
|
collective works based on the Program.
|
|
|
|
In addition, mere aggregation of another work not based on the Program
|
|
with the Program (or with a work based on the Program) on a volume of
|
|
a storage or distribution medium does not bring the other work under
|
|
the scope of this License.
|
|
|
|
@item
|
|
You may copy and distribute the Program (or a work based on it,
|
|
under Section 2) in object code or executable form under the terms of
|
|
Sections 1 and 2 above provided that you also do one of the following:
|
|
|
|
@enumerate a
|
|
@item
|
|
Accompany it with the complete corresponding machine-readable
|
|
source code, which must be distributed under the terms of Sections
|
|
1 and 2 above on a medium customarily used for software interchange; or,
|
|
|
|
@item
|
|
Accompany it with a written offer, valid for at least three
|
|
years, to give any third party, for a charge no more than your
|
|
cost of physically performing source distribution, a complete
|
|
machine-readable copy of the corresponding source code, to be
|
|
distributed under the terms of Sections 1 and 2 above on a medium
|
|
customarily used for software interchange; or,
|
|
|
|
@item
|
|
Accompany it with the information you received as to the offer
|
|
to distribute corresponding source code. (This alternative is
|
|
allowed only for noncommercial distribution and only if you
|
|
received the program in object code or executable form with such
|
|
an offer, in accord with Subsection b above.)
|
|
@end enumerate
|
|
|
|
The source code for a work means the preferred form of the work for
|
|
making modifications to it. For an executable work, complete source
|
|
code means all the source code for all modules it contains, plus any
|
|
associated interface definition files, plus the scripts used to
|
|
control compilation and installation of the executable. However, as a
|
|
special exception, the source code distributed need not include
|
|
anything that is normally distributed (in either source or binary
|
|
form) with the major components (compiler, kernel, and so on) of the
|
|
operating system on which the executable runs, unless that component
|
|
itself accompanies the executable.
|
|
|
|
If distribution of executable or object code is made by offering
|
|
access to copy from a designated place, then offering equivalent
|
|
access to copy the source code from the same place counts as
|
|
distribution of the source code, even though third parties are not
|
|
compelled to copy the source along with the object code.
|
|
|
|
@item
|
|
You may not copy, modify, sublicense, or distribute the Program
|
|
except as expressly provided under this License. Any attempt
|
|
otherwise to copy, modify, sublicense or distribute the Program is
|
|
void, and will automatically terminate your rights under this License.
|
|
However, parties who have received copies, or rights, from you under
|
|
this License will not have their licenses terminated so long as such
|
|
parties remain in full compliance.
|
|
|
|
@item
|
|
You are not required to accept this License, since you have not
|
|
signed it. However, nothing else grants you permission to modify or
|
|
distribute the Program or its derivative works. These actions are
|
|
prohibited by law if you do not accept this License. Therefore, by
|
|
modifying or distributing the Program (or any work based on the
|
|
Program), you indicate your acceptance of this License to do so, and
|
|
all its terms and conditions for copying, distributing or modifying
|
|
the Program or works based on it.
|
|
|
|
@item
|
|
Each time you redistribute the Program (or any work based on the
|
|
Program), the recipient automatically receives a license from the
|
|
original licensor to copy, distribute or modify the Program subject to
|
|
these terms and conditions. You may not impose any further
|
|
restrictions on the recipients' exercise of the rights granted herein.
|
|
You are not responsible for enforcing compliance by third parties to
|
|
this License.
|
|
|
|
@item
|
|
If, as a consequence of a court judgment or allegation of patent
|
|
infringement or for any other reason (not limited to patent issues),
|
|
conditions are imposed on you (whether by court order, agreement or
|
|
otherwise) that contradict the conditions of this License, they do not
|
|
excuse you from the conditions of this License. If you cannot
|
|
distribute so as to satisfy simultaneously your obligations under this
|
|
License and any other pertinent obligations, then as a consequence you
|
|
may not distribute the Program at all. For example, if a patent
|
|
license would not permit royalty-free redistribution of the Program by
|
|
all those who receive copies directly or indirectly through you, then
|
|
the only way you could satisfy both it and this License would be to
|
|
refrain entirely from distribution of the Program.
|
|
|
|
If any portion of this section is held invalid or unenforceable under
|
|
any particular circumstance, the balance of the section is intended to
|
|
apply and the section as a whole is intended to apply in other
|
|
circumstances.
|
|
|
|
It is not the purpose of this section to induce you to infringe any
|
|
patents or other property right claims or to contest validity of any
|
|
such claims; this section has the sole purpose of protecting the
|
|
integrity of the free software distribution system, which is
|
|
implemented by public license practices. Many people have made
|
|
generous contributions to the wide range of software distributed
|
|
through that system in reliance on consistent application of that
|
|
system; it is up to the author/donor to decide if he or she is willing
|
|
to distribute software through any other system and a licensee cannot
|
|
impose that choice.
|
|
|
|
This section is intended to make thoroughly clear what is believed to
|
|
be a consequence of the rest of this License.
|
|
|
|
@item
|
|
If the distribution and/or use of the Program is restricted in
|
|
certain countries either by patents or by copyrighted interfaces, the
|
|
original copyright holder who places the Program under this License
|
|
may add an explicit geographical distribution limitation excluding
|
|
those countries, so that distribution is permitted only in or among
|
|
countries not thus excluded. In such case, this License incorporates
|
|
the limitation as if written in the body of this License.
|
|
|
|
@item
|
|
The Free Software Foundation may publish revised and/or new versions
|
|
of the General Public License from time to time. Such new versions will
|
|
be similar in spirit to the present version, but may differ in detail to
|
|
address new problems or concerns.
|
|
|
|
Each version is given a distinguishing version number. If the Program
|
|
specifies a version number of this License which applies to it and ``any
|
|
later version'', you have the option of following the terms and conditions
|
|
either of that version or of any later version published by the Free
|
|
Software Foundation. If the Program does not specify a version number of
|
|
this License, you may choose any version ever published by the Free Software
|
|
Foundation.
|
|
|
|
@item
|
|
If you wish to incorporate parts of the Program into other free
|
|
programs whose distribution conditions are different, write to the author
|
|
to ask for permission. For software which is copyrighted by the Free
|
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
|
make exceptions for this. Our decision will be guided by the two goals
|
|
of preserving the free status of all derivatives of our free software and
|
|
of promoting the sharing and reuse of software generally.
|
|
|
|
@iftex
|
|
@heading NO WARRANTY
|
|
@end iftex
|
|
@ifinfo
|
|
@center NO WARRANTY
|
|
@end ifinfo
|
|
@cindex no warranty
|
|
|
|
@item
|
|
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
|
PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
|
REPAIR OR CORRECTION.
|
|
|
|
@item
|
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
|
POSSIBILITY OF SUCH DAMAGES.
|
|
@end enumerate
|
|
|
|
@iftex
|
|
@heading END OF TERMS AND CONDITIONS
|
|
@end iftex
|
|
@ifinfo
|
|
@center END OF TERMS AND CONDITIONS
|
|
@end ifinfo
|
|
|
|
@page
|
|
@unnumberedsec How to Apply These Terms to Your New Programs
|
|
|
|
If you develop a new program, and you want it to be of the greatest
|
|
possible use to the public, the best way to achieve this is to make it
|
|
free software which everyone can redistribute and change under these terms.
|
|
|
|
To do so, attach the following notices to the program. It is safest
|
|
to attach them to the start of each source file to most effectively
|
|
convey the exclusion of warranty; and each file should have at least
|
|
the ``copyright'' line and a pointer to where the full notice is found.
|
|
|
|
@smallexample
|
|
@var{one line to give the program's name and an idea of what it does.}
|
|
Copyright (C) 19@var{yy} @var{name of author}
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License
|
|
as published by the Free Software Foundation; either version 2
|
|
of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
@end smallexample
|
|
|
|
Also add information on how to contact you by electronic and paper mail.
|
|
|
|
If the program is interactive, make it output a short notice like this
|
|
when it starts in an interactive mode:
|
|
|
|
@smallexample
|
|
Gnomovision version 69, Copyright (C) 19@var{yy} @var{name of author}
|
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
|
|
type `show w'. This is free software, and you are welcome
|
|
to redistribute it under certain conditions; type `show c'
|
|
for details.
|
|
@end smallexample
|
|
|
|
The hypothetical commands @samp{show w} and @samp{show c} should show
|
|
the appropriate parts of the General Public License. Of course, the
|
|
commands you use may be called something other than @samp{show w} and
|
|
@samp{show c}; they could even be mouse-clicks or menu items---whatever
|
|
suits your program.
|
|
|
|
You should also get your employer (if you work as a programmer) or your
|
|
school, if any, to sign a ``copyright disclaimer'' for the program, if
|
|
necessary. Here is a sample; alter the names:
|
|
|
|
@smallexample
|
|
@group
|
|
Yoyodyne, Inc., hereby disclaims all copyright
|
|
interest in the program `Gnomovision'
|
|
(which makes passes at compilers) written
|
|
by James Hacker.
|
|
|
|
@var{signature of Ty Coon}, 1 April 1989
|
|
Ty Coon, President of Vice
|
|
@end group
|
|
@end smallexample
|
|
|
|
This General Public License does not permit incorporating your program into
|
|
proprietary programs. If your program is a subroutine library, you may
|
|
consider it more useful to permit linking proprietary applications with the
|
|
library. If this is what you want to do, use the GNU Library General
|
|
Public License instead of this License.
|
|
|
|
@node GNU Free Documentation License, Concept Index, GNU General Public License, Copying
|
|
@section GNU Free Documentation License
|
|
@center Version 1.1, March 2000
|
|
@cindex FDL, GNU Free Documentation License
|
|
|
|
@display
|
|
Copyright (C) 2000 Free Software Foundation, Inc.
|
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
Everyone is permitted to copy and distribute verbatim copies
|
|
of this license document, but changing it is not allowed.
|
|
@end display
|
|
@sp 1
|
|
@enumerate 0
|
|
@item
|
|
PREAMBLE
|
|
|
|
The purpose of this License is to make a manual, textbook, or other
|
|
written document ``free'' in the sense of freedom: to assure everyone
|
|
the effective freedom to copy and redistribute it, with or without
|
|
modifying it, either commercially or noncommercially. Secondarily,
|
|
this License preserves for the author and publisher a way to get
|
|
credit for their work, while not being considered responsible for
|
|
modifications made by others.
|
|
|
|
This License is a kind of ``copyleft'', which means that derivative
|
|
works of the document must themselves be free in the same sense. It
|
|
complements the GNU General Public License, which is a copyleft
|
|
license designed for free software.
|
|
|
|
We have designed this License in order to use it for manuals for free
|
|
software, because free software needs free documentation: a free
|
|
program should come with manuals providing the same freedoms that the
|
|
software does. But this License is not limited to software manuals;
|
|
it can be used for any textual work, regardless of subject matter or
|
|
whether it is published as a printed book. We recommend this License
|
|
principally for works whose purpose is instruction or reference.
|
|
|
|
@sp 1
|
|
@item
|
|
APPLICABILITY AND DEFINITIONS
|
|
|
|
This License applies to any manual or other work that contains a
|
|
notice placed by the copyright holder saying it can be distributed
|
|
under the terms of this License. The ``Document'', below, refers to any
|
|
such manual or work. Any member of the public is a licensee, and is
|
|
addressed as ``you''.
|
|
|
|
A ``Modified Version'' of the Document means any work containing the
|
|
Document or a portion of it, either copied verbatim, or with
|
|
modifications and/or translated into another language.
|
|
|
|
A ``Secondary Section'' is a named appendix or a front-matter section of
|
|
the Document that deals exclusively with the relationship of the
|
|
publishers or authors of the Document to the Document's overall subject
|
|
(or to related matters) and contains nothing that could fall directly
|
|
within that overall subject. (For example, if the Document is in part a
|
|
textbook of mathematics, a Secondary Section may not explain any
|
|
mathematics.) The relationship could be a matter of historical
|
|
connection with the subject or with related matters, or of legal,
|
|
commercial, philosophical, ethical or political position regarding
|
|
them.
|
|
|
|
The ``Invariant Sections'' are certain Secondary Sections whose titles
|
|
are designated, as being those of Invariant Sections, in the notice
|
|
that says that the Document is released under this License.
|
|
|
|
The ``Cover Texts'' are certain short passages of text that are listed,
|
|
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
|
the Document is released under this License.
|
|
|
|
A ``Transparent'' copy of the Document means a machine-readable copy,
|
|
represented in a format whose specification is available to the
|
|
general public, whose contents can be viewed and edited directly and
|
|
straightforwardly with generic text editors or (for images composed of
|
|
pixels) generic paint programs or (for drawings) some widely available
|
|
drawing editor, and that is suitable for input to text formatters or
|
|
for automatic translation to a variety of formats suitable for input
|
|
to text formatters. A copy made in an otherwise Transparent file
|
|
format whose markup has been designed to thwart or discourage
|
|
subsequent modification by readers is not Transparent. A copy that is
|
|
not ``Transparent'' is called ``Opaque''.
|
|
|
|
Examples of suitable formats for Transparent copies include plain
|
|
ASCII without markup, Texinfo input format, LaTeX input format, SGML
|
|
or XML using a publicly available DTD, and standard-conforming simple
|
|
HTML designed for human modification. Opaque formats include
|
|
PostScript, PDF, proprietary formats that can be read and edited only
|
|
by proprietary word processors, SGML or XML for which the DTD and/or
|
|
processing tools are not generally available, and the
|
|
machine-generated HTML produced by some word processors for output
|
|
purposes only.
|
|
|
|
The ``Title Page'' means, for a printed book, the title page itself,
|
|
plus such following pages as are needed to hold, legibly, the material
|
|
this License requires to appear in the title page. For works in
|
|
formats which do not have any title page as such, ``Title Page'' means
|
|
the text near the most prominent appearance of the work's title,
|
|
preceding the beginning of the body of the text.
|
|
@sp 1
|
|
@item
|
|
VERBATIM COPYING
|
|
|
|
You may copy and distribute the Document in any medium, either
|
|
commercially or noncommercially, provided that this License, the
|
|
copyright notices, and the license notice saying this License applies
|
|
to the Document are reproduced in all copies, and that you add no other
|
|
conditions whatsoever to those of this License. You may not use
|
|
technical measures to obstruct or control the reading or further
|
|
copying of the copies you make or distribute. However, you may accept
|
|
compensation in exchange for copies. If you distribute a large enough
|
|
number of copies you must also follow the conditions in section 3.
|
|
|
|
You may also lend copies, under the same conditions stated above, and
|
|
you may publicly display copies.
|
|
@sp 1
|
|
@item
|
|
COPYING IN QUANTITY
|
|
|
|
If you publish printed copies of the Document numbering more than 100,
|
|
and the Document's license notice requires Cover Texts, you must enclose
|
|
the copies in covers that carry, clearly and legibly, all these Cover
|
|
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
|
|
the back cover. Both covers must also clearly and legibly identify
|
|
you as the publisher of these copies. The front cover must present
|
|
the full title with all words of the title equally prominent and
|
|
visible. You may add other material on the covers in addition.
|
|
Copying with changes limited to the covers, as long as they preserve
|
|
the title of the Document and satisfy these conditions, can be treated
|
|
as verbatim copying in other respects.
|
|
|
|
If the required texts for either cover are too voluminous to fit
|
|
legibly, you should put the first ones listed (as many as fit
|
|
reasonably) on the actual cover, and continue the rest onto adjacent
|
|
pages.
|
|
|
|
If you publish or distribute Opaque copies of the Document numbering
|
|
more than 100, you must either include a machine-readable Transparent
|
|
copy along with each Opaque copy, or state in or with each Opaque copy
|
|
a publicly-accessible computer-network location containing a complete
|
|
Transparent copy of the Document, free of added material, which the
|
|
general network-using public has access to download anonymously at no
|
|
charge using public-standard network protocols. If you use the latter
|
|
option, you must take reasonably prudent steps, when you begin
|
|
distribution of Opaque copies in quantity, to ensure that this
|
|
Transparent copy will remain thus accessible at the stated location
|
|
until at least one year after the last time you distribute an Opaque
|
|
copy (directly or through your agents or retailers) of that edition to
|
|
the public.
|
|
|
|
It is requested, but not required, that you contact the authors of the
|
|
Document well before redistributing any large number of copies, to give
|
|
them a chance to provide you with an updated version of the Document.
|
|
@sp 1
|
|
@item
|
|
MODIFICATIONS
|
|
|
|
You may copy and distribute a Modified Version of the Document under
|
|
the conditions of sections 2 and 3 above, provided that you release
|
|
the Modified Version under precisely this License, with the Modified
|
|
Version filling the role of the Document, thus licensing distribution
|
|
and modification of the Modified Version to whoever possesses a copy
|
|
of it. In addition, you must do these things in the Modified Version:
|
|
|
|
A. Use in the Title Page (and on the covers, if any) a title distinct
|
|
from that of the Document, and from those of previous versions
|
|
(which should, if there were any, be listed in the History section
|
|
of the Document). You may use the same title as a previous version
|
|
if the original publisher of that version gives permission.@*
|
|
B. List on the Title Page, as authors, one or more persons or entities
|
|
responsible for authorship of the modifications in the Modified
|
|
Version, together with at least five of the principal authors of the
|
|
Document (all of its principal authors, if it has less than five).@*
|
|
C. State on the Title page the name of the publisher of the
|
|
Modified Version, as the publisher.@*
|
|
D. Preserve all the copyright notices of the Document.@*
|
|
E. Add an appropriate copyright notice for your modifications
|
|
adjacent to the other copyright notices.@*
|
|
F. Include, immediately after the copyright notices, a license notice
|
|
giving the public permission to use the Modified Version under the
|
|
terms of this License, in the form shown in the Addendum below.@*
|
|
G. Preserve in that license notice the full lists of Invariant Sections
|
|
and required Cover Texts given in the Document's license notice.@*
|
|
H. Include an unaltered copy of this License.@*
|
|
I. Preserve the section entitled ``History'', and its title, and add to
|
|
it an item stating at least the title, year, new authors, and
|
|
publisher of the Modified Version as given on the Title Page. If
|
|
there is no section entitled ``History'' in the Document, create one
|
|
stating the title, year, authors, and publisher of the Document as
|
|
given on its Title Page, then add an item describing the Modified
|
|
Version as stated in the previous sentence.@*
|
|
J. Preserve the network location, if any, given in the Document for
|
|
public access to a Transparent copy of the Document, and likewise
|
|
the network locations given in the Document for previous versions
|
|
it was based on. These may be placed in the ``History'' section.
|
|
You may omit a network location for a work that was published at
|
|
least four years before the Document itself, or if the original
|
|
publisher of the version it refers to gives permission.@*
|
|
K. In any section entitled ``Acknowledgements'' or ``Dedications'',
|
|
preserve the section's title, and preserve in the section all the
|
|
substance and tone of each of the contributor acknowledgements
|
|
and/or dedications given therein.@*
|
|
L. Preserve all the Invariant Sections of the Document,
|
|
unaltered in their text and in their titles. Section numbers
|
|
or the equivalent are not considered part of the section titles.@*
|
|
M. Delete any section entitled ``Endorsements''. Such a section
|
|
may not be included in the Modified Version.@*
|
|
N. Do not retitle any existing section as ``Endorsements''
|
|
or to conflict in title with any Invariant Section.@*
|
|
@sp 1
|
|
If the Modified Version includes new front-matter sections or
|
|
appendices that qualify as Secondary Sections and contain no material
|
|
copied from the Document, you may at your option designate some or all
|
|
of these sections as invariant. To do this, add their titles to the
|
|
list of Invariant Sections in the Modified Version's license notice.
|
|
These titles must be distinct from any other section titles.
|
|
|
|
You may add a section entitled ``Endorsements'', provided it contains
|
|
nothing but endorsements of your Modified Version by various
|
|
parties--for example, statements of peer review or that the text has
|
|
been approved by an organization as the authoritative definition of a
|
|
standard.
|
|
|
|
You may add a passage of up to five words as a Front-Cover Text, and a
|
|
passage of up to 25 words as a Back-Cover Text, to the end of the list
|
|
of Cover Texts in the Modified Version. Only one passage of
|
|
Front-Cover Text and one of Back-Cover Text may be added by (or
|
|
through arrangements made by) any one entity. If the Document already
|
|
includes a cover text for the same cover, previously added by you or
|
|
by arrangement made by the same entity you are acting on behalf of,
|
|
you may not add another; but you may replace the old one, on explicit
|
|
permission from the previous publisher that added the old one.
|
|
|
|
The author(s) and publisher(s) of the Document do not by this License
|
|
give permission to use their names for publicity for or to assert or
|
|
imply endorsement of any Modified Version.
|
|
@sp 1
|
|
@item
|
|
COMBINING DOCUMENTS
|
|
|
|
You may combine the Document with other documents released under this
|
|
License, under the terms defined in section 4 above for modified
|
|
versions, provided that you include in the combination all of the
|
|
Invariant Sections of all of the original documents, unmodified, and
|
|
list them all as Invariant Sections of your combined work in its
|
|
license notice.
|
|
|
|
The combined work need only contain one copy of this License, and
|
|
multiple identical Invariant Sections may be replaced with a single
|
|
copy. If there are multiple Invariant Sections with the same name but
|
|
different contents, make the title of each such section unique by
|
|
adding at the end of it, in parentheses, the name of the original
|
|
author or publisher of that section if known, or else a unique number.
|
|
Make the same adjustment to the section titles in the list of
|
|
Invariant Sections in the license notice of the combined work.
|
|
|
|
In the combination, you must combine any sections entitled ``History''
|
|
in the various original documents, forming one section entitled
|
|
``History''; likewise combine any sections entitled ``Acknowledgements'',
|
|
and any sections entitled ``Dedications''. You must delete all sections
|
|
entitled ``Endorsements.''
|
|
@sp 1
|
|
@item
|
|
COLLECTIONS OF DOCUMENTS
|
|
|
|
You may make a collection consisting of the Document and other documents
|
|
released under this License, and replace the individual copies of this
|
|
License in the various documents with a single copy that is included in
|
|
the collection, provided that you follow the rules of this License for
|
|
verbatim copying of each of the documents in all other respects.
|
|
|
|
You may extract a single document from such a collection, and distribute
|
|
it individually under this License, provided you insert a copy of this
|
|
License into the extracted document, and follow this License in all
|
|
other respects regarding verbatim copying of that document.
|
|
@sp 1
|
|
@item
|
|
AGGREGATION WITH INDEPENDENT WORKS
|
|
|
|
A compilation of the Document or its derivatives with other separate
|
|
and independent documents or works, in or on a volume of a storage or
|
|
distribution medium, does not as a whole count as a Modified Version
|
|
of the Document, provided no compilation copyright is claimed for the
|
|
compilation. Such a compilation is called an ``aggregate'', and this
|
|
License does not apply to the other self-contained works thus compiled
|
|
with the Document, on account of their being thus compiled, if they
|
|
are not themselves derivative works of the Document.
|
|
|
|
If the Cover Text requirement of section 3 is applicable to these
|
|
copies of the Document, then if the Document is less than one quarter
|
|
of the entire aggregate, the Document's Cover Texts may be placed on
|
|
covers that surround only the Document within the aggregate.
|
|
Otherwise they must appear on covers around the whole aggregate.
|
|
@sp 1
|
|
@item
|
|
TRANSLATION
|
|
|
|
Translation is considered a kind of modification, so you may
|
|
distribute translations of the Document under the terms of section 4.
|
|
Replacing Invariant Sections with translations requires special
|
|
permission from their copyright holders, but you may include
|
|
translations of some or all Invariant Sections in addition to the
|
|
original versions of these Invariant Sections. You may include a
|
|
translation of this License provided that you also include the
|
|
original English version of this License. In case of a disagreement
|
|
between the translation and the original English version of this
|
|
License, the original English version will prevail.
|
|
@sp 1
|
|
@item
|
|
TERMINATION
|
|
|
|
You may not copy, modify, sublicense, or distribute the Document except
|
|
as expressly provided for under this License. Any other attempt to
|
|
copy, modify, sublicense or distribute the Document is void, and will
|
|
automatically terminate your rights under this License. However,
|
|
parties who have received copies, or rights, from you under this
|
|
License will not have their licenses terminated so long as such
|
|
parties remain in full compliance.
|
|
@sp 1
|
|
@item
|
|
FUTURE REVISIONS OF THIS LICENSE
|
|
|
|
The Free Software Foundation may publish new, revised versions
|
|
of the GNU Free Documentation License from time to time. Such new
|
|
versions will be similar in spirit to the present version, but may
|
|
differ in detail to address new problems or concerns. See
|
|
http://www.gnu.org/copyleft/.
|
|
|
|
Each version of the License is given a distinguishing version number.
|
|
If the Document specifies that a particular numbered version of this
|
|
License ``or any later version'' applies to it, you have the option of
|
|
following the terms and conditions either of that specified version or
|
|
of any later version that has been published (not as a draft) by the
|
|
Free Software Foundation. If the Document does not specify a version
|
|
number of this License, you may choose any version ever published (not
|
|
as a draft) by the Free Software Foundation.
|
|
|
|
@end enumerate
|
|
|
|
@unnumberedsec ADDENDUM: How to use this License for your documents
|
|
|
|
To use this License in a document you have written, include a copy of
|
|
the License in the document and put the following copyright and
|
|
license notices just after the title page:
|
|
|
|
@smallexample
|
|
@group
|
|
|
|
Copyright (C) @var{year} @var{your name}.
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.1
|
|
or any later version published by the Free Software Foundation;
|
|
with the Invariant Sections being @var{list their titles}, with the
|
|
Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}.
|
|
A copy of the license is included in the section entitled ``GNU
|
|
Free Documentation License''.
|
|
@end group
|
|
@end smallexample
|
|
If you have no Invariant Sections, write ``with no Invariant Sections''
|
|
instead of saying which ones are invariant. If you have no
|
|
Front-Cover Texts, write ``no Front-Cover Texts'' instead of
|
|
``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts.
|
|
|
|
If your document contains nontrivial examples of program code, we
|
|
recommend releasing these examples in parallel under your choice of
|
|
free software license, such as the GNU General Public License,
|
|
to permit their use in free software.
|
|
|
|
@page
|
|
@node Concept Index, Index, GNU Free Documentation License, Top
|
|
@unnumbered Concept Index
|
|
|
|
This is a general index of all issues discussed in this manual, with the
|
|
exception of the @command{grep} commands and command-line options.
|
|
|
|
@printindex cp
|
|
|
|
@page
|
|
@node Index,, Concept Index, Top
|
|
@unnumbered Index
|
|
|
|
This is an alphabetical list of all @command{grep} commands, command-line
|
|
options, and environment variables.
|
|
|
|
@printindex fn
|
|
|
|
@contents
|
|
@bye
|