Oltre a utilizzare un file temporaneo come aiuto, c'è un modo/programma per memorizzare nel buffer l'input da stdin ma non emette il contenuto fino a quando non ottiene il EOF . Non voglio nemmeno usare una variabile di shell (ad es. buffer=$(cat) ).
Questo programma dovrebbe comportarsi come di seguito (supponendo che il nome del programma sia buffered-cat ):
$ buffered-cat
line 1
line 2
line 3
^D # Ctr-D here(End of Line)
Ora che il programma ha ricevuto ^D , il buffered-cat emette il contenuto
line 1
line 2
line 3
Risposta accettata:
La sponge di un povero usando awk :
awk '{a[NR] = $0} END {for (i = 1; i <= NR; i++) print a[i]}'
Se hai tac , puoi anche abusarne:
... | tac | tac