Você pode usar socat
para simular um pseudo terminal (pty):
socat - EXEC:'ls --color=auto',pty,setsid,ctty | cat
Há muito mais opções, consulte a documentação .
ls
usa por padrão a largura do terminal para saída em coluna. Ainda não encontrei uma maneira, como definir isso em uma sociedade, uma solução é usar o ls
option -w WIDTH
.