< /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
java
v$PATH
. - Spusťte tento soubor s 5 argumenty
-cp
,/home/weka.jar
,weka.classifiers.trees.J48
,–t
, vlak_soubor`.
- Připojte standardní vstup k