Encurte ou mescle várias linhas de `&> /dev/null &`

Encurte ou mescle várias linhas de `&> /dev/null &`

Cada vez que ligo a máquina, executo o seguinte programa:

$ cat start.sh
#! /bin/bash
google-chrome &> /dev/null &
lantern &> /dev/null &
xdg-open . &> /dev/null &
emacs &> /dev/null  &
code ~/Programs/ &> /dev/null &
xdg-open ~/Reference/topic_regex.md &> /dev/null &

Pesado &> /dev/null &... Como eu poderia encurtar a lógica?

Responder1

A parte &> /dev/nullsignifica redirecionamento de saída. Você pode redirecionar vários comandos para o mesmo arquivo agrupando-os em um bloco:

#! /bin/bash
{
google-chrome &
lantern &
xdg-open . &
emacs  &
code ~/Programs/ &
xdg-open ~/Reference/topic_regex.md &
} &> /dev/null

A mesma coisa, entretanto, não pode ser usada para iniciar comandos individuais em segundo plano ( &). Colocar &depois do bloco significaria executar o bloco inteiro como um único script em segundo plano.

Responder2

Eu escrevi uma função e coloquei-a no meu .bashrcpara executar coisas desanexadas do meu terminal:

detach () 
{ 
    ( "$@" &> /dev/null & )
}

... e então:

detach google-chrome
detach xdg-open ~/Reference/topic_regex.md

E como sou preguiçoso, também escrevi um atalho para xdg-open:

xo () 
{ 
    for var in "$@"; do
        detach xdg-open "$var";
    done
}

Como xdg-openespera exatamente um argumento, a função xoitera sobre todos os argumentos fornecidos e chama xdg-opencada um deles separadamente.

Isso permite:

detach google-chrome
xo . ~/Reference/topic_regex.md

Responder3

Você poderia redirecionar a saída para todos os comandos subsequentes com

exec 1>/dev/null
exec 2>/dev/null

Responder4

Criei um arquivo especial /dev/nullcom um caminho mais curto para encurtar o redirecionamento. Usei /ncomo caminho do novo arquivo:

sudo mknod -m 0666 /n c 1 3

Desta forma, você pode encurtar as linhas individuais para, por exemplo:

google-chrome &>/n &

Fonte:Como criar /dev/null?

informação relacionada