Bei jedem Start der Maschine führe ich das folgende Programm aus:
$ 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 &
Umständlich &> /dev/null &
... Wie könnte ich die Logik abkürzen?
Antwort1
Der Teil &> /dev/null
bedeutet Ausgabeumleitung. Sie können mehrere Befehle in dieselbe Datei umleiten, indem Sie sie in einem Block gruppieren:
#! /bin/bash
{
google-chrome &
lantern &
xdg-open . &
emacs &
code ~/Programs/ &
xdg-open ~/Reference/topic_regex.md &
} &> /dev/null
Dasselbe kann allerdings nicht verwendet werden, um einzelne Befehle im Hintergrund zu starten ( &
). Das Einfügen &
nach dem Block würde bedeuten, dass der gesamte Block als einzelnes Skript im Hintergrund ausgeführt wird.
Antwort2
Ich habe eine Funktion geschrieben und sie in mein eingefügt, .bashrc
um Dinge losgelöst von meinem Terminal auszuführen:
detach ()
{
( "$@" &> /dev/null & )
}
... und dann:
detach google-chrome
detach xdg-open ~/Reference/topic_regex.md
Und weil ich faul bin, habe ich auch eine Abkürzung für Folgendes geschrieben xdg-open
:
xo ()
{
for var in "$@"; do
detach xdg-open "$var";
done
}
Da xdg-open
genau ein Argument erwartet wird, xo
iteriert die Funktion über alle angegebenen Argumente und ruft xdg-open
jedes einzeln auf.
Dies ermöglicht:
detach google-chrome
xo . ~/Reference/topic_regex.md
Antwort3
Sie können die Ausgabe für alle nachfolgenden Befehle umleiten mit
exec 1>/dev/null
exec 2>/dev/null
Antwort4
/dev/null
Um die Umleitung zu verkürzen, habe ich eine spezielle Datei mit einem kürzeren Pfad erstellt . /n
Als Pfad für die neue Datei habe ich verwendet:
sudo mknod -m 0666 /n c 1 3
So lassen sich die einzelnen Zeilen beispielsweise verkürzen auf:
google-chrome &>/n &
Quelle:Wie erstelle ich /dev/null?