4 ms·
> function clip { [ -t 0 ] && pbpaste || pbcopy } That's great! Would you please explain why that works? Are there any cases you know of where that doesn't wor
by kbd 11y ago
> function clip { [ -t 0 ] && pbpaste || pbcopy }
That's great! Would you please explain why that works? Are there any cases you know of where that doesn't work as expected?
Edit: btw you need a semicolon after pbcopy to make that function valid on one line.
- godDLL 11y agoI'm not the OP, but I'll give it a go. `[` is a Bash built-in command also known as `test`. The `-t` parameter tells it to test if a file descriptor is open for `0`, which is also known as `STDIN`. So if you're piping something into `STDIN` it will do `pbcopy`. If not -- it will do `pbpaste`.
- djeikyb 11y agofrom `man test`: -t FD file descriptor FD is opened on a terminal FD 0 is stdin I'd guess. Pretty clever!