public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Paul Jackson <pj@sgi•com>
To: Linus Torvalds <torvalds@osdl•org>
Cc: git@vger•kernel.org, pasky@ucw•cz
Subject: Re: How to get bash to shut up about SIGPIPE?
Date: Fri, 29 Apr 2005 23:29:22 -0700	[thread overview]
Message-ID: <20050429232922.03057aba.pj@sgi.com> (raw)
In-Reply-To: <Pine.LNX.4.58.0504291956030.2296@ppc970.osdl.org>

Linus replied to pj:
> > Code Sample 2:
> > ...
> Didn't change anything for me. Same thing.

I don't believe you did what I did.

The source code for bash, both 2.x and 3.x versions, clearly displays a
simpler error message (no line number or redisplay of your script
commands) in the case that you set a trap.  And I tested both shells on
a multiprocessor, to verify that they behaved as I expected, running
these silly little scripts.

To labour the point, just now on a multiprocessor near me, the following
six line script:

    ======================== begin ========================
    #!/usr/people/pj/etc/bash/bash-3.0/bash
    for x in 1 2
    do
	    trap continue PIPE      # reduce broken pipe screeching
	    cat /etc/termcap        # a big text file
    done | sed 1q
    ========================= end =========================

produced the following three lines of output:

    ======================== begin ========================
    ######## TERMINAL TYPE DESCRIPTIONS SOURCE FILE
    Broken pipe
    Broken pipe
    ========================= end =========================


whereas the following five line script (no trap):

    ======================== begin ========================
    #!/usr/people/pj/etc/bash/bash-3.0/bash
    for x in 1 2
    do
	    cat /etc/termcap        # a big text file
    done | sed 1q
    ========================= end =========================


produced the following three __noisier__ lines of output:

    ======================== begin ========================
    ######## TERMINAL TYPE DESCRIPTIONS SOURCE FILE
    foo: line 2: 11663 Broken pipe             cat /etc/termcap
    foo: line 2: 11665 Broken pipe             cat /etc/termcap
    ========================= end =========================



> > just that noise, leaving whatever else was on stdout and/or stderr
> > unscathed:
> 
> It will also grep out any occurrence of "Broken pipe", so if we're talking 
> about a kernel changelog, where we fix a pipe bug...

No no no.  You didn't read the code or the comment ;).  That or my code
and comment were both unclear ... far more likely.

The following line noise is not plagarized from last years Obfuscated
Perl Contest:

    ( ( (
	...
    ) 1>&3 ) 2>&1 | grep -vxF 'Broken pipe' 1>&2 ) 3>&1

It's the magic shell incantation to run grep only on the stderr stream,
while passing through the stdout stream untouched.  Even on the stderr
stream, it only zaps lines that are exactly the eleven characters
'Broken pipe' (plus newline).

> I don't know why the bash people have that stupid pipe reporting in the 

Now there we agree.  I might speculate that they were trying to get an
early lead in the Linus Git of the Year contest. But this is relatively
mild compared to some of the crap I've seen on other projects I won't
name here.  So I too am at a loss to know why.

-- 
                  I won't rest till it's the best ...
                  Programmer, Linux Scalability
                  Paul Jackson <pj@engr•sgi.com> 1.650.933.1373, 1.925.600.0401

  reply	other threads:[~2005-04-30  6:24 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-28 18:28 How to get bash to shut up about SIGPIPE? Linus Torvalds
2005-04-28 19:03 ` Rene Scharfe
2005-04-28 19:21   ` Linus Torvalds
2005-04-28 20:13     ` Rene Scharfe
2005-04-28 20:27     ` Ryan Anderson
2005-04-28 20:47       ` Linus Torvalds
2005-05-01 12:07       ` Herbert Xu
2005-05-01 15:51         ` David A. Wheeler
2005-05-02 16:10           ` Paul Jackson
2005-05-04  2:30             ` David A. Wheeler
2005-05-04  2:50               ` Linus Torvalds
2005-05-04  8:26                 ` Herbert Xu
2005-04-28 21:31 ` Edgar Toernig
2005-04-28 22:16   ` Linus Torvalds
2005-04-29  1:00 ` Joshua T. Corbin
2005-04-30  0:22 ` Paul Jackson
2005-04-30  2:59   ` Linus Torvalds
2005-04-30  6:29     ` Paul Jackson [this message]
2005-04-30 11:04       ` Rene Scharfe
2005-05-02 22:17         ` Paul Jackson
2005-05-02 23:17         ` Petr Baudis
2005-05-03  1:44           ` Paul Jackson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050429232922.03057aba.pj@sgi.com \
    --to=pj@sgi$(echo .)com \
    --cc=git@vger$(echo .)kernel.org \
    --cc=pasky@ucw$(echo .)cz \
    --cc=torvalds@osdl$(echo .)org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox