Moreutils
joeyh.name
joeyh.name
There are two conflicting implementations of a parallel utility. And from what I can tell, the GNU parallel utility is much more useful than the one in moreutils. Which meant that when I was 1) doing processing which benefited greatly from parallelization and 2) found that the moreutils version wasn't doing what I wanted nor could I figure out how to make it do so (compounded by confusion over online searched providing GNU parallels syntax which didn't work), I had to remove the entire moreutils set to install GNU parallels under Debian.
The two versions aren't even a candidate for /etc/alternatives resolution as the commandline syntax and behavior differs.
Either a name change or refactoring to a different package for the 'parallel' utility would avoid much of this.
And I'd really like to see numutils packaged.
Also: 'unsort': sort -R | --random-sort
(using GNU coreutils 8.23)
(I'm not familiar with a seed-based randomized sorting utility though.)
This is the relevant current bug on the matter against moreutils: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=718816
Joey's apparent resistance to simply splitting out 'parallel' to its own package is ... disappointing. His final comment (regarding other utilities in upstream and switches) is non sequiturs and red herrings.
Where boneheads like Joey get to block trivial fixes for decades (5 years and counting in this case). The project really needs a better process to terminate 'lame' maintainers.
He's no longer the package maintainer, which should make the split more viable.
For example:
pee ->
some_process | tee >(command_one) | tee >(command_two) [...]
# This one might need a bit more magic with named pipes to consolidate the output without race conditions, since command_N will be executed in parallel. Or take a note from the chronic replacement below and use a temporary file to execute them serially.
chronic ->
TMPFILE=$(mktemp) some_process 2>&1 > $TMPFILE || cat $TMPFILE; rm $TMPFILE
zrun ->
command <(gunzip -c somefile)
Still, having a utility to abstract away the pipes makes sense. $ man ./chronic.1 | col -b | grep -v ^$ | head -n 12
CHRONIC(1) CHRONIC(1)
NAME
chronic - runs a command quietly unless it fails
SYNOPSIS
chronic COMMAND...
DESCRIPTION
chronic runs a command, and arranges for its standard out and standard error to only be displayed if the command fails (exits nonzero or
crashes). If the command succeeds, any extraneous output will be hidden.
A common use for chronic is for running a cron job. Rather than trying to keep the command quiet, and having to deal with mails containing
accidental output when it succeeds, and not verbose enough output when it fails, you can just run it verbosely always, and use chronic to
hide the successful output.
0 1 * * * chronic backup # instead of backup >/dev/null 2>&1More people might use this if the author put those docs online and linked to them from the main page. I don't know docbook but it looks like styling it as HTML should be easy.
Now I understand pee. I wrote something less generalized here:
https://github.com/pjungwir/stutter
I guess `stutter foo` is equivalent to `pee cat foo`.
$ echo hi |sponge y
over: $ echo hi > y
?> Unlike a shell redirect, sponge soaks up all its input before opening the output file. This allows constructing pipelines that read from and write to the same file.
$ echo 'foo' > foo
$ echo 'bar' > bar
$ cat foo bar > foo
cat: foo: input file is output file
$ cat foo
bar
vs $ echo 'foo' > foo
$ echo 'bar' > bar
$ cat foo bar | sponge foo
$ cat foo
foo
barhttps://www.gnu.org/software/emacs/manual/html_node/emacs/Wd...
EDITOR=emacs vidir .I just checked; the repo tags releases in some reasonably proper manner. (Personally I prefer some prefix like "release_0.2" to a tag simply named "0.2", but it does the job.)
No, they have different uses. I simply want to install the software, so I want a source release tarball. Source releases include more than what a git repo provides, such as pre-built configure scripts and Makefiles. A tag in a git repo is no substitute for a proper release.
bt (between)
counts the time between occurrences of the given string on stdin stdin is consumed. output will be the times in floating point seconds, one per line
(ulimit -d 1024; <command>)
Or you could do it in one normal looking command with rlimit. rlimit -d 1m <command>
Plus rlimit can set things like real-time priority which ulimit cannot.