Path: bloom-beacon.mit.edu!hookup!europa.eng.gtefsd.com!news.umbc.edu!haven.umd.edu!umd5.umd.edu!syrinx.umd.edu!phillips From: phillips@syrinx.umd.edu (Leanne Phillips) Newsgroups: news.newusers.questions,news.software.readers,news.answers Subject: rn KILL file FAQ Supersedes: Followup-To: news.newusers.questions Date: 19 Apr 1994 14:00:39 GMT Organization: University of Maryland, College Park Lines: 215 Approved: news-answers-request@mit.edu Distribution: world Expires: 20 May 94 02:00:29 GMT Message-ID: Reply-To: phillips@syrinx.umd.edu NNTP-Posting-Host: syrinx.umd.edu Originator: phillips@syrinx.umd.edu Xref: bloom-beacon.mit.edu news.newusers.questions:17041 news.software.readers:6999 news.answers:18285 Archive-name: killfile-faq Last modified: 16 Sep 1993 Summary of changes: Corrected one misleading statement about the f: modifier. Added a paragraph about the H: modifier of trn 3.1. Send comments, suggestions, corrections to phillips@syrinx.umd.edu. Rn and trn, and other varieties of rn, have a very useful feature called the KILL file, which allows you to kill (skip over) articles that you don't want to see. There is some support for killfiles in xrn, but the support is limited; nothing in here is guaranteed to work for xrn. See the xrn man page. KILL files come in two forms: Global: In your News directory, you will have the file KILL. Local: In your News directory, the killfile for group foo.bar will be foo/bar/KILL. The difference between the two is that there can be one killfile for each group (the local killfile), and that killfile affects only the particular newsgroup (foo/bar/KILL affects only foo.bar; baz/quex/KILL affects only baz.quex, etc). The global killfile affects all newsgroups. (There's a way to change the default names of the killfiles, but it's more complicated than I want to get into here. See the rn(1) man page.) Killfiles allow you to kill articles based on a number of criteria: a subject line, a general subject, articles from one poster, articles from one site, articles cross-posted from any other group, or from one other group in particular, and articles that are follow-ups to anything at all (that is, anything with the Re: in the subject line). You can also kill articles with a particular string anywhere in the article. This article assumes you know how to use an editor and that you have created the directories for any local killfiles you may need. Remember that the name of the file is KILL, not kill or Kill; caps are important. The general style for building a kill line is: /pattern/modifiers:command Now, that is obviously not useful to know without understanding it. The modifiers and commands are all explained in the rn man page, but here are some useful ones: Modifiers: a: all, look through the entire article for the pattern h: look through the header of the article for the pattern f: look at only the 'From:' header (trn 3.0) H: added in trn 3.1, this expands the f: above to any header Commands: m mark as unread j mark as read = show subject line If no modifier appears before the colon, only the subject line of the article is searched. More than one command can be performed by using the style: /pattern/modifier:command:command Thus, for instance, you can use j and = together to see the exact subject lines being killed. It doesn't matter if you use uppercase or lowercase in the pattern; the program will assume they're the same thing. That is, "Test" and "test" used in the pattern mean exactly the same thing; only one is necessary. If you want case to matter, see the rn(1) man page, the 'c' modifier. The easiest way to kill a subject line is to kill it from within the newsgroup. When the subject line comes up that you want to kill, instead of using 'n' to skip that article or 'k' to kill the subject for that session, type 'K'. The subject line will then be entered into your KILL file for that group. If you want to put that line into your global KILL file, you'll have to do that yourself. (If you don't need it in your global file, it's best not to put it there - global kill files slow down your news reading a lot. So does using the 'a' modifier; use it sparingly.) (I should mention here the easiest way to start editing your kill files. Typing control-k when you're being asked to pick a newsgroup to read will start you editing the global killfile; typing the same thing when you're reading a newsgroup will start up the editing with the kill file for that group. If it doesn't exist, it will create it - including the directories necessary. This method is particularly recommended for people creating their first kill file.) To kill a general subject, ie any 'test' messages, put in the pattern: /test/:j This will kill anything with the word 'test' in the subject line. To kill anything that is a followup to any article, use this pattern: /.*Re:/:j This kills anything beginning with Re:. To kill cross-posts from one particular group, say foo.bar, try this: /Newsgroups:.*[ ,]foo\.bar/h:j This searches the header (the 'h' modifier) for any line containing the string 'Newsgroups:' (which all articles do), as well as the string 'foo.bar'. The other elements of this line are part of the regular expression meta-language; see the ed(1) man page for more details. (Note that all of them are necessary, particularly the '\' before the '.' in foo\.bar.) To kill all cross-posts, from any group at all: /Newsgroups:.*,/h:j If the Newsgroups: line has a ',' in it, it's a cross-post, and therefore this will find it. Note that the above line searches the entire header, included the Subject: line, for that pattern. So a Subject line like: Subject: I hate the Newsgroups: line, don't you? would get killed by that pattern, because it has a 'Newsgroups:' part, and a ','. To make it work properly, use the 'start of line' character, ^. The ^ isn't actually there when you look at the header yourself; it just means to look for the beginning of the line. So, to kill cross-posts: /^Newsgroups:.*,/h:j should be used instead. (Use of the ^ is recommended if you know the pattern you want to catch will be at the beginning of the line; it makes searching a lot faster.) To kill articles from a single poster, you need to know the userid and nodename of the poster; for this example we'll use noone@anywhere.all. /From: *noone@anywhere\.all/h:j If you're using trn 3.0 (or the appropriate version of rn, which I'm not sure of; anyone?), it's even easier to kill articles from a particular someone: /noone@anywhere\.all/f:j The 'f' modifier searches only the From: header, so you don't need to say the 'From:' yourself; you also don't need to use the 'h' modifier. (This is recommended if you have it; it should be faster to get only the From: line and search it, rather than looking over the entire header. Can anyone verify this, please?) For articles from a particular site, just remove the 'noone' from the previous lines, and articles from the machine 'anywhere.all' will be killed. (Note again that the \ is important.) You can, in trn 3.1, kill anything from a specific header line, rather than using the h: modifier to search the entire header. It looks like the subject line one, with a simple change: /string to junk/Hheader:j That is, the modifier becomes 'HReferences' or 'HPath' or whatever header it is you want to search. (Could someone verify that I have precisely the right syntax?) Now, after all that, you might suddenly find out that you killed articles from someone whose posts you want to read even if they write about subjects you don't want to read. For that, you need to 'unkill' the articles by them: /From: *name of person you want to read/h:m /name of person you want to read/f:m So, if you suddenly decided you wanted to read noone@anywhere.all's postings, after having deleted them above, you would add this line: /From: *noone@anywhere\.all/h:m or this, again depending on your version: /noone@anywhere\.all/f:m The 'm' becomes useful suddenly. You can substitute m for j any time you need to, up above. In fact, you can kill everything in a newsgroup and only read what you want to read by using the 'm' feature, and putting this line at the top of your KILL file: /^/:j This method has a problem, though. Specifically, it marks even those you've already read (really read, not just marked as read) as unread. So, there's another way to do it: /pattern/:=:M (check the rn(1) man page for the M command). This lists all the subjects of the new articles, and then gives those articles to the M command. (You then have to type 'Y' after the M command has finished.) (For more complete information, please write me, and I'll forward on to you an example that was posted by David Tamkin.) Finally, you can kill (or mark, of course) a particular pattern appearing anywhere in the article, as opposed to just the Subject: line or the header: /pattern/a:j and /pattern/a:m This is useful for, for instance, killing all articles by a certain user, followups to said user's articles, and even mention of the user by userid and node, or, conversely, by marking all of those conversations as unread so you can read them if they've been killed accidentally by your other entries. Further information is available in the rn man page, particularly on other available commands and modifiers. Regular expression syntax is in the ed(1) man page; the xrn man page gives information about the quirks of xrn in relation to killfiles. I'd like to thank Jonathan Kamens and Rich Salz in particular for their help, and everyone else who's sent in comments, criticisms, and suggestions; keep them coming, folks! Minor administrative note to the suggestors: Several people have suggested that, in junking all of the articles and then marking only the desirable ones to read, you need to use the 'r' modifier (search read articles as well as unread). According to the man page I read, you don't need that; if 'm' is the first command, the 'r' is assumed. If anyone wants to test this and tell me it's wrong, please do. But please only tell me if it's wrong; I'll assume it's right until someone tells me otherwise. :-) Leanne Phillips "Go not unto the Elves for counsel, for they will say both yea and nay." "Now is _not_ a good time, Keiko!" - Worf, "Disaster" "Variety is the spice of life, and I don't want to die." - Scott Borst