É tal redirecionamento "|" apenas um erro ou isso significa alguma coisa?

8

Eu digitei por engano, mas o bash não imprimiu nenhum erro (mas criou um arquivo vazio), então pensei que talvez significasse alguma coisa? (por exemplo, data | > tmp.txt)

    
por Bdimych2 Bdimych2 25.09.2018 / 10:20

2 respostas

17

Isso parece ser apenas um pipeline em que a segunda parte é um comando vazio, contendo apenas o redirecionamento. Escrevê-lo como date | >file pode facilitar a interpretação. O comando vazio não faz nada além de processar o redirecionamento, criando o arquivo.

Por outro lado,

date >| file agiria como uma substituição para a opção noclobber shell, o que impede que o > regular sobrescreva arquivos existentes.

$ touch foo; set -o noclobber
$ date > foo
bash: foo: cannot overwrite existing file
$ date >| foo       # works
    
por 25.09.2018 / 10:26
1

Sim, não ocorrerá erro porque para o bash > file significa redirecionar para um arquivo chamado file . Como no seu caso não há nada para redirecionar para o arquivo, bash irá apenas criar um nome de arquivo file com nada nele.

[[email protected] my-tests]$ date | > my_file
[[email protected] my-tests]$ cat my_file
[[email protected] my-tests]$ 
    
por 25.09.2018 / 11:07