Comment by pmarreck
3 years ago
I have linux/macos-agnostic bash functions in my dotfiles that unify this to “clip” and “paste” (since “copy” is too close semantically to “cp”)
3 years ago
I have linux/macos-agnostic bash functions in my dotfiles that unify this to “clip” and “paste” (since “copy” is too close semantically to “cp”)
And I have one that unifies _both_ to `clip` so you can put the same command in both sides of the pipe, e. g. to turn a line-delimited blob on your clipboard to a space-separated one:
https://github.com/svieira/dotfiles/blob/a3654d6a194e3689978...
So to check if there's anything sitting on stdin without reading it I've been using
`if read -r -t0; then` # returns true if there is data but times out instantly so it doesn't consume any
Is `[ -t 0 ]` more idiomatic? Apparently it fails on this case: function < file
`read -r -t0` is Bash-only though and not POSIX, but it will work regardless of what type of data is on stdin
[ -t 0 ] instead checks whether stdin (fd 0) is a tty.
Holy crap. Of course! You win! Amazing!
Simple is genius
paste(1) is a POSIX standard utility, though (going back to System III), pairing with cut(1).
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/p...
The Unix join command is also useful:
https://en.m.wikipedia.org/wiki/Join_(Unix)