La maggior parte delle risposte qui [ 1 ] [ 2 ] [ 3 ] usa una parentesi angolare singola per reindirizzare a / dev / null, in questo modo:
command > /dev/null
Ma l'aggiunta a / dev / null funziona anche:
command >> /dev/null
Tranne il personaggio in più, c'è qualche motivo per non farlo? Uno di questi è "più bello" per l'implementazione sottostante di / dev / null?
Modifica:
la manpage aperta (2) dice che lseek viene chiamato prima di ogni scrittura su un file in modalità append:
O_APPEND
Il file viene aperto in modalità append. Prima di ogni scrittura (2), l'offset del file viene posizionato alla fine del file, come se con lseek (2). La modifica dell'offset del file e l'operazione di scrittura vengono eseguite come un singolo passaggio atomico.
il che mi fa pensare che potrebbe esserci una minuscola penalità prestazionale per l'utilizzo >>
. D'altra parte, troncare / dev / null sembra un'operazione indefinita secondo quel documento:
O_TRUNC
Se il file esiste già ed è un file normale e la modalità di accesso consente la scrittura (ovvero O_RDWR o O_WRONLY) verrà troncata alla lunghezza 0. Se il file è un FIFO o un file del dispositivo terminale, il flag O_TRUNC viene ignorato. Altrimenti, l'effetto di O_TRUNC non è specificato.
e le specifiche POSIX indicano che troncerà >
un file esistente , ma O_TRUNC è definito dall'implementazione per i file del dispositivo e non c'è parola su come / dev / null dovrebbe rispondere al troncamento .
Quindi, troncare / dev / null in realtà non è specificato? E le chiamate lseek hanno alcun impatto sulle prestazioni di scrittura?