< /dev/null se používá k okamžitému odeslání EOF do programu, takže nečeká na vstup (/dev/null , nulové zařízení, je speciální soubor, který zahodí všechna data, která jsou do něj zapsána, ale hlásí, že operace zápisu byla úspěšná, a neposkytuje žádná data žádnému procesu, který z něj čte, což okamžitě poskytuje EOF). & je speciální typ oddělovače příkazů používaný k pozadí předchozího procesu.
Bez znalosti volaného programu přímo nevím, proč je nutné jej spouštět tímto způsobem.
</dev/null odpojí vstup programu od terminálu. Některé programy reagují odlišně podle toho, k čemu je připojen jejich standardní vstup. S přesměrováním </dev/null , program rozpozná, že jeho vstup nepřichází z terminálu, a pokud se pokusí číst ze svého standardního vstupu, okamžitě obdrží indikaci konce souboru.
Jediný & na konci způsobí, že se program spustí na pozadí. To znamená, že okamžitě dostanete zpět výzvu shellu. Bez & , zobrazí se výzva shellu zpět pouze tehdy, když program dokončí provádění.
Všimněte si, že samostatný & nesouvisí s >& . >& je operátor přesměrování (v tcsh, bash a zsh), který přesměruje standardní výstup programu i standardní chybu programu na název souboru zadaný za operátorem (zde log ).
Jinými slovy, co shell udělá, když uvidí tento příkazový řádek, je:
- Spusťte proces na pozadí. V procesu na pozadí:
- Připojte standardní vstup k
/dev/null(nulové zařízení). - Připojte standardní výstup i standardní chybu k souboru s názvem
log(vytvoření souboru, pokud ještě neexistuje, a jeho zkrácení, pokud existuje). - Hledejte spustitelný soubor s názvem
javav$PATH. - Spusťte tento soubor s 5 argumenty
-cp,/home/weka.jar,weka.classifiers.trees.J48,–t, vlak_soubor`.
- Připojte standardní vstup k