Added test of -nosequence to test-pick.
[mmh] / docs / historical / mh-6.8.5 / doc / pick.me
1 .\"     This file is automatically generated.  Do not edit!
2 .\" @(#)$Id: pick.rf,v 1.9 1992/10/27 00:03:47 jromine Exp $
3 .SC PICK 1
4 .NA
5 pick \- select messages by content
6 .SY
7 .ie t \{\
8 .ta .4i 1.8i
9 .nf
10 .in .5i
11 ^pick~^^\0\-cc~^ \%[+folder] \%[msgs] \%[\-help]
12 ^^^\0\-date~^ \%[\-before\ date] \%[\-after\ date] \%[\-datefield\ field]
13 ^^^\0\-from~^
14 ^^^\s+2\b'\(lt\(bv\(bv\(lk\(bv\(bv\(lb'\s0\-search~\s+2\b'\(rt\(bv\(bv\(rk\(bv\(bv\(rb'\s0^ pattern \%[\-and\ ...] \%[\-or\ ...] \%[\-not\ ...] \%[\-lbrace\ ...\ \-rbrace]
15 ^^^\0\-subject~^
16 ^^^\0\-to~^ \%[\-sequence\ name\ ...] \%[\-public] \%[\-nopublic] \%[\-zero] \%[\-nozero]
17 ^^^\0\-\|\-component~^ \%[\-list] \%[\-nolist]
18 .fi
19 .re
20 .in 1i
21 .\}
22 .el \{\
23 .ti .5i
24 pick
25 \%[+folder] \%[msgs]
26 \%[\-and\ ...] \%[\-or\ ...] \%[\-not\ ...] \%[\-lbrace\ ...\ \-rbrace]
27 \%[\-\|\-component\ pattern]
28 \%[\-cc\ pattern]
29 \%[\-date\ pattern]
30 \%[\-from\ pattern]
31 \%[\-search\ pattern]
32 \%[\-subject\ pattern]
33 \%[\-to\ pattern]
34 \%[\-after\ date] \%[\-before\ date] \%[\-datefield\ field]
35 \%[\-sequence\ name\ ...]
36 \%[\-public] \%[\-nopublic]
37 \%[\-zero] \%[\-nozero]
38 \%[\-list] \%[\-nolist]
39 \%[\-help]
40 .\}
41
42 .ti .5i
43 typically:
44 .br
45 scan\0`pick\0\-from\0jones`
46 .br
47 pick\0\-to\0holloway\0\-sequence\0select
48 .br
49 show\0`pick\0\-before\0friday`
50 .DE
51 \fIPick\fR searches messages within a folder for the specified
52 contents, and then identifies those messages.
53 Two types of search primitives are available:
54 pattern matching and date constraint operations.
55
56 A modified \fIgrep\fR(1) is used to perform the matching, so the
57 full regular expression (see \fIed\fR(1)) facility is available
58 within `pattern'.
59 With `\-search', `pattern' is used directly,
60 and with the others, the grep pattern constructed is:
61
62 .ti +.5i
63 \*(lqcomponent[ \\t]*:\&.*pattern\*(rq
64
65 This means that the pattern specified for a `\-search' will be
66 found everywhere in the message, including the header and the body,
67 while the other pattern matching requests are limited to the single
68 specified component.
69 The expression
70
71 .ti +.5i
72 `\-\|\-component\ pattern'
73
74 is a shorthand for specifying
75
76 .ti +.5i
77 `\-search \*(lqcomponent[ \\t]*:\&.*pattern\*(rq\ '
78
79 It is used to pick a component which is not one of
80 \*(lqTo:\*(rq, \*(lqcc:\*(rq, \*(lqDate:\*(rq, \*(lqFrom:\*(rq,
81 or \*(lqSubject:\*(rq.
82 An example is `pick\0\-\|\-reply\-to\0pooh'.
83
84 Pattern matching is performed on a per\-line basis.
85 Within the header of
86 the message, each component is treated as one long line, but in
87 the body, each line is separate.
88 Lower\-case letters in the
89 search pattern will match either lower or upper case in the
90 message, while upper case will match only upper case.
91
92 Note that since the `\-date' switch is a pattern matching operation (as 
93 described above),
94 to find messages sent on a certain date
95 the pattern string must match the text of the
96 \*(lqDate:\*(rq field of the message.
97
98 Independent of any pattern matching operations requested,
99 the switches `\-after date' or `\-before date' may also be used
100 to introduce date/time contraints on all of the messages.
101 By default, the \*(lqDate:\*(rq field is consulted,
102 but if another date yielding field
103 (such as \*(lqBB\-Posted:\*(rq or \*(lqDelivery\-Date:\*(rq) should be used,
104 the `\-datefield\ field' switch may be used.
105
106 With `\-before' and `\-after',
107 \fIpick\fR will actually parse the date fields in each of the messages
108 specified in `msgs'
109 and compare them to the date/time specified.
110 If `\-after' is given,
111 then only those messages whose \*(lqDate:\*(rq field value
112 is chronologically after
113 the date specified will be considered.
114 The `\-before' switch specifies the complimentary action.
115
116 Both the `\-after' and `\-before' switches take legal 822\-style date
117 specifications as arguments.
118 \fIPick\fR will default certain missing fields so that the entire date
119 need not be specified.
120 These fields are (in order of defaulting):
121 timezone, time and timezone, date, date and timezone.
122 All defaults are taken from the current date, time, and timezone.
123
124 In addition to 822\-style dates,
125 \fIpick\fR will also recognize any of the days of the week
126 (\*(lqsunday\*(rq, \*(lqmonday\*(rq, and so on),
127 and the special dates
128 \*(lqtoday\*(rq, \*(lqyesterday\*(rq (24 hours ago),
129 and \*(lqtomorrow\*(rq (24 hours from now).
130 All days of the week are judged to refer to a day in the past
131 (e.g., telling \fIpick\fR \*(lqsaturday\*(rq on
132 a \*(lqtuesday\*(rq means \*(lqlast\ saturday\*(rq
133 not \*(lqthis\ saturday\*(rq).
134
135 Finally, in addition to these special specifications,
136 \fIpick\fR will also honor a specification of the form \*(lq\-dd\*(rq,
137 which means \*(lqdd days ago\*(rq.
138
139 \fIPick\fR supports complex boolean operations on the searching primitives
140 with the `\-and', `\-or', `\-not', and `\-lbrace\ ...\ \-rbrace' switches.
141 For example,
142
143 .ti +.5i
144 .ie t \{\
145 pick\0\-after\0yesterday\0\-and\0\-lbrace\0\-from\0freida\0\-or\0\-from\0fear\0\-rbrace
146 .\}
147 .el \{\
148 pick\0\-after\0yesterday\0\-and
149 .br
150 .ti +1i
151 \-lbrace\0\-from\0freida\0\-or\0\-from\0fear\0\-rbrace
152 .\}
153
154 identifies messages recently sent by \*(lqfrieda\*(rq or \*(lqfear\*(rq.
155
156 The matching primitives take precedence over the `\-not' switch,
157 which in turn takes precedence over `\-and'
158 which in turn takes precedence over `\-or'.
159 To override the default precedence,
160 the `\-lbrace' and `\-rbrace' switches are provided,
161 which act just like opening and closing parentheses in logical expressions.
162
163 If no search criteria are given, all the messages
164 specified on the command
165 line are selected (this defaults to \*(lqall\*(rq).
166
167 Once the search has been performed,
168 if the `\-list' switch is given,
169 the message numbers of the selected messages are written to the standard
170 output separated by newlines.
171 This is \fIextremely\fR useful for quickly generating arguments for other
172 \fIMH\fR programs by using the \*(lqbackquoting\*(rq syntax of the shell.
173 For example,
174 the command
175
176 .ti +.5i
177 scan\0`pick\0+todo\0\-after\0\*(lq31 Mar 83 0123 PST\*(rq`
178
179 says to \fIscan\fR those messages in the indicated folder which meet the
180 appropriate criterion.
181 Note that since \fIpick\fR\0's context changes are written out prior to
182 \fIscan\fR\0's invocation,
183 you need not give the folder argument to \fIscan\fR as well.
184
185 Regardless of the operation of the `\-list' switch,
186 the `\-sequence name' switch may be given once for each sequence the user
187 wishes to define.
188 For each sequence named,
189 that sequence will be defined to mean exactly those messages selected by
190 \fIpick\fR.
191 For example,
192
193 .ti +.5i
194 pick\0\-from\0frated\0\-seq\0fred
195
196 defines a new message sequence for the current folder called \*(lqfred\*(rq
197 which contains exactly those messages that were selected.
198
199 Note that whenever \fIpick\fR processes a `\-sequence\ name' switch,
200 it sets `\-nolist'.
201
202 By default, \fIpick\fR will zero the sequence before adding it.
203 This action can be disabled with the `\-nozero' switch,
204 which means that the messages selected by \fIpick\fR will be added to the
205 sequence, if it already exists, and any messages already a part of that
206 sequence will remain so.
207
208 The `\-public' and `\-nopublic' switches are used by \fIpick\fR in the same
209 way \fImark\fR uses them.
210 .Fi
211 ^$HOME/\&.mh\(ruprofile~^The user profile
212 .Pr
213 ^Path:~^To determine the user's MH directory
214 .Ps
215 ^Current\-Folder:~^To find the default current folder
216 .Sa
217 mark(1)
218 .De
219 `+folder' defaults to the current folder
220 .Ds
221 `msgs' defaults to all
222 .Ds
223 `\-datefield date'
224 .Ds
225 `\-nopublic' if the folder is read\-only, `\-public' otherwise
226 .Ds
227 `\-zero'
228 .Ds
229 `\-list' is the default if no `\-sequence', `\-nolist' otherwise
230 .Co
231 If a folder is given, it will become the current folder.
232 .Hi
233 In previous versions of \fIMH\fR,
234 the \fIpick\fR command would \fIshow\fR, \fIscan\fR, or \fIrefile\fR the
235 selected messages.
236 This was rather \*(lqinverted logic\*(rq from the UNIX point of view,
237 so \fIpick\fR was changed to define sequences and output those sequences.
238 Hence, \fIpick\fR can be used to generate the arguments for all other
239 \fIMH\fR commands,
240 instead of giving \fIpick\fR endless switches for invoking those commands
241 itself.
242
243 Also, previous versions of \fIpick\fR balked if you didn't specify a search
244 string or a date/time constraint.
245 The current version does not, and merely matches the messages you specify.
246 This lets you type something like:
247
248 .ti +.5i
249 show\0`pick\0last:20\0\-seq\0fear`
250
251 instead of typing
252
253 .in +.5i
254 .nf
255 mark\0\-add\0\-nozero\0\-seq\0fear\0last:20
256 show\0fear
257 .fi
258 .in -.5i
259
260 Finally,
261 timezones used to be ignored when comparing dates:
262 they aren't any more.
263 .Hh
264 Use \*(lqpick sequence \-list\*(rq
265 to enumerate the messages in a sequence (such as for use 
266 by a shell script).
267 .Bu
268 The argument to the `\-after' and `\-before' switches must be interpreted
269 as a single token by the shell that invokes \fIpick\fR.
270 Therefore,
271 one must usually place the argument to this switch inside double\-quotes.
272 Furthermore,
273 any occurance of `\-datefield' must occur prior to the `\-after'
274 or `\-before' switch it applies to.
275
276 If \fIpick\fR is used in a back\-quoted operation,
277 such as
278
279 .ti +.5i
280 scan\0`pick\0\-from\0jones`
281
282 and \fIpick\fR selects no messages
283 (e.g., no messages are from \*(lqjones\*(rq),
284 then the shell will still run the outer command (e.g., \*(lqscan\*(rq).
285 Since no messages were matched,
286 \fIpick\fR produced no output,
287 and the argument given to the outer command as a result of backquoting
288 \fIpick\fR is empty.
289 In the case of \fIMH\fR programs,
290 the outer command now acts as if the default `msg' or `msgs' should be used
291 (e.g., \*(lqall\*(rq in the case of \fIscan\fR\0).
292 To prevent this unexpected behavior,
293 if `\-list' was given,
294 and if its standard output is not a tty,
295 then \fIpick\fR outputs the illegal message number \*(lq0\*(rq when it fails.
296 This lets the outer command fail gracefully as well.
297 .sp
298 The pattern syntax \*(lq[l-r]\*(rq is not supported; each letter
299 to be matched must be included within the square brackets.
300 .En