A maioria das respostas aqui [ 1 ] [ 2 ] [ 3 ] usa um colchete angular único para redirecionar para / dev / null, assim:
command > /dev/null
Mas anexar a / dev / null também funciona:
command >> /dev/null
Exceto pelo personagem extra, há alguma razão para não fazer isso? Um desses "melhor" é a implementação subjacente de / dev / null?
Edit:
A página de manual open (2) diz que lseek é chamado antes de cada gravação em um arquivo no modo de acréscimo:
O_APPEND
O arquivo é aberto no modo de acréscimo. Antes de cada gravação (2), o deslocamento do arquivo é posicionado no final do arquivo, como se fosse o lseek (2). A modificação do deslocamento do arquivo e a operação de gravação são executadas como uma única etapa atômica.
o que me faz pensar que pode haver uma pequena penalidade no desempenho pelo uso >>
. Mas, por outro lado, truncar / dev / null parece uma operação indefinida de acordo com esse documento:
O_TRUNC
Se o arquivo já existe e é um arquivo normal e o modo de acesso permite a gravação (ou seja, é O_RDWR ou O_WRONLY), ele será truncado para o comprimento 0. Se o arquivo for um FIFO ou arquivo de dispositivo terminal, o sinalizador O_TRUNC será ignorado. Caso contrário, o efeito de O_TRUNC não é especificado.
e a especificação POSIX diz >
que truncará um arquivo existente , mas O_TRUNC é definido pela implementação para arquivos de dispositivos e não há nenhuma palavra sobre como / dev / null deve responder à truncagem .
Então, truncar / dev / null é realmente não especificado? E as chamadas lseek têm algum impacto no desempenho da gravação?