3 ms·
A few that I wish hadn't been ignored from 4BSD: jot -- print sequential or random data rs -- reshape a data array vis -- display non-printable c
by kps 6y ago
A few that I wish hadn't been ignored from 4BSD:
jot -- print sequential or random data
rs -- reshape a data array
vis -- display non-printable characters in a visual format
and from Unix >V7:
apply -- apply a command to a set of arguments
mc -- multicolumn print
and from AT&T:
tw -- file tree walk
And then the obligatory personal tools that have stood the test of time:
align -- align text columns
crop -- crop lines to a width
dabl -- delete adjacent blank lines
dtb -- delete trailing blanks
emboxxen / deboxxen -- convert to/from box drawing characters
eol -- convert line endings
field -- simple line field extraction
freeze / thaw -- cross-shell synchronization
mergl -- merge lines into previous lines' blanks
pad -- pad lines to a width
put / take -- cross-shell pipe
uni -- unicode character properties and search
- vram22 6y agoSome of the above can easily be written in C or Python or Ruby (and some of the simpler ones even in shell), at least for simple versions, maybe without all the frills of the originals. And seq in Linux is like jot for sequential data, at least. And from my blog: An Unix seq-like utility in Python: https://jugad2.blogspot.com/2017/01/an-unix-seq-like-utility-in-python.html?m=0 https://jugad2.blogspot.com/2017/01/an-unix-seq-like-utility...
- kps 6y agoYes, they're generally available in some form (now generally including the ‘originals’ now that V8–V10 have been published). And they're all very simple, which is the whole point of Unix tools. I've found I'm using the `put`/`take` pair, for splitting a pipeline across shells, more again in the WFH era where I often have multiple ssh sessions into a machine, when I would probably have used the clipboard in a GUI session. Also useful for things like seeing stderr from different parts of a pipeline in different windows. `put` is just `cat >>$(mkpipe "$1")` and `take` is `cat $(mkpipe "$1")` where `mkpipe` is fifo="${TMPDIR:-/tmp}/fifo-$(id -u)-$1}" test -p "$fifo" || mkfifo "$fifo" echo "$fifo"
- vram22 6y ago>And they're all very simple, which is the whole point of Unix tools. Not all Unix tools are simple. E.g. make. But I know what you mean - the Unix philosophy. https://en.m.wikipedia.org/wiki/Unix_philosophy https://en.m.wikipedia.org/wiki/Unix_philosophy The TAOUP book by Eric Raymond (The Art Of Unix Programming) has a lot about that. https://en.m.wikipedia.org/wiki/The_Art_of_Unix_Programming https://en.m.wikipedia.org/wiki/The_Art_of_Unix_Programming And my IBM developerWorks tutorial / case study on Developing a Linux command-line utility (in C) may be of interest to people who want to write their own Unix tools that play well with others. https://jugad2.blogspot.com/2014/09/my-ibm-developerworks-article.html?m=0 https://jugad2.blogspot.com/2014/09/my-ibm-developerworks-ar...