Comando deserdado com STDOUT / STDERR redirecionado ainda enviando saída para shell [closed]

2

Eu defini uma função no meu .bashrc que me permite abrir, por exemplo arquivos pdf do bash executando copen myfile.pdf :

function copen {
    if [[ $# -eq 1 ]] ; then
        xdg-open "$1" > /dev/null 2>&1 & disown
        return 1
    fi
}

Ao executar este comando, executo, e. Okular em segundo plano, redirecione STDOUT e STDERR para /dev/null e o desative do bash. No entanto, depois de executar copen myfile.pdf , ainda recebo saída impressa para bash ( QSqlQuery::exec: database not open várias vezes) e não entendo o motivo. Como faço para suprimir esse tipo de saída?

Observe que o problema persiste ao alterar o código para nohup xdg-open "$1" > /dev/null 2>&1 & .

    
por cbaumhardt 21.10.2016 / 11:20

1 resposta

1

Experimente esta abordagem:

#!/usr/bin/bash

copen() {
    (($# == 1)) && xdg-open "$1" &>/dev/null & disown
}
copen "$1"

Execute o script da seguinte forma: ./myscript SomePDFfile.pdf

O &>/dev/null é uma abreviação de >/dev/null 2>&1 adicionada no bash > 4.

A função copen precisa de um parâmetro.

    
por 21.10.2016 / 12:02