Sintaxe de substituição do processo. Suporte para frente / direita vs suporte para trás / esquerda

2

tldp lista duas sintaxes para substituição de processos. >(command_list) e <(command_list)

Qual é a diferença, se houver?

    
por Kevin Wheeler 14.08.2015 / 01:00

1 resposta

4

Sim, uma diferença significativa. Consulte o link

Process substitution is supported on systems that support named pipes (FIFOs) or the /dev/fd method of naming open files. It takes the form of

<(list)

or

>(list)

The process list is run with its input or output connected to a FIFO or some file in /dev/fd. The name of this file is passed as an argument to the current command as the result of the expansion. If the >(list) form is used, writing to the file will provide input for list. If the <(list) form is used, the file passed as an argument should be read to obtain the output of list. Note that no space may appear between the < or > and the left parenthesis, otherwise the construct would be interpreted as a redirection.

Exemplos: comm requer que os arquivos de entrada sejam classificados:

comm <(sort file1) <(sort file2)

O uso de >(cmd) é menos frequente. Eu normalmente só uso com tee para enviar alguma saída para vários pipelines

seq 10 | tee >(rev > out1) >(tac > out2) >(shuf > out3)
    
por 14.08.2015 / 01:45