< /dev/null
viene utilizzato per inviare istantaneamente EOF al programma, in modo che non attenda input (/dev/null
, il dispositivo nullo, è un file speciale che scarta tutti i dati scritti su di esso, ma segnala che l'operazione di scrittura è riuscita e non fornisce dati a nessun processo che legge da esso, producendo immediatamente EOF). &
è un tipo speciale di separatore di comandi utilizzato per mettere in secondo piano il processo precedente.
Senza conoscere il programma chiamato, non so direttamente perché è necessario eseguirlo in questo modo.
</dev/null
disconnette l'input del programma dal terminale. Alcuni programmi reagiscono in modo diverso a seconda di ciò a cui è collegato il loro input standard. Con il reindirizzamento </dev/null
, il programma può dire che il suo input non proviene da un terminale e riceverà immediatamente un'indicazione di fine file se tenta di leggere dal suo input standard.
Il solitario &
alla fine fa sì che il programma venga eseguito in background. Ciò significa che ricevi immediatamente un prompt della shell. Senza il &
, riceverai un prompt della shell solo al termine dell'esecuzione del programma.
Nota che il file autonomo &
non è correlato a >&
. >&
è un operatore di reindirizzamento (in tcsh, bash e zsh) che reindirizza sia l'output standard del programma che l'errore standard del programma al nome file specificato dopo l'operatore (qui log
).
In altre parole, ciò che fa la shell quando vede questa riga di comando è:
- Avvia un processo in background. Nel processo in background:
- Collega l'input standard a
/dev/null
(il dispositivo nullo). - Collega sia l'output standard che l'errore standard al file chiamato
log
(creando il file se non esiste ancora e troncandolo se esiste). - Cerca un file eseguibile chiamato
java
nel$PATH
. - Esegui quel file con i 5 argomenti
-cp
,/home/weka.jar
,weka.classifiers.trees.J48
,–t
, train_file`.
- Collega l'input standard a