From owner-freebsd-hackers@freebsd.org Tue Jan 26 09:08:32 2021 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6BBC14E6311 for ; Tue, 26 Jan 2021 09:08:32 +0000 (UTC) (envelope-from alx.manpages@gmail.com) Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4DQ19q2LLhz3FG1; Tue, 26 Jan 2021 09:08:31 +0000 (UTC) (envelope-from alx.manpages@gmail.com) Received: by mail-wr1-x42e.google.com with SMTP id 6so15603259wri.3; Tue, 26 Jan 2021 01:08:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:cc:references:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=qQxlWty85dvfGFlbA5g1keGbJcIY/a/+CTU5RPzQHpY=; b=YlGolM/fDumf4LdRNZGoOlfchWA4g12BQ6lVsA0KoxqibrBvbt7gh9Ir46FcPS1Lbm zJm2PWRg42z0/XaqfzZtYmJ91c2XO37QZHMgAln9uf/1LAzkqQMPaHJS1836UDooRxl3 AmVmeTnoVX0Nc2nwGQ8A3E2P3zAf9AzMNL22Y91XOL0SXi6u6L+RG2i2o6W5TJmt1HZr vlYYmiEGlnnMYy+A0u5S+QS/1FBf4BILqK0Uv3Bh+rNZgKPgN7rR1wptPETLdm7rFSm/ k9JApQonQ6m0lwSL+uLt0V5vcInxMutwpJz/uj6ZaHgialbqFiaXlZ/5ily8MmoiHh0K JQ0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=qQxlWty85dvfGFlbA5g1keGbJcIY/a/+CTU5RPzQHpY=; b=RXJsOGnAHWuqMAAi0FFRCgfHOA/X0Xjt3/W3pSl+Nwn8uEm4ZgugBhVxBnGMHehnvw 3od773fuPrgnseMVXP6eFEiDiVBVqDFnV4Df15A7cItMl0WO3mUSyjrbutQGM2QpQWHD 4QKBj1QxXTgGsQQ3ESjCP7sZ0cFYDkD1Puhw8doW/SYMMmVlxtHNcwcBQNwwTJoV9zfW 8+SQSZwn/DakfVOFIajf2hCggtcVSw2l2byCRZid9Ptw8CesaxiFvhxtiMLI9M0Vp3rX on7eyw6jNTci8EuPzH/3NCS6fPGzPjyIoLYacvo9R+IV/Gi+utJrTQ0NqtubN+tX9WJk fV1A== X-Gm-Message-State: AOAM532bSTcY1iVw1GM6QzOvPx/i8stvbKqTI/AntGoY8oXeiTrWNeyZ cri5KD+Wh1Ed1Gey0Yl77Yk= X-Google-Smtp-Source: ABdhPJzlehwChFhg6kzuG7riJ8kiJZF8hNS9m8rUH/O+l+37pvC8oDm6hOIF/vAjkuDamc9wZKRvgQ== X-Received: by 2002:a5d:6509:: with SMTP id x9mr4984029wru.229.1611652108362; Tue, 26 Jan 2021 01:08:28 -0800 (PST) Received: from [10.8.0.134] ([195.53.121.100]) by smtp.gmail.com with ESMTPSA id a62sm2472818wmf.7.2021.01.26.01.08.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 26 Jan 2021 01:08:27 -0800 (PST) Subject: Re: [PATCH v3 (resend)] tee: Add -q, --quiet, --silent option to not write to stdout From: "Alejandro Colomar (man-pages)" To: Bernhard Voelker , Coreutils Cc: Fabrice BAUZAC , Otto Moerbeek , Alex Henrie , juli@clockworksquid.com, Jeffrey Walton , freebsd-hackers@freebsd.org, William Ahern , Roman Czyborra , oshogbo@freebsd.org, tech@openbsd.org, Christian Groessler , linux-api@vger.kernel.org, Michael Kerrisk , ed@nuxi.nl, Eric Pruitt References: <1f8ce444-35e2-56a7-dbd1-34e885372b11@gmail.com> <20210124121845.38293-1-alx.manpages@gmail.com> Message-ID: <834af55b-0935-ec2f-784c-3874cd05ba75@gmail.com> Date: Tue, 26 Jan 2021 10:08:24 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 4DQ19q2LLhz3FG1 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=YlGolM/f; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of alxmanpages@gmail.com designates 2a00:1450:4864:20::42e as permitted sender) smtp.mailfrom=alxmanpages@gmail.com X-Spamd-Result: default: False [-2.50 / 15.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2a00:1450:4000::/36:c]; FREEMAIL_FROM(0.00)[gmail.com]; RCVD_COUNT_THREE(0.00)[3]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; NEURAL_HAM_SHORT(-1.00)[-1.000]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2a00:1450::/32, country:US]; MID_RHS_MATCH_FROM(0.00)[]; TAGGED_FROM(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; ARC_NA(0.00)[]; RBL_DBL_DONT_QUERY_IPS(0.00)[2a00:1450:4864:20::42e:from]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; FROM_HAS_DN(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; TAGGED_RCPT(0.00)[]; MIME_GOOD(-0.10)[text/plain]; SPAMHAUS_ZRD(0.00)[2a00:1450:4864:20::42e:from:127.0.2.255]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCPT_COUNT_TWELVE(0.00)[17]; RCVD_IN_DNSWL_NONE(0.00)[2a00:1450:4864:20::42e:from]; FREEMAIL_CC(0.00)[mykolab.com,drijf.net,gmail.com,clockworksquid.com,freebsd.org,25thandclement.com,czyborra.com,openbsd.org,groessler.org,vger.kernel.org,nuxi.nl]; RCVD_TLS_ALL(0.00)[]; SUSPICIOUS_RECIPS(1.50)[]; MAILMAN_DEST(0.00)[freebsd-hackers] X-Mailman-Approved-At: Tue, 26 Jan 2021 11:44:40 +0000 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Technical discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Jan 2021 09:08:32 -0000 Hi Berny, On 1/25/21 12:33 PM, Alejandro Colomar (man-pages) wrote: > On 1/25/21 5:03 AM, Bernhard Voelker wrote: >> On 1/24/21 9:01 PM, Alex Henrie wrote: >>> I am definitely interested. Bernhard Voelker seemed to express >>> interest as well, conditional on -q being added to POSIX first.[1] >> >> Just to clarify: I'm not as enthusiastic to add that option as it >> may have sounded. >> >> Let me put it like this: if -q once gets standardized by POSIX, >> then we'd take it over in the GNU tee implementation. >> >> Let me summarize so far: >> The suggestion is to solve the problem to save some data coming from >> a pipe as a different user. >> There are at least those known solutions: >>    - use > or >> redirection. >>    - use dd(1) >> >> I have the impression that a home for this feature was searched >> in any tool, and as tee(1) already knew how to write to a file, >> had the "append" feature, and is often used in pipes, it was >> tempting to add it there. >> >> But looking deeper, --quiet doesn't seem to fit well into 'tee'. >> It even contradicts to the title line in the man page: >>    "read from standard input and write to standard output and files" >> >> An off-tech argument: ask a local plumber if he'd would ever use >> a tee piece instead of a pipe end piece.  I guess he would only >> if he wouldn't have anything else at hand. > > I never knew what 'tee' meant.  That makes sense now. > >> >> A word to the proposed patch: what should happen, if the user does >> not give a file? >>    A | B | tee -q >> The patch just silently ignored that situation which feels wrong. >> >> Therefore, adding a feature which does not really fit is wrong, and >> contradicts the one-tool-for-one-purpose UNIX philosophy. >> > > Agreed. > >> OTOH I understand that there's a little gap in the tool landscape. >> Astonishingly, there doesn't seem to exist a trivial tool to redirect >> from standard input (or any other input file descriptor) to a file. >> I wrote such a little tool in the attached: >> >>    $ src/sink --help >>    Usage: src/sink [OPTION]... FILE >>    Copy input stream to FILE. >> >>    Mandatory arguments to long options are mandatory for short options >> too. >> >>      -a, --append              append to the given FILE, do not overwrite >>      -c, --create              ensure to create FILE, error if exists >>      -i, --input-stream=FD     read from stream FD instead of standard >> input On second thought, this program does two things: read any FD, and write to file. I think it should be limited to writing to a file from stdin. If you think there's a need for reading FDs other than 0, you might as well want to pipe that information you're reading from them to filter it with another tool, and this program doesn't allow you to do that, as it's a sink. So, I would remove '-i, --input-stream'. (And if you think it's missing, maybe write a program to read from any FD and write to stdout.) Regards, Alex >> >>    The default input stream number FD is 0, representing the standard >> input. >> >> This allows not only to copy data from standard input, but from any >> file descriptor open for reading.  It also allows control over >> how the output file will be opened (e.g. with O_CREAT|E_EXCL). >> >> The OPs case would look like: >> >>    echo 'foo' | sudo sink /etc/foo >> or >>    echo 'foo' | sudo sink -a /etc/foo  # append. >> or >>    echo 'foo' | sudo sink -c /etc/foo  # ensure creation of the file. >> >> I'm not sure if this will ever be considered for inclusion - >> I just did it "for fun". ;-) > > Tested-by: Alejandro Colomar > Reviewed-by: Alejandro Colomar > > Much better than my patch.  :-) > >> >> Have a nice day, >> Berny >> > > Have a nice day! > Alex > > > -- > Alejandro Colomar > Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ > http://www.alejandro-colomar.es/ -- -- Alejandro Colomar Linux man-pages comaintainer; https://www.kernel.org/doc/man-pages/ http://www.alejandro-colomar.es/