➜ ~ unalias cat
➜ ~ cat> filea.txt
this is a file written with standard cat
➜ ~ bat filea.txt
───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: filea.txt
───────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ this is a file written with standard cat
───────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
➜ ~ bat filea.txt > fileb.txt
➜ ~ cat fileb.txt
this is a file written with standard cat
Ah ok!
No, it doesn't happen:
I'm curious to how it knows to change the output depending where the output is directed to. Like aren't both
stdout
from the point of view ofbat
?You can detect if the output is being redirected with POSIX functions isatty(3) and fstat(2)