Algumas maneiras de abordar isso.
-
mesclar fluxos
Você poderia passar determinando a diferença todos juntos e simplesmente mesclar STDERR e STDOUT.
Exemplo
quodlibet --status 2>&1 | ...
-
use grep
Você poderia reduzir a saída usando
-o
&-E
muda paragrep
.Exemplo
$ echo "...blah not-running blah..." | grep -Eo "not-running|paused|playing" not-running $ echo "...blah paused blah..." | grep -Eo "not-running|paused|playing" paused $ echo "...blah playing blah..." | grep -Eo "not-running|paused|playing" playing
Isso cortará tudo, exceto as strings que correspondem ao argumento regex para
grep
. -
determine o tipo do fluxo
Você pode usar a opção
-t
para determinar o tipo de fluxo do descritor de arquivo.trecho da página man do Bash
-t fd True if file descriptor fd is open and refers to a terminal.
where fd is one of:
0: stdin
1: stdout
2: stderrExemplo
Isso detecta se a saída está vindo do STDOUT.
$ if [ -t 1 ]; then echo "from STDOUT"; fi from STDOUT
Retorna "de STDOUT", pois a saída está chegando enquanto:
$ (if [ -t 1 ]; then echo "from STDOUT"; fi) | cat
Não retorna nada, pois a saída está sendo direcionada para
cat
.