Ho provato a eseguire un programma java di esempio utilizzando la seguente riga di comando. Tuttavia, non so a cosa serve la parte finale < /dev/null &
?
java -cp /home/weka.jar weka.classifiers.trees.J48 –t train_file >& log < /dev/null &
Ho provato a eseguire un programma java di esempio utilizzando la seguente riga di comando. Tuttavia, non so a cosa serve la parte finale < /dev/null &
?
java -cp /home/weka.jar weka.classifiers.trees.J48 –t train_file >& log < /dev/null &
Risposte:
< /dev/null
viene utilizzato per inviare istantaneamente EOF al programma, in modo che non attenda l'input ( /dev/null
, il dispositivo null, è 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 qualsiasi processo che legge da esso, producendo immediatamente EOF). &
è un tipo speciale di separatore di comandi utilizzato per eseguire il background del processo precedente.
Senza conoscere il programma chiamato, non so direttamente perché sia necessario eseguirlo in questo modo.
</dev/null
disconnette l'ingresso del programma dal terminale. Alcuni programmi reagiscono in modo diverso a seconda dell'ingresso standard a cui sono collegati. 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 solo &
alla fine fa eseguire il programma in background. Ciò significa che ricevi immediatamente un prompt della shell. Senza il comando &
, si otterrebbe un prompt della shell solo al termine dell'esecuzione del programma.
Si noti che lo standalone &
non è correlato a >&
. >&
è un operatore di reindirizzamento (in tcsh, bash e zsh) che reindirizza sia l'output standard del programma sia l'errore standard del programma sul nome file specificato dopo l'operatore (qui log
).
In altre parole, ciò che fa la shell quando vede questa riga di comando è:
/dev/null
(il dispositivo null ).log
(creando il file se non esiste ancora e troncandolo se esiste).java
in $PATH
.-cp
, /home/weka.jar
, weka.classifiers.trees.J48
, –t
, train_file`.