< /dev/null
wird verwendet, um EOF sofort an das Programm zu senden, sodass es nicht auf Eingaben wartet (/dev/null
, das Null-Gerät, ist eine spezielle Datei, die alle darauf geschriebenen Daten verwirft, aber meldet, dass der Schreibvorgang erfolgreich war, und keinem Prozess, der daraus liest, Daten bereitstellt, was sofort EOF ergibt). &
ist eine spezielle Art von Befehlstrennzeichen, das verwendet wird, um den vorhergehenden Prozess in den Hintergrund zu rücken.
Ohne das aufgerufene Programm zu kennen, weiß ich nicht direkt, warum es auf diese Weise ausgeführt werden muss.
</dev/null
trennt die Eingabe des Programms vom Terminal. Einige Programme reagieren unterschiedlich, je nachdem, womit ihr Standardeingang verbunden ist. Mit der Umleitung </dev/null
, kann das Programm feststellen, dass seine Eingabe nicht von einem Terminal kommt, und erhält sofort eine End-of-File-Anzeige, wenn es versucht, von seiner Standardeingabe zu lesen.
Der einsame &
am Ende bewirkt, dass das Programm im Hintergrund ausgeführt wird. Das bedeutet, dass Sie sofort einen Shell-Prompt zurückbekommen. Ohne die &
, würden Sie nur dann einen Shell-Prompt zurückbekommen, wenn die Ausführung des Programms beendet ist.
Beachten Sie, dass der eigenständige &
hat nichts mit >&
zu tun . >&
ist ein Umleitungsoperator (in tcsh, bash und zsh), der sowohl die Standardausgabe des Programms als auch den Standardfehler des Programms auf den hinter dem Operator angegebenen Dateinamen umleitet (hier log
).
Mit anderen Worten, was die Shell tut, wenn sie diese Befehlszeile sieht, ist:
- Starten Sie einen Prozess im Hintergrund. Im Hintergrundprozess:
- Standardeingang mit
/dev/null
verbinden (das Nullgerät). - Verbinden Sie sowohl die Standardausgabe als auch den Standardfehler mit der Datei namens
log
(Erstellen der Datei, wenn sie noch nicht existiert, und Abschneiden, wenn sie existiert). - Suchen Sie nach einer ausführbaren Datei namens
java
im$PATH
. - Führen Sie diese Datei mit den 5 Argumenten
-cp
aus ,/home/weka.jar
,weka.classifiers.trees.J48
,–t
, train_file`.
- Standardeingang mit