←back to thread

2039 points Gadiguibou | 7 comments | | HN request time: 1.097s | source | bottom
1. pmarreck ◴[] No.36492028[source]
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”)
replies(2): >>36492092 #>>36493443 #
2. kps ◴[] No.36492092[source]
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...

replies(1): >>36493388 #
3. vram22 ◴[] No.36493388[source]
The Unix join command is also useful:

https://en.m.wikipedia.org/wiki/Join_(Unix)

4. svieira ◴[] No.36493443[source]
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:

    clip | tr '\n' ' ' | clip
https://github.com/svieira/dotfiles/blob/a3654d6a194e3689978...

    # Use clipboard in shell pipelines
    # clip | xargs echo           # uses pbpaste
    # ps -A | grep search | clip  # uses pbcopy
    clip() {
      [ -t 0 ] && pbpaste || pbcopy
    }
replies(2): >>36504955 #>>36506140 #
5. pmarreck ◴[] No.36504955[source]
Holy crap. Of course! You win! Amazing!

Simple is genius

6. pmarreck ◴[] No.36506140[source]
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

replies(1): >>36523875 #
7. naniwaduni ◴[] No.36523875{3}[source]
[ -t 0 ] instead checks whether stdin (fd 0) is a tty.