En plus d'utiliser un fichier temporaire pour aider, existe-t-il un moyen/un programme de mettre en mémoire tampon l'entrée de stdin mais n'affiche pas le contenu avant d'avoir obtenu le EOF . Je ne veux pas non plus utiliser de variable shell (par exemple, buffer=$(cat) ).
Ce programme doit se comporter comme ci-dessous (en supposant que le nom du programme est buffered-cat ):
$ buffered-cat
line 1
line 2
line 3
^D # Ctr-D here(End of Line)
Maintenant que le programme a reçu ^D , le buffered-cat affiche le contenu
line 1
line 2
line 3
Réponse acceptée :
L'sponge du pauvre en utilisant awk :
awk '{a[NR] = $0} END {for (i = 1; i <= NR; i++) print a[i]}'
Si vous avez tac , vous pouvez aussi en abuser :
... | tac | tac