Cada vez que inicio la máquina, ejecuto el siguiente 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 &
Engorroso &> /dev/null &
... ¿Cómo podría acortar la lógica?
Respuesta1
La parte &> /dev/null
significa redirección de salida. Puedes redirigir varios comandos al mismo archivo agrupándolos en un bloque:
#! /bin/bash
{
google-chrome &
lantern &
xdg-open . &
emacs &
code ~/Programs/ &
xdg-open ~/Reference/topic_regex.md &
} &> /dev/null
Sin embargo, no se puede utilizar lo mismo para iniciar comandos individuales en segundo plano ( &
). Ponerlo &
después del bloque significaría ejecutar todo el bloque como un único script en segundo plano.
Respuesta2
Escribí una función y la puse en mi .bashrc
para ejecutar cosas separadas de mi terminal:
detach ()
{
( "$@" &> /dev/null & )
}
... y luego:
detach google-chrome
detach xdg-open ~/Reference/topic_regex.md
Y como soy vago, también escribí un atajo para xdg-open
:
xo ()
{
for var in "$@"; do
detach xdg-open "$var";
done
}
Como xdg-open
espera exactamente un argumento, la función xo
itera sobre todos los argumentos dados y llama xdg-open
a cada uno por separado.
Esto permite:
detach google-chrome
xo . ~/Reference/topic_regex.md
Respuesta3
Puede redirigir la salida para todos los comandos posteriores con
exec 1>/dev/null
exec 2>/dev/null
Respuesta4
Creé un archivo especial /dev/null
con una ruta más corta para acortar la redirección. Utilicé /n
como ruta del nuevo archivo:
sudo mknod -m 0666 /n c 1 3
De esta manera puede acortar las líneas individuales a, por ejemplo:
google-chrome &>/n &
Fuente:¿Cómo crear /dev/null?