Jedes Mal, wenn ich die Maschine starte, starte ich das folgende Programm:
$ 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 verkürzen?
command-line
bash
redirect
background-process
Infinitesimalrechnung
quelle
quelle
Antworten:
Der Teil
&> /dev/null
bedeutet Ausgangsumleitung. Sie können mehrere Befehle in dieselbe Datei umleiten, indem Sie sie in einem Block gruppieren:Das Gleiche kann jedoch nicht verwendet werden, um einzelne Befehle im Hintergrund zu starten (
&
). Einlochen&
nach dem Block würde bedeuten , den ganzen Block als ein einziges Skript im Hintergrund ausgeführt wird .quelle
&>
Syntax veraltet ist und durch>/dev/null 2>&1
wiki-dev.bash-hackers.org/scripting/obsolete#!/bin/bash
Skript in einer anderen Shell ausführt, ohne vorher die Portabilität zu überprüfen, ist es definitiv nicht Bashs Schuld, wenn es nicht funktioniert.Ich habe eine Funktion geschrieben und in meine eingefügt
.bashrc
, um Dinge auszuführen, die von meinem Terminal getrennt sind:... und dann:
Und weil ich faul bin, habe ich auch eine Verknüpfung geschrieben für
xdg-open
:Da
xdg-open
genau ein Argument erwartet wird,xo
durchläuft die Funktion alle angegebenen Argumente und ruftxdg-open
jedes einzeln auf.Dies ermöglicht:
quelle
Sie können die Ausgabe für alle nachfolgenden Befehle mit umleiten
quelle
Sie können eine Schleife erstellen und ihr die Befehle als Argumente geben:
Beachten Sie, dass es genau wie beim Subshell-Ansatz mit geschweiften Klammern möglich ist, die Ausgaben zusammenzufassen und alle gleichzeitig umzuleiten.
quelle
Ich habe eine spezielle Datei wie
/dev/null
mit einem kürzeren Pfad erstellt, um die Umleitung zu verkürzen. Ich habe/n
als Pfad der neuen Datei verwendet:Auf diese Weise können Sie die einzelnen Zeilen auf z.
Quelle: Wie erstelle ich / dev / null?
quelle