HDTenEightyP/NetNews huggingface dataset:
From: lwall@netlabs.com (Larry Wall)
Newsgroups: comp.unix.questions
Subject: Re: Regular Expressions with [fe]grep (AGAIN)
Date: 31 Jul 92 06:53:35 GMT
Organization: NetLabs, Inc.

In article <1992Jul30.110331.3647@news.acns.nwu.edu> navarra@casbah.acns.nwu.edu (John Navarra) writes:
: Now, however, I want to change each '0' to a '123':
: 
: 123
: 123123
: 123123123
: 123123123123
: 123123123123123
: 123123123123123123
: 123123123123123123123
: 
: and I want to get the same results with the pattern matching.
: I want to print out the lines with one string of '123', the 
: lines with two strings of '123',  or at least 1 but no more than
: 3 strings of '123'  
: 
: Is there some way using a form of grep to do this? Egrep has '()' grouping
: but doesn't have the \{n,m\} stuff. And grep has the opposite. Grrr. 

Outa luck with *grep.  Sorry.  Perl does what you expect:

    perl -ne "print if /^(123){1}$/"
    perl -ne "print if /^(123){2}$/"
    perl -ne "print if /^(123){1,3}$/"

: Secondly, what if my file looked like:
: 
: 123.105.113.13
: 123.123.113.13
: 123.123.123.13
: 123.123.123.123
: 
: How would I print out the lines matching the following conditions:
: 1) only one occurence of '123'

That's problematical, because you can't anchor with ^ and $ to keep
from matching lines with more than you're interested in.  Did you
mean consecutive occurrences?  Then you can say

    perl -ne 'print if /(123\.?)+/ && length($&) <= 4'

: 2) two or more occurences of '123'

    perl -ne 'print if /(123\.?){2,}/ && length($&) <= 8'

: 3) at least two but no more than 4 occurences of '123'.

    perl -ne 'print if /(123\.?){2,}/ && length($&) <= 16'

If I were forced to do it in sed, I'd do something tricksy like

    s/$/./;
    s/123\./X/g
    /X\{2,4\}/!d
    s/X/123./
    s/\.$//

It becomes somewhat simpler if you don't require consecutive
occurrences, since Perl's substitute operator will return how many
substitutions it did.  (I presume that you only want 123 as a complete
"word", so I've used \b to assert word boundaries here.)

: 1) only one occurence of '123'

    perl -ne 'print if s/\b123\b/123/g == 1'

: 2) two or more occurences of '123'

    perl -ne 'print if s/\b123\b/123/g >= 2'

: 3) at least two but no more than 4 occurences of '123'.

    perl -ne '$count = s/\b123\b/123/g; print if $count >= 2 && $count <= 4'

In recent versions of Perl you can also do it with a g modifier on
an ordinary pattern match:

	perl -ne '@c = /\b123\b/g; print if @c == 1'
	etc.

Larry Wall
lwall@netlabs.com
From: rcox@cad625.intel.edu (Richard Cox)
Newsgroups: comp.unix.questions
Subject: Re: How to increase transfer speed in Kermit
Date: 27 Jul 92 22:46:50 GMT
Reply-To: rcox@scdt.intel.com
Organization: Intel Corporation

Try a faster protocol than kermit like ZMODEM it is very quick and allows
the dnload process to be interrupted and then resume as if nothing happened
(barring strange happenings).

-- 
+-----------------------------------------------------------------------------+
|Rich Cox      	       	       	       	   E-Mail: rcox@scdt.intel.com 	      |
|CAD Developer                             AOL: Rich Kid                      |
|Intel Corp.  				   Mailstop: SC3-39     	      |
|      	       	        		   Phone: (408) 765-5199              |
|-----------------------------------------------------------------------------+
| These opinions are shared by everyone, I asked them...                      |
+-----------------------------------------------------------------------------+
Newsgroups: comp.unix.questions
From: dwight@hyphen.com (Dwight Ernest)
Subject: Re: Script for killing mutiple processes?
Organization: Hyphen, Inc., Wilmington, MA 01887 USA / +1 508 988-0880
Date: Sat, 25 Jul 1992 22:33:15 GMT

tchrist@convex.COM (Tom Christiansen) writes:
>From the keyboard of rdorich@jade.tufts.edu (Rob):
>:In order to kill many jobs running on the background, I ususally use
>:the following trick:
>:
>:kill -9 `ps -aux | grep myname | grep filename | awk '{print $2}'`

