less
imprime o texto na stdout. stdout vai
- para um terminal (/ dev / tty?) e abre o visualizador padrão de buffer
- por meio de um pipe ao direcioná-lo para outro programa usando | (
less text | cut -d: -f1
) - para um arquivo ao redirecioná-lo com > (
less text > tmp
)
Existe uma função C chamada "isa tty " que verifica se a saída está indo para um tty (menos 4.81, main.c, linha 112). Em caso afirmativo, ele usa o visualizador de buffer, caso contrário, ele se comporta como cat
.
No bash você pode usar o teste (veja man test
)
- -t Descritor de arquivos FD FD é aberto em um terminal
- -p FILE existe e é um pipe nomeado
Exemplo:
[[ -t 1 ]] && \
echo 'STDOUT is attached to TTY'
[[ -p /dev/stdout ]] && \
echo 'STDOUT is attached to a pipe'
[[ ! -t 1 && ! -p /dev/stdout ]] && \
echo 'STDOUT is attached to a redirection'