0
|
1 .\" This file is automatically generated. Do not edit!
|
|
2 .\" written by MH-plus project
|
|
3 .SC PICK 1
|
|
4 .NA
|
|
5 pick \- メッセージ内容を検索する
|
|
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 典型例:
|
|
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 はフォルダ内のメッセージから指定した内容を探し、
|
|
52 見つかったメッセージを識別します。
|
|
53 二つのタイプの検索要素が使えます。すなわち、パターンマッチと日付制限です。
|
|
54
|
|
55 パターンマッチには \fIgrep\fR(1) の改変版が使われていて、
|
|
56 `pattern' には正規表現(\fIed\fR(1) 参照)が使えます。
|
|
57 `\-search' オプションと共に使うと、`pattern' は直接使え、
|
|
58 その他のオプションと共に使うと、grep パターンは以下のように解釈されます。
|
|
59
|
|
60 .ti +.5i
|
|
61 \*(lqcomponent[ \\t]*:\&.*pattern\*(rq
|
|
62
|
|
63 この事は、`\-search' オプションで指定されたパターンはメッセージ中の全て、
|
|
64 ヘッダーもボディも検索されますが、その他のパターンマッチは
|
|
65 ヘッダー内の指定のコンポーネントだけが検索される事を意味します。
|
|
66 書式
|
|
67
|
|
68 .ti +.5i
|
|
69 `\-\|\-component\ pattern'
|
|
70
|
|
71 は以下の省略形と考えられます。
|
|
72
|
|
73 .ti +.5i
|
|
74 `\-search \*(lqcomponent[ \\t]*:\&.*pattern\*(rq\ '
|
|
75
|
|
76 \*(lqTo:\*(rq、\*(lqcc:\*(rq、\*(lqDate:\*(rq、\*(lqFrom:\*(rq、
|
|
77 または \*(lqSubject:\*(rq のどれでもないコンポーネントを検索する事も
|
|
78 出来ます。
|
|
79 例えば、`pick\0\-\|\-reply\-to\0pooh' という風にです。
|
|
80
|
|
81 パターンマッチは基本的には行単位で行なわれます。
|
|
82 メッセージのヘッダー内では、
|
|
83 それぞれのコンポーネントは一つの長い行として扱われますが、
|
|
84 ボディではそれぞれの行は分割して扱われます。
|
|
85 検索パターン中の小文字はメッセージ中の大文字にも小文字にもマッチしますが、
|
|
86 大文字は大文字のみにマッチします。
|
|
87 また、ヘッダーが RFC\-2047 エンコードされている場合、
|
|
88 検索文字列にデコード後の文字列を指定して、
|
|
89 そのエンコード文字列にマッチさせる事が出来ます。
|
|
90
|
|
91 `\-date' オプションに対しても(上述の)パターンマッチ処理が行なわれます。
|
|
92 従って、ある日に出されたメッセージを探す場合、パターン文字列は
|
|
93 メッセージの \*(lqDate:\*(rq 行のテキストにマッチしなければなりません。
|
|
94
|
|
95 任意のパターンマッチ処理とは独立に、
|
|
96 `\-after date' または `\-before date' オプションを
|
|
97 全てのメッセージについての日付/時刻制限に使う事が出来ます。
|
|
98 デフォルトでは、\*(lqDate:\*(rq 行が参照されますが、
|
|
99 他に日付に関するヘッダーがある場合は
|
|
100 (\*(lqBB\-Posted:\*(rq や \*(lqDelivery\-Date:\*(rq のようなの)、
|
|
101 `\-datefield\ field' オプションで指定できます。
|
|
102
|
|
103 `\-before' や `\-after' を付けると、
|
|
104 \fIpick\fR は `msgs' で指定されたメッセージそれぞれの日付行を解析し、
|
|
105 指定された日付/時刻と比較します。
|
|
106 `\-after' が指定されると、
|
|
107 \*(lqDate:\*(rq 行の値が指定の日から時間的に後であるメッセージだけが
|
|
108 考慮されます。
|
|
109 `\-before' はその逆です。
|
|
110
|
|
111 `\-after' と `\-before' オプションは共に、
|
|
112 引数として、RFC\-822 形式の日付表記を指定する事が出来ます。
|
|
113 この場合、完全な日付表記は必要なく、
|
|
114 \fIpick\fR は抜けている部分をデフォルトで補います。
|
|
115 これら、デフォルトが使える部分は、
|
|
116 タイムゾーン、時刻とタイムゾーン、日付、日付とタイムゾーンです。
|
|
117 全てのデフォルトは現在の日付、時刻、タイムゾーンです。
|
|
118
|
|
119 RFC\-822 形式の日付に加えて、
|
|
120 \fIpick\fR は任意の曜日
|
|
121 (\*(lqsunday\*(rq、\*(lqmonday\*(rq、など)、
|
|
122 特別な日である
|
|
123 \*(lqtoday\*(rq、\*(lqyesterday\*(rq (24時間前)、
|
|
124 そして \*(lqtomorrow\*(rq (24時間後)を認識します。
|
|
125 全ての曜日は過去の日を意味します
|
|
126 (例えば、火曜日に \fIpick\fR に \*(lqsaturday\*(rq と指定した場合、
|
|
127 それは先週の土曜日の意味であって、今週の土曜日の事ではありません)。
|
|
128
|
|
129 最後に、これら特別な指定に加えて、
|
|
130 \fIpick\fR は \*(lq\-dd\*(rq という形式を認識します。
|
|
131 これの意味は \*(lqdd\*(rq 日前です。
|
|
132
|
|
133 \fIpick\fR は検索指定の際に複雑な論理演算子を認識します。
|
|
134 `\-and'、`\-or'、`\-not'、そして `\-lbrace\ ...\ \-rbrace' オプションです。
|
|
135 例えば、
|
|
136
|
|
137 .ti +.5i
|
|
138 .ie t \{\
|
|
139 pick\0\-after\0yesterday\0\-and\0\-lbrace\0\-from\0freida\0\-or\0\-from\0fear\0\-rbrace
|
|
140 .\}
|
|
141 .el \{\
|
|
142 pick\0\-after\0yesterday\0\-and
|
|
143 .br
|
|
144 .ti +1i
|
|
145 \-lbrace\0\-from\0freida\0\-or\0\-from\0fear\0\-rbrace
|
|
146 .\}
|
|
147
|
|
148 は最近に \*(lqfrieda\*(rq か \*(lqfear\*(rq から送られてきたメッセージを
|
|
149 捜し出します。
|
|
150
|
|
151 それぞれの検索オプションが、`\-not' オプションより優先され、
|
|
152 それは `\-and' より優先され、
|
|
153 それは `\-or' より優先されます。
|
|
154 このデフォルトの優先順位を変えるためには、
|
|
155 `\-lbrace' と `\-rbrace' オプションが使えます。
|
|
156 これらはそれぞれ、論理式に於ける左括弧と右括弧に相当します。
|
|
157
|
|
158 もし検索オプションが何も指定されなかった場合、
|
|
159 指定されたメッセージ
|
|
160 (このデフォルトは \*(lqall\*(rq)
|
|
161 の全てが選択されます。
|
|
162
|
|
163 一旦、検索が終了した時、
|
|
164 `\-list' オプションが指定されていると、
|
|
165 選択されたメッセージのメッセージ番号が改行で区切られて、
|
|
166 標準出力に書き出されます。
|
|
167 これはシェルのバッククォート処理を使って、他の \fIMH\fR プログラムに
|
|
168 素早く引数を与える目的に、極めて有用です。
|
|
169 例えば、コマンド
|
|
170
|
|
171 .ti +.5i
|
|
172 scan\0`pick\0+todo\0\-after\0\*(lq31 Mar 83 0123 PST\*(rq`
|
|
173
|
|
174 は指定のフォルダで、検索により選択されたメッセージだけを
|
|
175 \fIscan\fR します。
|
|
176 \fIpick\fR によるコンテクスト・ファイルの変化は
|
|
177 \fIscan\fR が呼び出される前に書き出される点に注目して下さい。
|
|
178 つまり、\fIscan\fR の方にはフォルダ名を指定する必要がない訳です。
|
|
179
|
|
180 `\-list' オプションによる結果は使わずに、
|
|
181 `\-sequence name' オプションを、ユーザーが定義したいそれぞれのシーケンスに
|
|
182 ついて一つずつ指定しても構いません。
|
|
183 それぞれのシーケンス名は、
|
|
184 \fIpick\fR が選択したメッセージを正確に意味するように定義されます。
|
|
185 例えば、
|
|
186
|
|
187 .ti +.5i
|
|
188 pick\0\-from\0frated\0\-seq\0fred
|
|
189
|
|
190 はカレント・フォルダに \*(lqfred\*(rq という名前の新しいシーケンスを定義し、
|
|
191 それは選び出されたメッセージを正確に含みます。これは例えば、
|
|
192 \*(lqscan fred\*(rq などで利用可能です。さらに、
|
|
193
|
|
194 .ti +.5i
|
|
195 pick\0\-before\0friday\0\-seq\0fred\0fred
|
|
196
|
|
197 と絞り込み等にも利用できます。
|
|
198
|
|
199 \fIpick\fR が `\-sequence\ name' オプションを処理する時は常に
|
|
200 `\-nolist' が指定される事に注意して下さい。
|
|
201
|
|
202 デフォルトでは、\fIpick\fR はシーケンスに追加する前に、
|
|
203 それまでのシーケンスの内容を消します。
|
|
204 この動作は `\-nozero' オプションで抑制されます。
|
|
205 これは \fIpick\fR で選択されたメッセージが指定のシーケンスに追加される
|
|
206 事を意味します。そして、そのシーケンスに含まれていたメッセージはそのまま
|
|
207 残ります。
|
|
208
|
|
209 `\-public' と `\-nopublic' オプションは \fImark\fR 同様の事を
|
|
210 \fIpick\fR に指定します。
|
|
211 .Fi
|
|
212 ^$HOME/\&.mh\(ruprofile~^ユーザーのプロファイル
|
|
213 .Pr
|
|
214 ^Path:~^ユーザーの MH ディレクトリを決める
|
|
215 .Ps
|
|
216 ^Current\-Folder:~^デフォルトのカレント・フォルダを示す
|
|
217 .Sa
|
|
218 mark(1)
|
|
219 .De
|
|
220 `+folder' デフォルトはカレント・フォルダ
|
|
221 .Ds
|
|
222 `msgs' デフォルトは all
|
|
223 .Ds
|
|
224 `\-datefield date'
|
|
225 .Ds
|
|
226 `\-nopublic' フォルダが書き込み禁止の場合。さもなくば、`\-public'
|
|
227 .Ds
|
|
228 `\-zero'
|
|
229 .Ds
|
|
230 `\-list' `\-sequence' の場合、デフォルト。さもなくば、`\-nolist'
|
|
231 .Co
|
|
232 もしフォルダが指定されれば、それがカレント・フォルダになります。
|
|
233 .Hi
|
|
234 以前のバージョンの \fIMH\fR では、
|
|
235 \fIpick\fR コマンドは選択されたメッセージを
|
|
236 \fIshow\fR、\fIscan\fR、または \fIrefile\fR してました。
|
|
237 オプションにより、これらの動作のどれかが行なわれていた訳ですが、
|
|
238 これは UNIX 的な物の見方に反するような考え方とも言えます。
|
|
239 そこで、\fIpick\fR はシーケンスを定義し、
|
|
240 そのシーケンスを出力するという風に変更されました。
|
|
241 従って、
|
|
242 \fIpick\fR に他の \fIMH\fR コマンドを呼び出すようなオプションを
|
|
243 追加し続ける代わりに、\fIpick\fR を使って、それらのコマンドの引数を
|
|
244 生成する事が出来ます。
|
|
245
|
|
246 また、以前のバージョンの \fIpick\fR は検索文字列や日付/時刻制限を指定しない
|
|
247 場合にはエラーになっていました。
|
|
248 現在のバージョンではそんな事はなく、
|
|
249 単に指定したメッセージの全てにマッチします。
|
|
250 これにより、例えば次のような事が出来ます。
|
|
251
|
|
252 .ti +.5i
|
|
253 show\0`pick\0last:20\0\-seq\0fear`
|
|
254
|
|
255 これは、次の代わりです。
|
|
256
|
|
257 .in +.5i
|
|
258 .nf
|
|
259 mark\0\-add\0\-nozero\0\-seq\0fear\0last:20
|
|
260 show\0fear
|
|
261 .fi
|
|
262 .in -.5i
|
|
263
|
|
264 最後に、
|
|
265 以前のものは、日付の比較の際にタイムゾーンは無視されてましたが、
|
|
266 現在のものはそんな事はないです。
|
|
267 .Hh
|
|
268 シーケンスに含まれているメッセージを並べ挙げるには
|
|
269 \*(lqpick sequence \-list\*(rq を使いましょう
|
|
270 (シェルスクリプトなどで使うような時)。
|
|
271 .Bu
|
|
272 `\-after' と `\-before' に対する引数は、\fIpick\fR を呼び出すシェルにとって
|
|
273 一語として解釈される形でなければなりません。
|
|
274 従って、通常、
|
|
275 これらのオプションに対する引数はダブル・クォートで囲まれなければなりません。
|
|
276 さらに、`\-datefield' オプションは、それが適応される
|
|
277 `\-after' や `\-before' オプションの前に置かれなければなりません。
|
|
278
|
|
279 もし \fIpick\fR が次のようなバッククォート処理を行ない、
|
|
280
|
|
281 .ti +.5i
|
|
282 scan\0`pick\0\-from\0jones`
|
|
283
|
|
284 \fIpick\fR が何もメッセージを選択しなかった場合
|
|
285 (例えば、\*(lqjones\*(rq から来たメッセージがなかった場合)、
|
|
286 シェルはまだ外側のコマンド(例えば \*(lqscan\*(rq)を実行しようとします。
|
|
287
|
|
288 マッチするメッセージがなかったので、
|
|
289 \fIpick\fR は何も出力しません。
|
|
290 そして、\fIpick\fR をバッククォートした結果として、外側のコマンドに
|
|
291 与えられる引数は空になります。
|
|
292 \fIMH\fR プログラムの場合、引数がないと、
|
|
293 外側のプログラムは、あたかもデフォルトの `msg' または `msgs' であるかの
|
|
294 ように振舞います
|
|
295 (例えば \fIscan\fR の場合は \*(lqall\*(rq)。
|
|
296 この期待されない振舞いを避けるためには、
|
|
297 もし `\-list' が指定され、その標準出力が端末でない場合は、
|
|
298 \fIpick\fR は見つからなかった時に不正なメッセージ番号 \*(lq0\*(rq を
|
|
299 出力すべきでしょう。
|
|
300 これにより外側のコマンドがうまく失敗してくれるでしょう。
|
|
301 .sp
|
|
302 正規表現では \*(lq[l-r]\*(rq というパターン文法はサポートされてません。
|
|
303 マッチさせたい全ての文字を角括弧の中に書かなければなりません。
|
|
304 .En
|