>Come now.  You've got an awk going.  Just what do you need a grep
>for, let alone two of them?

>You're also not being very careful about suicide.

And a -9 signal will overcome any signal handler that a careful
programmer may have put into the target of the kill to do cleanup.
A -15 should be tried first, then a short sleep, and if the process
still exists, then and only then should a -9 be sent.
-- 
--Dwight A. Ernest	Special Projects Engineer	I speak only for myself.
  Hyphen, Inc. / 187 Ballardvale St. / Wilmington, MA 01887 / +1 508 988 0880
  dae@world.std.com		dwight@hyphen.com
Newsgroups: comp.unix.questions
From: amir@cs.columbia.edu (Amiran Eliashvili)
Subject: Memory leaks
Organization: Columbia University Department of Computer Science
Date: Wed, 22 Jul 1992 03:07:09 GMT



Hi all:


	I was wondering if there are any utilities in PD that will
check for memory leaks. Has anyone used such utilities before? If so,
how helpful were they?

Please reply to amir@cs.columbia.edu

Thanks
/amiran
From: dwabra@watson.ibm.com
Newsgroups: comp.unix.questions
Date: 18 Jul 92 03:11 MDT
Subject: Automating remote logins etc. with 
Nf-ID: #N:DWABRA.92Jul17181120@stmiris.ibm:1132825017:001:498
Nf-From: watson.ibm.com!dwabra    Jul 18 03:11:00 1992


I would like to log in to another machine, grab some files and then
launch an analysis routine that looks at the data received.  Any
examples of shell scripts that do similar things would be gratefully
appreciated.  (I need to understand the i/o that talks to the remote
machine from within the script, and understands enough to respond
properly).  I would like to do this in sh. 
Thanks!
--
David Abraham                  dwabra@watson.ibm.com
IBM T.J. Watson Research Laboratory   (914) 945-2573

Newsgroups: comp.unix.questions
From: ratner@ficus.cs.ucla.edu (David Ratner)
Subject: Re: unix mail
Organization: UCLA, Computer Science Department
Date: 23 Jul 92 17:31:36 GMT

ssoni@cs.colgate.edu writes:

>What kind of editor is used for the mail in unix?
>What are the cursor positioning and test modification cmds?

You can specify whatever editor you want (like vi, emacs, etc)
using the EDITOR command in your .mailrc file.

Read the man page for mail.

Dave Ratner

--
* *  ***  *     *    |   Dave "Van Damme" Ratner
* *  *    *    * *  / \  ratner@cs.ucla.edu
* *  *    *    ***  \ /  
***  ***  ***  * *   |   "Wham Bam, thank you Van Damme!"
From: lwall@netlabs.com (Larry Wall)
Newsgroups: comp.unix.questions
Subject: Re: Good way to strip K&R style comments
Date: 31 Jul 92 05:50:06 GMT
Organization: NetLabs, Inc.

In article <1251@bridge2.NSD.3Com.COM> div@NAD.3Com.COM writes:
: 1.The shortest perl solution was from  guru and was as follows
: 
: perl -e 'undef($/);$_=<>;s/\/\*[^\000]*\*\///g;print'   filename

That's actually incorrect for any program with more than one comment--it'll
eat everything between the first and last comment.  The following will
do much better:

    perl -e '$/ = "*/"; while (<>) { $_ = $` if m!/\*!; print; }'

Larry
Newsgroups: comp.unix.questions
From: ckd@eff.org (Christopher Davis)
Subject: Re: Read/Write and caching, for TEMPEST
Organization: Electronic Frontier Foundation Tech Central
Date: Fri, 24 Jul 1992 17:04:24 GMT

Alan> == Alan Rollow <alan@nabeth.enet.dec.com> 
RHL>  == rhl@valhalla.mitre.org writes:

 RHL> 1)  Is there a way to force it to physically read the disk
 RHL> every time without caching?

 Alan> Yes.  Unmount the file system between reads.  Since that will
 Alan> be extraordinarly inconvient, you might just try reading the
 Alan> disk directly, rather than going through the file system.

