3 ms·
Technically it's based on whether the output is a tty or piped/redirected into something, not whether it's run from the shell's prompt or a script. So for inst
by simias 6y ago
Technically it's based on whether the output is a tty or piped/redirected into something, not whether it's run from the shell's prompt or a script.
So for instance if you run a bare `ls` from a script that outputs straight into the terminal you'll get the multi-column "human readable" output. Conversely if you type `ls | cat` in the shell you'll get the single column output.
It can definitely be surprising if you don't know about it but technically it behaves the same in scripts and interactive environments.
- burntsushi 6y agoThat's exactly what I meant. I used "interactively" to mean "attached to a tty." Look at what I was responding to: "for commands to not alter their behavior based on whether they're attached to a terminal or not" ls is a clear counter-example of that. I think the behavior is a good thing. I'm pushing back against this notion of what is "best practice" or not. It's more nuanced than "doesn't change its output format."