4 .TH PICK %manext1% "%nmhdate%" MH.6.8 [%nmhversion%]
6 pick \- select messages by content
49 .RB [ \-public " | " \-nopublic ]
50 .RB [ \-zero " | " \-nozero ]
51 .RB [ \-list " | " \-nolist ]
60 scan\0`pick\0\-from\0jones`
61 pick\0\-to\0holloway\0\-sequence\0select
62 show\0`pick\0\-before\0friday`
68 searches within a folder for messages with the specified
69 contents, and then identifies those messages. Two types of search
70 primitives are available: pattern matching and date constraint
75 is used to perform the matching, so the
76 full regular expression (see
84 is used directly, and with the others, the grep pattern constructed is:
87 `component[ \\t]*:\&.*pattern'
90 This means that the pattern specified for a
93 everywhere in the message, including the header and the body, while
94 the other pattern matching requests are limited to the single specified
95 component. The expression
98 `\-\|\-component\ pattern'
101 is a shorthand for specifying
104 `\-search `component[ \\t]*:\&.*pattern'\ '
107 It is used to pick a component which is not one of `To:',
108 `Cc:', `Date:', `From:', or `Subject:'.
110 .RB ` "pick\0\-\|\-reply\-to\0pooh" '.
112 Pattern matching is performed on a per\-line basis. Within the header
113 of the message, each component is treated as one long line, but in the
114 body, each line is separate. Lower\-case letters in the search pattern
115 will match either lower or upper case in the message, while upper case
116 will match only upper case.
120 switch is a pattern matching operation (as
121 described above), to find messages sent on a certain date the pattern
122 string must match the text of the `Date:' field of the message.
124 Independent of any pattern matching operations requested, the switches
130 may also be used to introduce date/time
131 constraints on all of the messages. By default, the `Date:'
132 field is consulted, but if another date yielding field (such as
133 `BB\-Posted:' or `Delivery\-Date:') should be used, the
143 will actually parse the date
144 fields in each of the messages specified in `msgs' and compare them
145 to the date/time specified. If
147 is given, then only those
148 messages whose `Date:' field value is chronologically after the
149 date specified will be considered. The
152 complimentary action.
158 switches take legal 822\-style date
159 specifications as arguments.
161 will default certain missing
162 fields so that the entire date need not be specified. These fields
163 are (in order of defaulting): timezone, time and timezone, date, date
164 and timezone. All defaults are taken from the current date, time,
167 In addition to 822\-style dates,
169 will also recognize any of
170 the days of the week (`sunday', `monday', and so on),
171 and the special dates `today', `yesterday' (24 hours
172 ago), and `tomorrow' (24 hours from now). All days of the
173 week are judged to refer to a day in the past (e.g., telling \fIpick\fR
174 `saturday' on a `tuesday' means `last\ saturday'
175 not `this\ saturday').
176 Further more, dates in a simplified ISO 8601/RFC 3339 style (e.g.
177 `YYYY-MM-DD' or `YYYY-MM-DD hh:mm:ss') are accepted.
178 Finally, in addition to these special specifications,
181 also honor a date specification of the form `\-\fIddd\fR', which means
182 `\fIddd\fR days ago'.
191 identifies the messages of the last thirty days.
194 supports complex boolean operations on the searching primitives
208 pick\0\-after\0yesterday\0\-and
209 \-lbrace\0\-from\0freida\0\-or\0\-from\0fear\0\-rbrace
213 identifies messages recently sent by `frieda' or `fear'.
215 The matching primitives take precedence over the
217 switch, which in turn takes precedence over
219 which in turn takes precedence
222 To override the default precedence, the
226 switches are provided, which act just like opening and closing
227 parentheses in logical expressions.
229 If no search criteria are given, all the messages specified on the
230 command line are selected (this defaults to `all').
232 Once the search has been performed, if the
235 message numbers of the selected messages are written to the standard
236 output separated by newlines. This is
239 quickly generating arguments for other
241 programs by using the
242 `backquoting' syntax of the shell. For example, the command
245 scan\0`pick\0+todo\0\-after\0`31 Mar 83 0123 PST'`
250 those messages in the indicated folder which meet the
251 appropriate criterion. Note that since
254 are written out prior to
256 invocation, you need not give
257 the folder argument to
264 switch may be given once for each sequence the user wishes to define.
265 For each sequence named, that sequence will be defined to mean exactly
266 those messages selected by
271 pick\0\-from\0frated\0\-seq\0fred
274 defines a new message sequence for the current folder called
275 `fred' which contains exactly those messages that were selected.
279 will zero the sequence before adding it. This
280 action can be disabled with the
282 switch, which means that the
285 will be added to the sequence, if it
286 already exists, and any messages already a part of that sequence will
303 .ta \w'%etcdir%/ExtraBigFileName 'u
304 ^$HOME/.mmh/profile~^The user profile
307 .SH "PROFILE COMPONENTS"
311 .ta \w'ExtraBigProfileName 'u
312 ^Path:~^To determine the user's mail storage
313 ^Current\-Folder:~^To find the default current folder
321 .RB ` +folder "' defaults to the current folder"
322 .RB ` msgs "' defaults to all"
323 .RB ` "\-datefield date" '
325 .RB ` \-list "' is the default if no `\-sequence', `\-nolist' otherwise"
329 If a folder is given, it will become the current folder.
332 In previous versions of
341 the selected messages. This was rather
342 `inverted logic' from the UNIX point of view, so
344 was changed to define sequences and output those sequences. Hence,
346 can be used to generate the arguments for all other
348 commands, instead of giving
350 endless switches for invoking those commands
353 Also, previous versions of
355 balked if you didn't specify
356 a search string or a date/time constraint. The current version does
357 not, and merely matches the messages you specify. This lets you type
361 show\0`pick\0l:20\0\-seq\0fear`
368 mark\0\-add\0\-nozero\0\-seq\0fear\0l:20
373 Finally, timezones used to be ignored when comparing dates: they aren't
378 .RB ` "pick sequence \-list" '
379 to enumerate the messages in a sequence
380 (such as for use by a shell script).
385 must occur prior to the
389 switch it applies to.
393 is used in a back\-quoted operation, such as
396 scan\0`pick\0\-from\0jones`
401 selects no messages (e.g., no messages are from
402 `jones'), then the shell will still run the outer command (e.g.,
404 Since no messages were matched,
407 no output, and the argument given to the outer command as a result of
410 is empty. In the case of
413 the outer command now acts as if the default `msg' or `msgs' should be
414 used (e.g., `all' in the case of
417 unexpected behavior, if
419 was given, and if its standard output is not a tty, then
421 outputs the illegal message number `0'
422 when it fails. This lets the outer command fail gracefully as well.
424 The pattern syntax `[l-r]' is not supported; each letter to be
425 matched must be included within the square brackets.