Even that makes no guarantees with the current generation of caching
SCSI controllers; the disk may very well have a one-track or more cache
that you're just pumping data into and getting it back from...
--
Christopher Davis * ckd@eff.org * System Administrator, EFF * +1 617 864 0665
   ``The First Amendment is often inconvenient.  But that is besides the
  point.  Inconvenience does not absolve the government of its obligation
         to tolerate speech.'' --Justice Anthony Kennedy, in 91-155
Newsgroups: comp.unix.questions
From: uujune@mars.lerc.nasa.gov (June Thompson)
Subject: migration to "open systems"
News-Software: VAX/VMS VNEWS 1.41    
Organization: NASA Lewis Research Center
Date: 28 Jul 1992 16:12 EDT  


A team at NASA Lewis is working in "right-sizing" our centrally supported 
midrange computer services.  The currently supported operating systems include
VM, MVS, VMS as well as UNIX.  We plan on moving towards the "open systems"
environment focusing on service to the scientific user, portability of 
applications and users, and cost effectiveness.  The team is interested and
in sharing information with sites that are addressing this same issue,  
especially in the strategies being used for this migration.  If you can
provide help or information please E-Mail to uujune@ariel.lerc.nasa.gov .


-----------------------------------------------------------------------------
!           june thompson           !  phone:216:433:5233                   !
-----------------------------------------------------------------------------
!     nasa lewis research center    ! email:uujune@mars.lerc.nasa.gov       !
------------------------------------------------------------------------------
Newsgroups: comp.unix.questions
From: mgleibma@nyx.cs.du.edu (Michael Gleibman)
Subject: the .elm file
Organization: Nyx, Public Access Unix @ U. of Denver Math/CS dept.
Date: Fri, 24 Jul 92 11:58:07 GMT
From: ctuel@zeus.calpoly.edu (Cliff Tuel)
Newsgroups: comp.unix.questions
Subject: Re: Changing Idle Time
Date: 29 Jul 92 20:05:54 GMT
Organization: Cal Poly, San Luis Obispo

scotth@fritz.filenet.com (Scott Hopson) said...
|If you have people checking up on you by looking at your idle time
|which is displayed by finger, then this might help. This program
|constantly updates you terminal idle time so you appear to be working all the
|time. This program runs as a daemon and updates any terminal you happen to
|logon to.   Have Fun....

[ Program based on "utime(ttypath,NULL)" deleted ]

Maybe this wasn't the intent of your program, but our local network kicks
off anyone idle for more than 30 minutes, and changing the atime and mtime
of the tty has no effect.  You need to simulate terminal activity using
"ioctl(1, TIOCSTI, s)".  For example:

	void typestring (s)
	char *s;
	{
		while (*s) {
			ioctl(1, TIOCSTI, s);
			*s++;
		}
		ioctl(1, TIOCSTI, "^M");
	}

Run this from a background process, first doing a "signal (SIGTTOU, SIG_IGN)"
to allow writes from the background.  Try stuff like: typestring ("uptime").

Another thing to consider is to have the forked process commit suicide if
you log out.  Passing the shell's pid to the forked child is a little tricky
but not impossible.  Once you have the pid, you can do:

	if (kill (shellpid, 0) == -1) 
		exit (1);

Finally, you should watch the idle time on the tty, and only call typestring()
if the time is greater than some threshold:

	timenow = time ((time_t *) NULL);
	stat (ttyname, stbuf);

	if ((timenow - stbuf->st_mtime) > IDLETIME) 
		typestring (s);


-- 
Cliff Tuel                   __o o__ 
HP/Apollo System Admin       \( v )/       YELLO & ART OF NOISE mailing lists:
Cal Poly, San Luis Obispo     /___\      Yello-request@polyslo.CSc.CalPoly.edu
ctuel@nike.CalPoly.edu         ^ ^         AoN-request@polyslo.CSc.CalPoly.edu
Newsgroups: comp.unix.questions
From: david@umbc4.umbc.edu (Dave Brookshire)
Subject: Re: the .elm file
Organization: University of Maryland Baltimore County, ACS
Date: Mon, 27 Jul 1992 18:24:20 GMT

(Michael Gleibman) writes:

>Can you explain me , please , the usage of the .elm file .
>Any help is appreciated . Thank you in advance . 
>                               Michael Gleibman .


Usually (take note of that word) is actually a directory for the ELM mail
program.  It contains your mailing alias information, and your elmrc file, 
which contains your default info for the program.


