Il reindirizzamento all'indietro è uguale a una pipe?


Risposte:


17

Alla domanda del titolo: No. Ottenere stdindal contenuto del file ( reindirizzamento dell'input ) non è lo stesso del piping dell'output di un programma all'input di un altro programma.

Ma, dato che in catrealtà stai solo stampando il contenuto di un file, il risultato è effettivamente lo stesso in questo esempio.


Ma anche solo i seguenti producono risultati molto diversi:

$ cat * | sort
$ sort < *

Se c'è più di un file corrispondente, quest'ultimo produrrà

-bash: *: ambiguous redirect

dal momento che non è flessibile come il primo, che inserirà tutti i file corrispondenti e li inoltrerà come input sort.


3
Che dire di ... sort *? Nessun uso inutile di cat, nessun uso inutile di indiretto, il più breve da digitare, il più facile da pensare e credo che GNU sort ti tratterà di ottimizzazioni della scalabilità per file molto grandi (non ne sono così sicuro - metà ricordando qualcosa lì)
vedi

1
@sehe Probabilmente. Ho appena usato l'esempio per mostrare che i due sono diversi. Non si tratta di un uso efficiente dell'ordinamento. L'ordinamento è più flessibile di quello però, certo.
Daniel Beck

@DanielBeck, per quanto riguarda l'efficienza, è sort < txtfilemolto più efficiente di cat txtfile | sort?
Pacerier,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.