NAME
more — display
files on a page-by-page basis
SYNOPSIS
DESCRIPTION
The more utility shall read files and
either write them to the terminal on a page-by-page basis or filter them to
standard output. If standard output is not a terminal device, all input
files shall be copied to standard output in their entirety, without
modification, except as specified for the -s option.
If standard output is a terminal device, the files shall be written a number
of lines (one screenful) at a time under the control of user commands. See
the EXTENDED DESCRIPTION section.
Certain block-mode terminals do not have all the capabilities
necessary to support the complete more definition;
they are incapable of accepting commands that are not terminated with a
<newline>. Implementations that support such terminals shall provide
an operating mode to more in which all commands can
be terminated with a <newline> on those terminals. This mode:
- Shall be documented in the system documentation
- Shall, at invocation, inform the user of the terminal deficiency that requires the <newline> usage and provide instructions on how this warning can be suppressed in future invocations
- Shall not be required for implementations supporting only fully capable terminals
- Shall not affect commands already requiring <newline> characters
- Shall not affect users on the capable terminals from using
moreas described in this volume of POSIX.1-2008
OPTIONS
The more utility shall conform to XBD
V1_chap12(7) , except that
‘+’ may be recognized as an option
delimiter as well as ‘-’ .
The following options shall be supported:
-c- If a screen is to be written that has no lines in common with the current
screen, or
moreis writing its first screen,moreshall not scroll the screen, but instead shall redraw each line of the screen in turn, from the top of the screen to the bottom. In addition, ifmoreis writing its first screen, the screen shall be cleared. This option may be silently ignored on devices with insufficient terminal capabilities. -e- By default,
moreshall exit immediately after writing the last line of the last file in the argument list. If the-eoption is specified:- If there is only a single file in the argument list and that file was
completely displayed on a single screen,
moreshall exit immediately after writing the last line of that file. - Otherwise,
moreshall exit only after reaching end-of-file on the last file in the argument list twice without an intervening operation. See the EXTENDED DESCRIPTION section.
- If there is only a single file in the argument list and that file was
completely displayed on a single screen,
-i- Perform pattern matching in searches without regard to case; see XBD Regular Expression General Requirements .
- -n number
- Specify the number of lines per screenful. The number argument is a
positive decimal integer. The
-noption shall override any values obtained from any other source. - -p command
- Each time a screen from a new file is displayed or redisplayed (including
as a result of
morecommands; for example, :p ), execute themorecommand(s) in the command arguments in the order specified, as if entered by the user after the first screen has been displayed. No intermediate results shall be displayed (that is, if the command is a movement to a screen different from the normal first screen, only the screen resulting from the command shall be displayed.) If any of the commands fail for any reason, an informational message to this effect shall be written, and no further commands specified using the-poption shall be executed for this file. -s- Behave as if consecutive empty lines were a single empty line.
- -t tagstring
- Write the screenful of the file containing the tag named by the tagstring
argument. See the ctags utility. The tags feature
represented by
-ttagstring and the :t command is optional. It shall be provided on any system that also provides a conforming implementation of ctags ; otherwise, the use of-tproduces undefined results.The filename resulting from the
-toption shall be logically added as a prefix to the list of command line files, as if specified by the user. If the tag named by the tagstring argument is not found, it shall be an error, andmoreshall take no further action.If the tag specifies a line number, the first line of the display shall contain the beginning of that line. If the tag specifies a pattern, the first line of the display shall contain the beginning of the matching text from the first line of the file that contains that pattern. If the line does not exist in the file or matching text is not found, an informational message to this effect shall be displayed, and
moreshall display the default screen as if-thad not been specified.If both the
-ttagstring and-pcommand options are given, the-ttagstring shall be processed first; that is, the file and starting line for the display shall be as specified by-t, and then the-pmorecommand shall be executed. If the line (matching text) specified by the-tcommand does not exist (is not found), no-pmorecommand shall be executed for this file at any time. -u- Treat a <backspace> as a printable control character, displayed as an implementation-defined character sequence (see the EXTENDED DESCRIPTION section), suppressing backspacing and the special handling that produces underlined or standout mode text on some terminal types. Also, do not ignore a <carriage-return> at the end of a line.
OPERANDS
The following operand shall be supported:
- file
- A pathname of an input file. If no file operands are specified, the standard input shall be used. If a file is '-' , the standard input shall be read at that point in the sequence.
STDIN
The standard input shall be used only if no file
operands are specified, or if a file operand is
‘-’ .
INPUT FILES
The input files being examined shall be text files. If standard
output is a terminal, standard error shall be used to read commands from the
user. If standard output is a terminal, standard error is not readable, and
command input is needed, more may attempt to obtain
user commands from the controlling terminal (for example,
/dev/tty);
otherwise, more shall terminate with an error
indicating that it was unable to read user commands. If standard output is
not a terminal, no error shall result if standard error cannot be opened for
reading.
ENVIRONMENT VARIABLES
The following environment variables shall affect the execution of
more:
COLUMNS- Override the system-selected horizontal display line size. See XBD Environment Variables for valid values and results when it is unset or null.
EDITOR- Used by the v command to select an editor. See the EXTENDED DESCRIPTION section.
LANG- Provide a default value for the internationalization variables that are unset or null. (See XBD Internationalization Variables for the precedence of internationalization variables used to determine the values of locale categories.)
LC_ALL- If set to a non-empty string value, override the values of all the other internationalization variables.
LC_COLLATE-
Determine the locale for the behavior of ranges, equivalence classes, and multi-character collating elements within regular expressions. LC_CTYPE- Determine the locale for the interpretation of sequences of bytes of text data as characters (for example, single-byte as opposed to multi-byte characters in arguments and input files) and the behavior of character classes within regular expressions.
LC_MESSAGES-
Determine the locale that should be used to affect the format and contents of diagnostic messages written to standard error and informative messages written to standard output. NLSPATH- [
XSI] Determine the location of message catalogs for the processing of LC_MESSAGES . LINES- Override the system-selected vertical screen size, used as the number of
lines in a screenful. See XBD Environment Variables for
valid values and results when it is unset or null. The
-noption shall take precedence over theLINESvariable for determining the number of lines in a screenful. MORE- Determine a string containing options described in the OPTIONS section
preceded with <hyphen> characters and <blank>-separated as on
the command line. Any command line options shall be processed after those
in the
MOREvariable, as if the command line were:more $MORE options operands
The
MOREvariable shall take precedence over theTERMandLINESvariables for determining the number of lines in a screenful. TERM- Determine the name of the terminal type. If this variable is unset or null, an unspecified default terminal type is used.
ASYNCHRONOUS EVENTS
Default.
STDOUT
The standard output shall be used to write the contents of the input files.
STDERR
The standard error shall be used for diagnostic messages and user commands (see the INPUT FILES section), and, if standard output is a terminal device, to write a prompting string. The prompting string shall appear on the screen line below the last line of the file displayed in the current screenful. The prompt shall contain the name of the file currently being examined and shall contain an end-of-file indication and the name of the next file, if any, when prompting at the end-of-file. If an error or informational message is displayed, it is unspecified whether it is contained in the prompt. If it is not contained in the prompt, it shall be displayed and then the user shall be prompted for a continuation character, at which point another message or the user prompt may be displayed. The prompt is otherwise unspecified. It is unspecified whether informational messages are written for other user commands.
OUTPUT FILES
None.
EXTENDED DESCRIPTION
The following section describes the behavior of
more when the standard output is a terminal device.
If the standard output is not a terminal device, no options other than
-s shall have any effect, and all input files shall
be copied to standard output otherwise unmodified, at which time
more shall exit without further action.
The number of lines available per screen shall be determined by
the -n option, if present, or by examining values in
the environment (see the ENVIRONMENT VARIABLES section). If neither method
yields a number, an unspecified number of lines shall be used.
The maximum number of lines written shall be one less than this number, because the screen line after the last line written shall be used to write a user prompt and user input. If the number of lines in the screen is less than two, the results are undefined. It is unspecified whether user input is permitted to be longer than the remainder of the single line where the prompt has been written.
The number of columns available per line shall be determined by examining values in the environment (see the ENVIRONMENT VARIABLES section), with a default value as described in XBD V1_chap08(7) .
Lines that are longer than the display shall be folded; the length at which folding occurs is unspecified, but should be appropriate for the output device. Folding may occur between glyphs of single characters that take up multiple display columns.
When standard output is a terminal and -u
is not specified, more shall treat <backspace>
and <carriage-return> characters specially:
- A character, followed first by a sequence of n
<backspace> characters (where n is the same as the
number of column positions that the character occupies), then by
n <underscore> characters (
‘
_’ ), shall cause that character to be written as underlined text, if the terminal type supports that. The n <underscore> characters, followed first by n <backspace> characters, then any character with n column positions, shall also cause that character to be written as underlined text, if the terminal type supports that. - A sequence of n <backspace> characters (where
n is the same as the number of column positions that the
previous character occupies) that appears between two identical printable
characters shall cause the first of those two characters to be written as
emboldened text (that is, visually brighter, standout mode, or
inverse-video mode), if the terminal type supports that, and the second to
be discarded. Immediately subsequent occurrences of <backspace>/
character pairs for that same character shall also be discarded. (For
example, the sequence
"a\ba\ba\ba"is interpreted as a single emboldened ‘a’ .) - The
moreutility shall logically discard all other <backspace> characters from the line as well as the character which precedes them, if any. - A <carriage-return> at the end of a line shall be ignored, rather than being written as a non-printable character, as described in the next paragraph.
It is implementation-defined how other non-printable characters are written. Implementations should use the same format that they use for the ex(1) print command; see the OPTIONS section within the ed(1) utility. It is unspecified whether a multi-column character shall be separated if it crosses a display line boundary; it shall not be discarded. The behavior is unspecified if the number of columns on the display is less than the number of columns any single character in the line being displayed would occupy.
When each new file is displayed (or redisplayed),
more shall write the first screen of the file. Once
the initial screen has been written, more shall
prompt for a user command. If the execution of the user command results in a
screen that has lines in common with the current screen, and the device has
sufficient terminal capabilities, more shall scroll
the screen; otherwise, it is unspecified whether the screen is scrolled or
redrawn.
For all files but the last (including standard input if no file
was specified, and for the last file as well, if the
-e option was not specified), when
more has written the last line in the file,
more shall prompt for a user command. This prompt
shall contain the name of the next file as well as an indication that
more has reached end-of-file. If the user command is
f, <control>-F, <space>, j,
<newline>, d, <control>-D, or
s, more shall display the next
file. Otherwise, if displaying the last file, more
shall exit. Otherwise, more shall execute the user
command specified.
Several of the commands described in this section display a previous screen from the input stream. In the case that text is being taken from a non-rewindable stream, such as a pipe, it is implementation-defined how much backwards motion is supported. If a command cannot be executed because of a limitation on backwards motion, an error message to this effect shall be displayed, the current screen shall not change, and the user shall be prompted for another command.
If a command cannot be performed because there are
insufficient lines to display, more shall alert the
terminal. If a command cannot be performed because there are insufficient
lines to display or a /
command fails: if the input is the standard input, the last screen in the
file may be displayed; otherwise, the current file and screen shall not
change, and the user shall be prompted for another command.
The interactive commands in the following sections shall be
supported. Some commands can be preceded by a decimal integer, called
count in the following descriptions. If not specified with
the command, count shall default to 1. In the following
descriptions, pattern is a basic regular expression, as
described in XBD V1_chap09(7) . The term
"examine" is historical usage meaning "open the file for
viewing''; for example, more foo
would be expressed as examining file foo.
In the following descriptions, unless otherwise
specified, line is a
line in the more display, not a line from the file
being examined.
In the following descriptions, the current position refers to two things:
- The position of the current line on the screen
- The line number (in the file) of the current line on the screen
Usually, the line on the screen corresponding to the current position is the third line on the screen. If this is not possible (there are fewer than three lines to display or this is the first page of the file, or it is the last page of the file), then the current position is either the first or last line on the screen as described later.
Help
Write a summary of these commands and other implementation-defined
commands. The behavior shall be as if the more
utility were executed with the -e option on a file
that contained the summary information. The user shall be prompted as
described earlier in this section when end-of-file is reached. If the user
command is one of those specified to continue to the next file,
more shall return to the file and screen state from
which the h command was executed.
Scroll Forward One Screenful
- Synopsis:
-
[count]f [count]<control>-F
Scroll forward count lines, with a default of one screenful. If count is more than the screen size, only the final screenful shall be written.
Scroll Backward One Screenful
- Synopsis:
-
[count]b [count]<control>-B
Scroll backward count lines, with a default of
one screenful (see the -n option). If
count is more than the screen size, only the final
screenful shall be written.
Scroll Forward One Line
- Synopsis:
-
[count]<space> [count]j [count]<newline>
Scroll forward count lines. The default count for the <space> shall be one screenful; for j and <newline>, one line. The entire count lines shall be written, even if count is more than the screen size.
Scroll Backward One Line
- Synopsis:
-
[count]k
Scroll backward count lines. The entire count lines shall be written, even if count is more than the screen size.
Scroll Forward One Half Screenful
- Synopsis:
-
[count]d [count]<control>-D
Scroll forward count lines, with a default of one half of the screen size. If count is specified, it shall become the new default for subsequent d, <control>-D, and u commands.
Skip Forward One Line
- Synopsis:
-
[count]s
Display the screenful beginning with the line count lines after the last line on the current screen. If count would cause the current position to be such that less than one screenful would be written, the last screenful in the file shall be written.
Scroll Backward One Half Screenful
- Synopsis:
-
[count]u [count]<control>-U
Scroll backward count lines, with a default of one half of the screen size. If count is specified, it shall become the new default for subsequent d, <control>-D, u, and <control>-U commands. The entire count lines shall be written, even if count is more than the screen size.
Go to Beginning of File
- Synopsis:
-
[count]g
Display the screenful beginning with line count.
Go to End-of-File
- Synopsis:
-
[count]G
If count is specified, display the screenful beginning with the line count. Otherwise, display the last screenful of the file.
Refresh the Screen
- Synopsis:
-
r <control>-L
Refresh the screen.
Discard and Refresh
Refresh the screen, discarding any buffered input. If the current file is non-seekable, buffered input shall not be discarded and the R command shall be equivalent to the r command.
Mark Position
- Synopsis:
-
mletter
Mark the current position with the letter named by letter, where letter represents the name of one of the lowercase letters of the portable character set. When a new file is examined, all marks may be lost.
Return to Mark
- Synopsis:
-
'letter
Return to the position that was previously marked with the letter named by letter, making that line the current position.
Return to Previous Position
- Synopsis:
-
''
Return to the position from which the last large movement command was executed (where a "large movement" is defined as any movement of more than a screenful of lines). If no such movements have been made, return to the beginning of the file.
Search Forward for Pattern
- Synopsis:
-
[count]/[!]pattern<newline>
Display the screenful beginning with the count
th line containing the pattern. The search shall start after the first line
currently displayed. The null regular expression (
‘/’ followed by a <newline>)
shall repeat the search using the previous regular expression, with a
default count. If the character
‘’! is included, the matching lines
shall be those that do not contain the pattern. If no
match is found for the pattern, a message to that effect
shall be displayed.
Search Backward for Pattern
- Synopsis:
-
[count]?[!]pattern<newline>
Display the screenful beginning with the count
th previous line containing the pattern. The search shall start on the last
line before the first line currently displayed. The null regular expression
( ‘’? followed by a <newline>)
shall repeat the search using the previous regular expression, with a
default count. If the character
‘’! is included, matching lines shall
be those that do not contain the pattern. If no match is
found for the pattern, a message to that effect shall be
displayed.
Repeat Search
- Synopsis:
-
[count]n
Repeat the previous search for count th line
containing the last pattern (or not containing the last
pattern, if the previous search was
"/!" or
"?!" ).
Repeat Search in Reverse
- Synopsis:
-
[count]N
Repeat the search in the opposite direction of the previous search
for the count th line containing the last
pattern (or not containing the last
pattern, if the previous search was
"/!" or
"?!" ).
Examine New File
- Synopsis:
-
:e [filename]<newline>
Examine a new file. If the filename argument is
not specified, the current file (see the :n and
:p commands below) shall be re-examined. The
filename shall be subjected to the process of shell word
expansions (see wordexp(3) ); if more than a single
pathname results, the effects are unspecified. If filename
is a <number-sign> ( ‘#’ ), the
previously examined file shall be re-examined. If filename
is not accessible for any reason (including that it is a non-seekable file),
an error message to this effect shall be displayed and the current file and
screen shall not change.
Examine Next File
- Synopsis:
-
[count]:n
Examine the next file. If a number count is specified, the count th next file shall be examined. If filename refers to a non-seekable file, the results are unspecified.
Examine Previous File
- Synopsis:
-
[count]:p
Examine the previous file. If a number count is specified, the count th previous file shall be examined. If filename refers to a non-seekable file, the results are unspecified.
Go to Tag
- Synopsis:
-
:t tagstring<newline>
If the file containing the tag named by the
tagstring argument is not the current file, examine the
file, as if the :e command was executed with that file as
the argument. Otherwise, or in addition, display the screenful beginning
with the tag, as described for the -t option (see
the OPTIONS section). If the ctags(1) utility is not
supported by the system, the use of
:t produces undefined
results.
Invoke Editor
Invoke an editor to edit the current file being examined. If
standard input is being examined, the results are unspecified. The name of
the editor shall be taken from the environment variable EDITOR
, or shall default to vi(1). If the last pathname
component in EDITOR is either vi(1) or
ex(1), the editor shall be invoked with a
-c linenumber command line
argument, where linenumber is the line number of the file
line containing the display line currently displayed as the first line of
the screen. It is implementation-defined whether line-setting options are
passed to editors other than vi(1) and
ex(1).
When the editor exits, more shall resume
with the same file and screen as when the editor was invoked.
Display Position
- Synopsis:
-
= <control>-G
Write a message for which the information references the first
byte of the line after the last line of the file on the screen. This message
shall include the name of the file currently being examined, its number
relative to the total number of files there are to examine, the line number
in the file, the byte number and the total bytes in the file, and what
percentage of the file precedes the current position. If
more is reading from standard input, or the file is
shorter than a single screen, the line number, the byte number, the total
bytes, and the percentage need not be written.
Quit
- Synopsis:
-
q :q ZZ
Exit more.
EXIT STATUS
The following exit values shall be returned:
CONSEQUENCES OF ERRORS
If an error is encountered accessing a file when using the
:n command, more shall attempt to
examine the next file in the argument list, but the final exit status shall
be affected. If an error is encountered accessing a file via the
:p command, more shall attempt to
examine the previous file in the argument list, but the final exit status
shall be affected. If an error is encountered accessing a file via the
:e command, more shall remain in
the current file and the final exit status shall not be affected.
APPLICATION USAGE
When the standard output is not a terminal, only the
-s filter-modification option is effective. This is
based on historical practice. For example, a typical implementation of
man(1) pipes its output through
more -s to squeeze excess
white space for terminal users. When man(1) is piped to
lp(1), however, it is undesirable for this squeezing to
happen.
EXAMPLES
The -p allows arbitrary commands to be
executed at the start of each file. Examples are:
- more -p G file1 file2
-
Examine each file starting with its last screenful. - more -p 100 file1 file2
-
Examine each file starting with line 100 in the current position (usually the third line, so line 98 would be the first line written). - more -p /100 file1 file2
-
Examine each file starting with the first line containing the string "100" in the current position
RATIONALE
The more utility, available in BSD and
BSD-derived systems, was chosen as the prototype for the POSIX file display
program since it is more widely available than either the public-domain
program less or than pg, a pager
provided in System V. The 4.4 BSD more is the model
for the features selected; it is almost fully upwards-compatible from the
4.3 BSD version in wide use and has become more amenable for
vi(1) users. Several features originally derived from
various file editors, found in both less and
pg, have been added to this volume of POSIX.1-2008 as they
have proved extremely popular with users.
There are inconsistencies between
more and vi(1) that result from
historical practice. For example, the single-character commands
h, f,
b, and <space>
are screen movers in more, but cursor movers in
vi(1). These inconsistencies were maintained because the
cursor movements are not applicable to more and the
powerful functionality achieved without the use of the control key justifies
the differences.
The tags interface has been included in a program that is not a
text editor because it promotes another degree of consistent operation with
vi(1). It is conceivable that the paging environment of
more would be superior for browsing source code
files in some circumstances.
The operating mode referred to for block-mode terminals
effectively adds a <newline> to each Synopsis line that currently has
none. So, for example, d <newline> would page one
screenful. The mode could be triggered by a command line option, environment
variable, or some other method. The details are not imposed by this volume
of POSIX.1-2008 because there are so few systems known to support such
terminals. Nevertheless, it was considered that all systems should be able
to support more given the exception cited for this
small community of terminals because, in comparison to
vi(1), the cursor movements are few and the command set
relatively amenable to the optional <newline> characters.
Some versions of more provide a shell
escaping mechanism similar to the ex(1) ! command. The
standard developers did not consider that this was necessary in a paginator,
particularly given the wide acceptance of multiple window terminals and job
control features. (They chose to retain such features in the editors and
mailx(1) because the shell interaction also gives an
opportunity to modify the editing buffer, which is not applicable to
more.)
The -p (position) option replaces the
+ command because of the Utility Syntax Guidelines. The
+ command option is no longer specified
by POSIX.1-2008 but may be present in some implementations. In early
proposals, it took a pattern argument, but historical
less provided the more general
facility of a command. It would have been desirable to use the same
-c as ex(1) and
vi(1), but the letter was already in use.
The text stating "from a non-rewindable stream ... implementations may limit the amount of backwards motion supported" would allow an implementation that permitted no backwards motion beyond text already on the screen. It was not possible to require a minimum amount of backwards motion that would be effective for all conceivable device types. The implementation should allow the user to back up as far as possible, within device and reasonable memory allocation constraints.
Historically, non-printable characters were displayed using the ARPA standard mappings, which are as follows:
- Printable characters are left alone.
- Control characters less than \177 are represented as followed by the
character offset from the ‘
@’ character in the ASCII map; for example, \007 is represented as ‘G’ . - \177 is represented as followed by
‘
’? .
The display of characters having their eighth bit set was less
standard. Existing implementations use hex (0x00), octal (\000), and a
meta-bit display. (The latter displayed characters with their eighth bit set
as the two characters "M-" , followed by
the seven-bit display as described previously.) The latter probably has the
best claim to historical practice because it was used with the
-v option of 4 BSD and 4 BSD-derived versions of the
cat(1) utility since 1980.
No specific display format is required by POSIX.1-2008. Implementations are encouraged to conform to historic practice in the absence of any strong reason to diverge.
FUTURE DIRECTIONS
None.
SEE ALSO
Shell Command Language , ctags(1) , ed(1) , ex(1) , vi(1)
XBD V1_chap08(7) , V1_chap09(7) , V1_chap09(7) , V1_chap12(7)
CHANGE HISTORY
First released in Issue 4.
Issue 5
The FUTURE DIRECTIONS section is added.
Issue 6
This utility is marked as part of the User Portability Utilities option.
The obsolescent SYNOPSIS is removed.
The utility has been extensively reworked for alignment with the IEEE P1003.2b draft standard:
- Changes have been made as a result of IEEE PASC Interpretations 1003.2 #37 and #109.
- The
moreutility should be able to handle underlined and emboldened displays of characters that are wider than a single column position.
Issue 7
Austin Group Interpretation 1003.1-2001 #027 is applied,
clarifying that ‘+’ may be recognized
as an option delimiter in the OPTIONS section.
SD5-XCU-ERN-97 is applied, updating the SYNOPSIS.