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