Path: utzoo!attcan!uunet!cs.utexas.edu!csd4.milw.wisc.edu!uakari.primate.wisc.edu!indri!ames!think!husc6!ogccse!schaefer From: schaefer@ogccse.ogc.edu (Barton E. Schaefer) Newsgroups: comp.mail.mush Subject: Re: Saving just mail headers Keywords: mail headers Message-ID: <4177@ogccse.ogc.edu> Date: 10 Aug 89 22:22:23 GMT References: <236@nikhefh.hep.nl> <120719@sun.Eng.Sun.COM> Reply-To: schaefer@ogccse.UUCP (Barton E. Schaefer) Organization: Oregon Graduate Center, Beaverton, OR Lines: 84 In article <120719@sun.Eng.Sun.COM> argv@sun.UUCP (Dan Heller) writes: } In article <236@nikhefh.hep.nl> a20@nikhefh.hep.nl (Marten Terpstra) writes: } > Can anyone tell me if it is possible to just save mail headers without } > the message body ? } } no, but you can save outgoing mail headers only using "set logfile = ..." "NO?" Not feeling terribly helpful today, Dan? :-) [%] Of course you can save just the headers, you just can't do it with the "save" command. Try mush> pipe sed -n 1,/\^\$/p >> file If you want a message list rather than the current message, the list goes between the "pipe" and the "sed". Note that the Bourne shell, which is run by the "pipe" command, is performing the >> redirection; mush doesn't do that itself. [%%] "pipe" does not write the ignored headers ("ignore" command or "show_hdrs" variable). If you want to save ALL the headers, you have to do a little more work: mush> set print_cmd='sed -n 1,/\^\$/p >> file' mush> lpr printing message 11...(219 lines) 1 message printed through "sed -n 1,/\^\$/p >> file". mush> unset print_cmd You can of course bundle all this up into a "cmd" alias (the quoting is a bit nasty, escaped newlines for readability): cmd sv_hdrs "\ set sv_list ;\ set print_cmd='"'sed -n 1,/\^\$/p >> \!:$'"'"' ;\ lpr $sv_list \!* ;\ unset sv_list print_cmd' Some non-obvious things going on here. I'll explain the mush ones, sed is up to you: set sv_list This exploits a special feature of the "set" command to allow you to pipe to sv_hdrs. For example, pick mush-users | sv_hdrs mu-hdrs expands to pick mush-users | set sv_list ; set print_cmd=... and $sv_list gets set to the messages found by pick. set print_cmd='sed -n 1,/\^\$/p >> \!:$' The \!:$ sets the file name to the last argument on the sv_hdrs command line, for compatibility with "save". YOU MUST GIVE A FILE NAME! Otherwise you will either get an error or the message list will be used as a file name, which probably is not what you want. lpr $sv_list \!* The \!:* picks up any message list that was given before the file name. It also picks up the file name, but the "lpr" command conveniently ignores that. The $sv_list spits out whatever messages were piped to sv_hdrs. So all messages listed and piped get their headers saved. I think that about covers it. :-) Hope it helps. [+] ____________ % This newsgroup is "comp.mail.mush" not "comp.mush.ask.dan.and.bart". Anybody else who wants to jump in with a clever suggestion is always welcome to do so. In fact, I'm going to start waiting a day or two for other answers to show up, unless somebody jumps in with something completely wrong. %% The characters < and > are used in E-mail addresses, so mush avoids using them as redirection metachars. + If you don't want long answers, don't ask leading questions. :-) ____________ -- Bart Schaefer "And if you believe that, you'll believe anything." -- DangerMouse CSNET / Internet schaefer@cse.ogc.edu UUCP ...{sequent,tektronix,verdix}!ogccse!schaefer