David

****************************************************************************
David S. Brookshire          | Internet:	david@umbc3.umbc.edu   
Academic Computing Services  | Bitnet:		david@umbc
Microcomputer Support        |
University of MD, Balt. Co.  | 		                     
****************************************************************************
*        Work Phone:   (410)455-2683  | FAX Phone:   (410)455-1065         *
****************************************************************************


Newsgroups: comp.unix.questions
From: pbeach@orlith.bates.edu (Preston Beach)
Subject: Where is ftp site with latest RZ and SZ (or source for them)
Organization: Bates College, Lewiston, Maine
Date: Mon, 27 Jul 1992 19:21:44 GMT


To whom it may concern :
  I have currently an old version of rz and sz which has a tendency to hang
up the line and cause me to have to hangup my modem when calling my
school's UNIX machine. Now I might be having problems because of my program
on the calling side. Is there any specific configuration I should be setting
as I have tried many and not seen any change.  This leads me to this request,

I am looking for an anonymous ftp site which has the LATEST RZ and SZ
programs and/or source (should I need to compile it for our UNIX machine).
Could someone please send the address and the path and filename therein
if possible.
Thanks in advance.
-Preston

EMAIL : pbeach@orlith.bates.edu
From: iba@rti.rti.org
Newsgroups: comp.unix.questions
Date: 17 Jul 92 18:25 MDT
Subject: LaTeX ftp site!!
Nf-ID: #N:1992Jul17.142514.3311@rti.rti.or:-346371201:001:221
Nf-From: rti.rti.org!iba    Jul 17 18:25:00 1992


Several months ago an ftp site was discussed where one could get all
kinds of LaTex information and help.  I would appreciate it if anyone
could  e-mail me the ftp site address.  I'm in need of some help.

Thanks

Ingrid

Newsgroups: comp.unix.questions
From: Tom Christiansen <tchrist@convex.COM>
Subject: Re: need "ls"-like output w/full path
Originator: tchrist@convex.convex.com
Reply-To: tchrist@convex.COM (Tom Christiansen)
Organization: CONVEX Realtime Development, Colorado Springs, CO
Date: Thu, 30 Jul 1992 23:02:42 GMT
X-Disclaimer: This message was written by a user at CONVEX Computer
              Corp. The opinions expressed are those of the user and
              not necessarily those of CONVEX.

From the keyboard of tmike@cmptrc.lonestar.org (T. Mike Howeth):
:In articles all over the place, lots of people write:
:
:| How about doing it this way...
:
:What does everyone have against:
:       find <dir> -print -path <dir> -only | sed 1d

Merely this:


    $ find dir -print -path dir -only
    find: bad option < -path >
    
    $ find dir -print -only
    find: bad option < -only >


    $ gnufind dir -print -path dir -only
    find: invalid predicate `-path'
    
    $ gnufind dir -print -only
    find: invalid predicate `-only'


    $ find2perl dir -print -path dir -only
    Unrecognized switch: -path

    $ find2perl dir -print -only
    Unrecognized switch: -only


Ok, I give -- what do they do?


--tom
-- 
    Tom Christiansen      tchrist@convex.com      convex!tchrist

    "* Unix is a footnote of AT&T Bell Laboratories."
			     --Barry Shein
Newsgroups: comp.unix.questions,comp.unix.programmer
From: dhirmes@hamp.hampshire.edu
Subject: need help with select() problem
Organization: Hampshire College
Date: Fri, 31 Jul 1992 19:22:19 GMT


I'm trying to write a routine that will send stdin out a stream socket
and receive data coming in from a stream socket at the same time. To
do this, I'm using select(2).  But when I run the following routine
in my program, it just sits there.
After many hours of fiddling, I can't seem to figure out the problem.
Any ideas?

