1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
|
fold(P) fold(P)
NAME
fold - filter for folding lines
SYNOPSIS
fold [-bs][-w width][file...]
DESCRIPTION
The fold utility is a filter that shall fold lines from
its input files, breaking the lines to have a maximum of
width column positions (or bytes, if the -b option is
specified). Lines shall be broken by the insertion of a
<newline> such that each output line (referred to later
in this section as a segment) is the maximum width pos-
sible that does not exceed the specified number of col-
umn positions (or bytes). A line shall not be broken in
the middle of a character. The behavior is undefined if
width is less than the number of columns any single
character in the input would occupy.
If the <carriage-return>s, <backspace>s, or <tab>s are
encountered in the input, and the -b option is not spec-
ified, they shall be treated specially:
<backspace>
The current count of line width shall be decre-
mented by one, although the count never shall
become negative. The fold utility shall not
insert a <newline> immediately before or after
any <backspace>.
<carriage-return>
The current count of line width shall be set to
zero. The fold utility shall not insert a <new-
line> immediately before or after any <carriage-
return>.
<tab> Each <tab> encountered shall advance the column
position pointer to the next tab stop. Tab stops
shall be at each column position n such that n
modulo 8 equals 1.
OPTIONS
The fold utility shall conform to the Base Definitions
volume of IEEE Std 1003.1-2001, Section 12.2, Utility
Syntax Guidelines.
The following options shall be supported:
-b Count width in bytes rather than column posi-
tions.
-s If a segment of a line contains a <blank> within
the first width column positions (or bytes),
break the line after the last such <blank> meet-
ing the width constraints. If there is no <blank>
meeting the requirements, the -s option shall
have no effect for that output segment of the
input line.
-w width
Specify the maximum line length, in column posi-
tions (or bytes if -b is specified). The results
are unspecified if width is not a positive deci-
mal number. The default value shall be 80.
OPERANDS
The following operand shall be supported:
file A pathname of a text file to be folded. If no
file operands are specified, the standard input
shall be used.
STDIN
The standard input shall be used only if no file oper-
ands are specified. See the INPUT FILES section.
INPUT FILES
If the -b option is specified, the input files shall be
text files except that the lines are not limited to
{LINE_MAX} bytes in length. If the -b option is not
specified, the input files shall be text files.
ENVIRONMENT VARIABLES
The following environment variables shall affect the
execution of fold:
LANG Provide a default value for the internationaliza-
tion variables that are unset or null. (See the
Base Definitions volume of IEEE Std 1003.1-2001,
Section 8.2, Internationalization Variables for
the precedence of internationalization variables
used to determine the values of locale cate-
gories.)
LC_ALL If set to a non-empty string value, override the
values of all the other internationalization
variables.
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 for the determination of the width in column
positions each character would occupy on a con-
stant-width font output device.
LC_MESSAGES
Determine the locale that should be used to
affect the format and contents of diagnostic mes-
sages written to standard error.
NLSPATH
Determine the location of message catalogs for
the processing of LC_MESSAGES .
ASYNCHRONOUS EVENTS
Default.
STDOUT
The standard output shall be a file containing a
sequence of characters whose order shall be preserved
from the input files, possibly with inserted <newline>s.
STDERR
The standard error shall be used only for diagnostic
messages.
OUTPUT FILES
None.
EXTENDED DESCRIPTION
None.
EXIT STATUS
The following exit values shall be returned:
0 All input files were processed successfully.
>0 An error occurred.
CONSEQUENCES OF ERRORS
Default.
The following sections are informative.
APPLICATION USAGE
The cut and fold utilities can be used to create text
files out of files with arbitrary line lengths. The cut
utility should be used when the number of lines (or
records) needs to remain constant. The fold utility
should be used when the contents of long lines need to
be kept contiguous.
The fold utility is frequently used to send text files
to printers that truncate, rather than fold, lines wider
than the printer is able to print (usually 80 or 132
column positions).
EXAMPLES
An example invocation that submits a file of possibly
long lines to the printer (under the assumption that the
user knows the line width of the printer to be assigned
by lp):
fold -w 132 bigfile | lp
RATIONALE
Although terminal input in canonical processing mode
requires the erase character (frequently set to
<backspace>) to erase the previous character (not byte
or column position), terminal output is not buffered and
is extremely difficult, if not impossible, to parse cor-
rectly; the interpretation depends entirely on the phys-
ical device that actually displays/prints/stores the
output. In all known internationalized implementations,
the utilities producing output for mixed column-width
output assume that a <backspace> backs up one column
position and outputs enough <backspace>s to return to
the start of the character when <backspace> is used to
provide local line motions to support underlining and
emboldening operations. Since fold without the -b option
is dealing with these same constraints, <backspace> is
always treated as backing up one column position rather
than backing up one character.
Historical versions of the fold utility assumed 1 byte
was one character and occupied one column position when
written out. This is no longer always true. Since the
most common usage of fold is believed to be folding long
lines for output to limited-length output devices, this
capability was preserved as the default case. The -b
option was added so that applications could fold files
with arbitrary length lines into text files that could
then be processed by the standard utilities. Note that
although the width for the -b option is in bytes, a line
is never split in the middle of a character. (It is
unspecified what happens if a width is specified that is
too small to hold a single character found in the input
followed by a <newline>.)
The tab stops are hardcoded to be every eighth column to
meet historical practice. No new method of specifying
other tab stops was invented.
FUTURE DIRECTIONS
None.
SEE ALSO
cut
COPYRIGHT
Portions of this text are reprinted and reproduced in
electronic form from IEEE Std 1003.1, 2003 Edition,
Standard for Information Technology -- Portable Operat-
ing System Interface (POSIX), The Open Group Base Speci-
fications Issue 6, Copyright (C) 2001-2003 by the Insti-
tute of Electrical and Electronics Engineers, Inc and
The Open Group. In the event of any discrepancy between
this version and the original IEEE and The Open Group
Standard, the original IEEE and The Open Group Standard
is the referee document. The original Standard can be
obtained online at http://www.open-
group.org/unix/online.html .
POSIX 2003 fold(P)
|