Quando usar pipes e quando redirecionar?

2

Embora isso seja uma coisa básica, mas eu ainda me pergunto. Considere estes dois exemplos.

Caso 1:

[root@dhcppc0 practice]# cat file1 > wc -l
cat: invalid option -- l
Try 'cat --help' for more information.

Caso 2:

[root@dhcppc0 practice]# cat file1 | wc -l
7

Eu me pergunto, por que o redirecionamento não funciona no primeiro caso? quando usar o redirecionamento e quando usar pipes? Eu tenho sido o Linux por um longo tempo, mas ainda esta coisa básica me deixa confuso.

Por favor ajude.

    
por kingsmasher1 31.07.2011 / 12:25

2 respostas

5

O operador de redirecionamento é usado para transmitir o% co_de de um comando % para um arquivo ( stdout ) ou para transmitir o conteúdo de um arquivo para > para um comando ( stdin ).

O operador de pipe ( < ) transmite a saída dos processos ( | ) para os processos seguintes ' stdout .

A única maneira de fazer com que seu primeiro caso funcione seria usar um arquivo temporário, então você precisaria usar duas etapas:

cat file1 > tmpfile
wc -l < tmpfile
    
por 31.07.2011 / 12:34
3

Você usa pipes quando deseja conectar um FD de um executável a um FD de outro. Você usa o redirecionamento quando deseja conectar um FD de um executável a um arquivo.

    
por 31.07.2011 / 12:26
yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warning – yii\base\ErrorException

PHP Startup: Unable to load dynamic library 'memcached.so' (tried: /usr/lib/php/20190902/memcached.so (/usr/lib/php/20190902/memcached.so: undefined symbol: igbinary_serialize), /usr/lib/php/20190902/memcached.so.so (/usr/lib/php/20190902/memcached.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '353780',
    'url' => 'when-to-use-pipes-and-when-to-redirect',
];

$_COOKIE = [
    'advanced-frontend' => '91ua7ucdsn3hls279ms0u7f061',
    '_csrf-frontend' => '5aa863ada61207876b7eb35c32588d7610eb3baac80295a919a522085f49c8c8a:2:{i:0;s:14:"_csrf-frontend";i:1;s:32:"caV-4Z9yNyLJDhgELqs9ivK9Er6FpuN-";}',
];

$_SESSION = [
    '__flash' => [],
];