dhirmes@hamp.hampshire.edu


	ear is a fd for a listening socket...

	FD_ZERO(&sock_set);
	FD_SET(ear,&sock_set);
	FD_SET(fileno(stdin),&sock_set);
	backup = sock_set;

	while(1) {
	  wait.tv_sec = A_LONG_TIME;
	  wait.tv_usec = 0;
	  nb = select(64, &sock_set, 0, 0, &wait);

	  if (nb < 0) {
	    perror("select");
	    exit(0);
	  }
	  if (FD_ISSET(ear,&sock_set) != 0) {
	    nb = read(ear, temp2, sizeof temp2);
	    if (nb < 0) {
	      perror("read");
	      exit(0);
	    }
	    printf("[%s]",temp2);
	    sock_set = backup;
	  }
	  if (FD_ISSET(fileno(stdin),&sock_set) != 0) {
	    ioctl(0, FIONREAD, (struct sgttyb *) &nb);
	    nb = read(0, temp, nb);
	    nb = write(s_talk, temp, nb);
	    if (nb < 0) {
	      perror("write");
	      exit(0);
	    }
	    sock_set = backup;
	  }
	}

Newsgroups: comp.unix.questions
From: lent@ezra.mcs.anl.gov (Mr. George E. Lent)
Subject: internet mail dump
Keywords: mail dump uucp 
Organization: Argonne National Laboratory, Chicago
Date: Fri, 24 Jul 1992 21:39:12 GMT

I go to a small college, so small in fact, we do not have an internet 
connection.  This unfortunate state is likely to continue for a while.
Is it possible to create a mail drop in an existing internet site and
periodicly upload and download the mail, via uucp or something?  This 
would at least give us mail access, even though a bit delayed.  Has
anyone done this?  Can anyone point me in the correct direction for
software and information?  I would probably be the most likely 
canidate for getting this accomplished on our system and would be
done in my spare time, but a lot can ge learned (hopefully).
We are within a local call to a larger university on internet.
Our current setup is an AT+T 3B2/600 running System V and a network of PC's
and ATT+T unix PC's networked under Starlan,  a modem
is connected to the system, but I do not know much about it's
configuration.  The unix that is loaded seems pretty stripped so please
be pretty explicit and all encompassing with what I need.  And of course
everything will need to be PD or at least free.  I will need
to obtain everything necessary while I am still connected via my
summer intership.  you can e-mail me (til aug 14) at
lent@mcs.anl.gov
THANKS!
elent
Newsgroups: comp.unix.questions
From: nll@cbnewsb.cb.att.com (neal.l.leitner)
Subject: Vi Question
Organization: AT&T
Date: Tue, 21 Jul 1992 12:20:45 GMT

I recall on Unix Sys V running on an Amdahl, when you were in vi and
did a search that wrapped around, there was a message displayed on the
bottom of the screen telling you that the Search Wrapped Around.

Currently, I am running Unix Sys V rel 3.2.3 and 4.0, and this feature
does not seem to be available or turned on.  Does anyone know how to
enable this feature???

All help is appreciated.

Neal Leitner
From: alan@nabeth.enet.dec.com (Alan Rollow - Alan's Home for Wayward Tumbleweeds.)
Newsgroups: comp.unix.questions
Subject: Re: Read/Write and caching, for TEMPEST
Date: 23 Jul 92 18:21:24 GMT
Reply-To: alan@nabeth.enet.dec.com (Alan Rollow - Alan's Home for Wayward Tumbleweeds.)
Organization: Digital Equipment Corporation


In article <RHL.92Jul17094825@valhalla.mitre>, rhl@valhalla.mitre.org writes:
>
>1)  Is there a way to force it to physically read the disk
>every time without caching?

Yes.  Unmount the file system between reads.  Since that will
be extraordinarly inconvient, you might just try reading the
disk directly, rather than going through the file system.

>
>2)  Would I have the same problem with writing?  If I loop and
>continuously write 1 sector of data, making sure I fseek to the
>beginning of the file every time, will it physically write the data to
>the disk every time if the data doesn't change?

Probably not, but it depends on the system, the hardware configuration,
and the policy of merging writes.  A system that does write merging won't
write the sector until update calls sync(2).  A system with a non-volitile
fast write cache, may not write the sector at all until the cache is
flushed (Prestoserve (tm)).  If the system supports the O_FSYNC flag
on open, then it's likely that every sector will go to disk if there
isn't any interesting hardware in the way.

Once again, it may be easier to write directly to the disk.

>
>3)Can I be guaranteed that 'testfile' will be located at the same sector
>every time?

