home *** CD-ROM | disk | FTP | other *** search
- Archive-name: killfile-faq
- Last modified: 21 Oct 1995
-
- Copyright 1995, Leanne Phillips. Permission is granted to distribute this
- document for personal use, as long as this copyright notice maintains.
- Publication of this material in printed form is forbidden without express
- permission of the author.
-
- Summary of changes:
- Oct 21: Added a caution and correct to question 15 about from line
- killing.
-
- Send comments, suggestions, corrections to felan@netcom.com.
-
- Questions answered in this post:
- 1. What is a KILL file? What does it do?
- 2. What's the difference between a 'local' KILL file and a 'global'
- KILL file?
- 3. How can I change/edit my KILL files?
- 4. What's this 'THRU' line in my KILL file?
- 5. What is the general syntax of a KILL file entry?
- 6. What are the available modifiers and commands?
- 7. How do I kill a specific subject?
- 8. How do I kill postings from a specific person?
- 9. How do I kill articles from a specific site?
- 10. How do I kill followups?
- 11. How do I kill crossposts from a specific group?
- 12. How do I kill all crossposts?
- 13. I know how to kill posts from a specific person. How do I make it so I
- read _only_ the posts from a specific person?
- 14. How do I kill something if it appears in the article body?
- 15. What's different about trn?
- 16. There's a way in rn to select only the articles I want to read;
- the /pattern/:=:M method. Is there a way to do that in trn?
- 17. Can I select on a given thread?
- 18. How do I kill a given thread?
- 19. How do I kill the followups to a posting without killing the entire
- thread?
- 20. How do I kill something in the header that isn't in the subject line?
- 21. Can I kill articles without using a killfile? If so, how?
- 22. Where can I get more information about killfiles, regular expressions,
- and trn?
- 23. Comments from the maintainer, and credits
-
- The KILL file FAQ
-
- General information
- ===================
- 1. What is a KILL file? What does it do?
-
- A KILL file is a way of recording what articles you want to kill (skip
- over). Rn, trn, and strn all support killfiles. Xrn has some support for
- killfiles, but the support is limited; nothing in here is guaranteed to work
- for xrn. See the xrn man page.
- To kill articles, you specify criteria to use to kill them: a subject line,
- a part of a subject line, articles from one poster or one site, cross-
- posted articles, or follow-ups to other articles. You can also kill articles
- with a particular string in the article.
-
- 2. What's the difference between a 'local' KILL file and a 'global'
- KILL file?
-
- The 'global' KILL file - there is only one for each user - is applied
- to each newsgroup. A 'local' KILL file is applied to only one newsgroup,
- the one for which it is named.
- The global KILL file is typically in your News directory, under the name
- 'KILL'. Local KILL files are typically in the News directory, with more
- involved names. The killfile for group foo.bar would be, in the News
- directory, in the subdirectory foo/bar. It would still be named KILL.
- (Note: The capitals are important; remember that Unix is case-sensitive.)
- It is possible to change the locations of your KILL files, by setting
- the environment variables KILLGLOBAL and KILLLOCAL. The most popular method
- is to put all the files in one directory using the group name as the
- file name:
-
- KILLLOCAL="%p/Kill/%C"
- KILLGLOBAL="%p/Kill/Global"
-
- Where %p is the news dir (~/News) and %C is the name of the group. The
- global kill file is in the same directory with the name "Global".
- See your rn(1) or trn(1) man pages, or local support staff, for help
- with this if you want to use something else.
-
- A word of warning about global kill files: they slow down killfile
- processing, so you have to wait longer to start reading - for each
- newsgroup. If you don't need to put something in a global file, you
- shouldn't.
-
- 3. How can I change/edit my KILL files?
-
- The easiest way to add a given subject to your KILL file is to start
- reading the first article with that subject, and then to type 'K'
- (the capital is important). It will be added automatically. The subject
- that is added will be some of what shows up in the Subject: line, so
- there isn't much flexibility in it. (What is actually added is the first
- twenty or so characters of the Subject: line, not the whole line.)
-
- Assuming you know how to use an editor and have made that editor your
- default (again, see local support staff if you don't know how to do that),
- you can edit the KILL file directly, using the appropriate name as
- described above.
-
- From within rn and trn, you can add something to a killfile when typing
- in the kill command interactively (see below, the question about killing
- without using a killfile). Use the K modifier in any command (see below
- for explanations of modifiers).
- You can also start editing your KILL files from within rn and trn. When
- being asked to pick a newsgroup, type control-k; this will start your
- default editor, using your global killfile. When you're reading a
- particular newsgroup, typing control-k will start the editor with the
- local killfile for that group. If it doesn't exist, it will create it;
- if necessary, it will also create the directories in the path to it.
-
- 4. What's this 'THRU' line in my KILL file?
-
- The THRU line, at the top of every local KILL file, indicates how many
- articles have been processed by the KILL file. It's the number of the
- article it last processed. No articles before that number will be
- looked at by the KILL file again, even if you add an entry to the KILL
- file. You need to change the THRU line as well.
-
- Rn and trn
- ==========
- 5. What is the general syntax of a KILL file entry?
- The general style for building a kill line is:
-
- /pattern/modifiers:command
-
- The <pattern> is the pattern to use to pick articles. This is a regular
- expression, like those used in grep. You can use any case in the pattern;
- t won't matter, unless you use a modifier to make rn case-sensitive.
- The <modifiers> tell rn where to look for the pattern - the subject
- (default), one of the other header lines, or the entire article, as examples
- of the usual modifiers used.
- The command tells what to do with the article once it's been selected.
- This is usually either to kill it or to mark it unread.
-
- 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. (See below for the explanation of j and =.)
-
- 6. What are the available modifiers and commands?
-
- The modifiers and commands are all explained in the rn man page, but here
- are some of them:
- 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)
- c: Make the pattern case sensitive
- 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
-
- Using the 'a' modifier slows down kill file processing a lot; use it
- sparingly.
-
- 7. How do I kill a specific subject?
-
- 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.
-
- 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.
-
- 8. How do I kill postings from a specific person?
-
- 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
-
- This searches the entire header for any line starting with 'From:', anything
- at all, and then 'noone@anywhere.all' in it. This is faster than if the
- beginning-of-line character (^) had been left out:
-
- /From:.*noone@anywhere\.all/h:j
-
- If this were used, something like 'Subject: Re: Articles from:
- noone@anywhere.all' would also get killed.
-
- 9. How do I kill articles from a specific site?
-
- For articles from a particular site, just remove the 'noone' from the
- previous lines, and articles from the machine 'anywhere.all' will be killed.
- So, the line would be:
-
- /^From:.*@anywhere\.all/h:j
-
- 10. How do I kill followups?
-
- To kill anything that is a followup to any article, use this pattern:
-
- /Re:/:j
-
- This kills anything with 'Re:' in it. (This includes articles of the form
- 'Subject: X (Was Re: Y)'.)
-
- If you just want to kill the direct followups, without the changes in
- subject, you have to make it clear where the Re: is in the line:
-
- /^Subject: Re:/:j
-
- 11. How do I kill crossposts from a specific group?
-
- 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.)
-
- This will also match a newsgroup of foo.bar.misc; to fix it, you'd need
- to use some of the other techniques, described below, for unmarking things
- you wanted to see that were killed by other commands.
-
- 12. How do I kill all crossposts?
-
- Since a cross-posted article always has a , in the Newsgroups: line,
- you can use:
-
- /^Newsgroups:.*,/h:j
-
- to kill all crossposts.
-
- 13. I know how to kill posts from a specific person. How do I make it so I
- read _only_ the posts from a specific person?
-
- Now, after your normal kills, 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
-
- 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
-
- The 'm' becomes useful suddenly. You can substitute m for j any time
- you need to, in any of the commands already discussed. 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, see the example in the 'Comments and credits' section.)
-
- 14. How do I kill something if it appears in the article body?
-
- Use the a modifier to pick the pattern and kill it:
-
- /<pattern>/a:j
-
- Trn
- ===
- 15. What's different about trn?
-
- Trn, being a threaded version of rn, has a few extra enhancements to
- deal with those. Because rn is no longer being improved, there are also
- extensions that have been made that could, but are not, be integrated into
- the base rn killfiles.
- One of the additions to trn is the f modifier, meaning the From: line.
- This line gets used so much it seemed appropriate to add a modifier in
- specifically for it.
- So, now, killing or marking articles can be done on the basis of the
- From: line quite easily, now:
-
- /noone@anywhere\.all/f:j
- /noone@anywhere\.all/f:m
-
- It looks just like the Subject: line, except with the addition of the 'f'
- in the modifier position.
-
- However, the `f' modifier *may* not work exactly in the same manner as
- the subject-based criteria if trn is configured to use thread files.
- Specifically, if thread files are used only the 'Real Name' portion of the
- from line can be guaranteed to be matched. To ensure that your match will
- work on an address, you need to change the above lines to:
-
- /noone@anywhere\.all/Hfrom:j
- /noone@anywhere\.all/Hfrom:m
-
- 16. There's a way in rn to select only the articles I want to read;
- the /pattern/:=:M method. Is there a way to do that in trn?
-
- Yup. You do it in essentially the same way, but you replace the :=:M
- with :+, like this:
-
- /noone@anywhere\.all/f:+
-
- 17. Can I select on a given thread?
-
- Just type 'T+' while reading any thread or while selecting a thread in the
- selector (it's similar to using 'K' on an article, except it selects).
- This will tell trn to select the entire thread by putting thread-oriented
- selection commands in the kill file that look like this:
-
- <879387.message.id@some.site.name> T+
-
- You can also use 'T+' on a search command, if for instance you wish to
- select a thread that starts with a particular subject and keep on seleting
- it even if the subject changes:
-
- /test/:T+
-
- 18. How do I kill a given thread?
-
- Just type Tj while reading the thread or when the thread is the current
- item in the thread selector. Use this instead of 'K' to kill only this
- thread and not other threads that have a similar subject. It also puts
- thread-oriented kill commands in kill file that have 'Tj' instead of 'T+'
- on the end.
-
- You can also use 'Tj' on a search command, if you wish to kill a particular
- subject and all associated subjects in the thread:
-
- /test/:Tj
-
- 19. How do I kill the followups to a posting without killing the entire
- thread?
-
- Use the ',' command, intead of the 'j' command of rn.
-
- 20. How do I kill something in the header that isn't in the subject line?
-
- 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.
-
- An example is crossposts from a particular newsgroup:
-
- /foo\.bar/Hnewsgroups:j
-
- or from all newsgroups:
-
- /,/Hnewsgroups:j
-
- Using this syntax will be faster than the method used in rn to find a
- particular header, as well as simplifying the necessary pattern.
-
- 'Catchall'
- ==========
- 21. Can I kill articles without using a killfile? If so, how?
-
- Sure can. Just type in the appropriate command while reading the
- newsgroup. You can also do it from the thread selector. For instance,
- if you're selecting threads and decide that someone's posted too much,
- you can just type:
-
- /noone@anywhere\.all/f:j
-
- Any of the other commands will also work.
-
- 22. Where can I get more information about killfiles, regular expressions,
- and trn?
-
- Regular expressions are used in ed, a line editor seldom used on Unix
- by most people. The man page for ed(1) explains the various regular
- expression syntax rules.
-
- Killfiles and trn are both described in the trn(1) man page. Some sites
- may not have this installed; if not, please see your local support staff to
- see if it is possible to get it installed.
- A post has been written about trn; occasionally the author posts pointers
- to the ftp location in news.software.readers. This is recommended for people
- new to using trn.
- For any of the trn extensions, it is highly recommended that you check
- the man page on your system. They weren't added until version 3.0, most
- of them; some weren't added until later. If you have an earlier version,
- you should see if an upgrade is possible.
-
- 23. Comments from the maintainer, and credits
-
- 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! Wayne Davison (writer of trn) helped in the
- rewrite in substantial ways; some of that included writing a couple sections
- that I was particularly unsure about.
- ====
- 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, you don't need that;
- if 'm' is the first command, the 'r' is assumed.
- ====
- Example of killing all articles, and then unkilling those for a specific
- topic or person (this example was provided by David W. Tamkin,
- dattier@gagme.chi.il.us):
-
- Let's say that your kill file has processed through article 1000 and there
- are nine new articles now. You have a kill file that looks like this:
-
- THRU 1000
- /bear/:=:M
- /^/j
-
- Note the use of :=:M instead of m.
-
- Now, articles 1002, 1003, and 1006 have "bear" in their subjects. The =
- operator in /bear/:=:M will allow rn to use that line only on unread
- articles. Thus, 1002, 1003, and 1006 get marked for return. Next, /^/j
- junks all articles from 1001-1009.
-
- Then you type Y (yank articles Marked for return). Alternatively, if you do
- leave the newsgroup and come back to it, your kill file now looks like this:
-
- THRU 1009
- /bear/:=:M
- /^/j
-
- Because the kill file has already operated on articles 1-1009, it will not
- run = (and thus it won't get to the M) nor j on 1002, 1003, and 1006. You
- can hit <space> or y and start reading them.
-
- Without the :=: trick, M or m will operate on all articles, read or unread.
- ====
- Additions to the example, for trn 3.x:
-
- The rn example uses:
-
- THRU 1009
- /bear/:=:M
- /^/j
-
- While this works in later versions of trn 3.x, the best way to do this in trn
- 3.x is to put the following into your kill file:
-
- /bear/:+
- *X
-
- The '*X' command kills all non-selected articles in the group.
-
- In rn, M and m both work on both read and unread articles. This is not
- true in trn 3.x, for M: it only works on unread articles. What this _means_
- is that, when using the :=:M trick, you can actually remove the :=:, and
- just use the M.
- ====
-
- Leanne Phillips
-