stdout é a tela. Não há separação entre stdout e "a tela".
Neste caso, eu apenas redirecionaria o stdout para o stderr temporariamente com 1>&2
dentro de um subshell. Isso fará com que a saída dos comandos seja mostrada na tela, mas não estará no fluxo stdout do programa.
#!/bin/bash
# the output of these commands shouldn't go to STDOUT, but still appear on screen
# Start a subshell
(
1>&2 # Redirect stdout to stderr
some_cmd foo bar
other_cmd baz
)
# At the end of the subshell, the file descriptors are
# as they usually are (no redirection) as the subshell has exited.
#the following command creates a tar.gz of the "whatever" folder,
#and outputs the result to STDOUT
tar zc whatever/
Existe uma razão pela qual você precisa canalizar a saída desse script para outra coisa? Normalmente, você só teria que escrever em um arquivo usando o sinal -f
ou executar um redirecionamento apenas no comando tar: tar zc whatever > filename.tar.gz
(a menos que você estivesse colocando-o em um dispositivo, como uma fita ou usando-o como uma forma de cópia).