If you're the only process on that file system I'd expect that it would,
but I'd check directly with the vendor to see if they can GUARANTEE it.
>
--
Alan Rollow				alan@nabeth.cxo.dec.com
From: absc@tygra.Michigan.COM
Newsgroups: comp.unix.questions
Date: 17 Jul 92 23:56 MDT
Subject: Re: need "ls"-like output w/full path
Nf-ID: #R:1992Jul13.234001.18747@amhux2.am:851811750:1992Jul17.195614.1703@tygra.mich:-1369498913:001:919
Nf-From: tygra.michigan.com!absc    Jul 17 23:56:00 1992


In article <1992Jul13.234001.18747@amhux2.amherst.edu> pfcouvar@amhux1.amherst.edu (Peter Couvares) writes:
>	How can I get "ls" to display a directory of files like this:
>
>(say I'm in /usr/users/pfcouvar)
>
>/usr/users/pfcouvar/.login
>/usr/users/pfcouvar/.newsrc
>/usr/users/pfcouvar/News/
>/usr/users/pfcouvar/unix-questions
>/usr/users/pfcouvar/acksaysbill
>/usr/users/pfcouvar/legalizedrugs
>
>	Since it isn't an option on "ls" (at least not here), I presume it
>will involve prepending the current directory onto the output of "ls -1",
>but I haven't been able to get this to work. Any help would be appreciated.

Try:
	find `pwd` -print



-- 
=  CAT-TALK Conferencing Network, Computer Conferencing and File Archive  =
-  1-313-790-6426, 300/1200/2400/9600 baud, 8/N/1. New users use 'new'    - 
=  as a login id.  AVAILABLE VIA PC-PURSUIT!!! (City code "MIDET")        =
   E-MAIL Address: absc@Michigan.COM
From: ttsai@haydn.crhc.uiuc.edu (Timothy Tsai)
Newsgroups: comp.unix.questions
Subject: Calling kernel routines?
Date: 27 Jul 1992 10:20:24 -0500
Organization: Center for Reliable and High-Performance Computing, University of Illinois at Urbana-Champaign
NNTP-Posting-Host: haydn.crhc.uiuc.edu

I am using the NonStop-UX OS on a Tandem Integrity S2.  I would like to be able
to call a specific routine in the kernel for which there is no system call.  I
have superuser privileges and also the kernel source code.

I found the address of the kernel routine I want to access.  Then I wrote a
C program, in which I assigned the kernel routine address to a function
pointer.  When I tried to call the function, I got a "Bus error."  Is the
kernel space I'm trying to access protected against calls of this nature?  If
so, how can I get around this restriction?

Any help or ideas would be appreciated.  
Please send email to ttsai@uiuc.edu

Timothy Tsai
Newsgroups: comp.unix.questions
From: agc@bnr.ca (Alan Carter)
Subject: Re: Script for killing mutiple processes?
Organization: BNR-Europe-Limited, Maidenhead, England
Date: Tue, 21 Jul 1992 17:39:24 GMT

In article <1992Jul21.135406.10224@ncsu.edu>, odkahn@eos.ncsu.edu (Opher D. Kahn) writes:
|> I am working with a experimental database server that forks
|> off child processes to serve multiple clients.  However, some
|> times these processes do not terminate correctly, and I am left
|> with 10-15 child processes that need to be killed.  Is it possible
|> to somehow pipe the process numbers from 'ps -aux | grep dood' into
|> a kill command, so that I don't have to kill each one of them
|> manually???  (dood is the name of the process).
|> Thanks, 

There is a general magic for this kind of thing. Bear in mind I've got System V
type ps here, and Korn shell. 

1. Get the ps output, filter out the ones that mention dood, but don't forget
   to throw away the line where dood is the argument!

      ps -ef | grep dood | grep -v grep 

2. Now use a tool to chop out the pid field, I've used awk but cut would work.
   Check that your Berzerkely ps puts the pid on field 2, I can't remember.

      ps -ef | grep dood | grep -v grep | awk { print $2 }

3. Finally, do whatever you want with this stream of numbers, and chuck the 
   lot through more so that you can relish the death of each. Put it in a file
   with #!/bin/ksh at the top so when it is executed the correct interpreter
   is used.

      #!/bin/ksh
      ps -ef | grep dood | grep -v grep | awk { print $2 } | while read var
      do
         echo "THIS IS DEATH, $var"
         kill $var
      done | more

Bear in mind the dangers of letting automated kills run around on your precious
system, and never, ever, do something like this as root.

Enjoy, Alan!