| UNBUFFER(1) | General Commands Manual | UNBUFFER(1) |
نام (NAME)
unbuffer - غیرفعالسازی بافربندی خروجی
خلاصه دستور (SYNOPSIS)
unbuffer برنامه [ آرگومانها ]
مقدمه (INTRODUCTION)
unbuffer بافربندی خروجی را که هنگام تغییر مسیر خروجی برنامههای غیرتعاملی رخ میدهد، غیرفعال میکند. برای مثال، فرض کنید در حال مشاهده خروجی یک fifo با هدایت آن از طریق od و سپس more هستید.
od -c /tmp/fifo | more
تا زمانی که یک صفحه کامل از خروجی تولید نشود، چیزی مشاهده نخواهید کرد.
میتوانید این بافربندی خودکار را به صورت زیر غیرفعال کنید:
unbuffer od -c /tmp/fifo | moreبهطور معمول، unbuffer از ورودی استاندارد (stdin) نمیخواند. این ویژگی استفاده از unbuffer را در برخی شرایط سادهتر میکند. برای استفاده از unbuffer در یک خط لوله (pipeline)، از گزینه -p استفاده کنید. مثال:
process1 | unbuffer -p process2 | process3
هشدارها (CAVEATS)
در صورتی که فرآیند ارسالکننده ورودی به unbuffer پایان یابد، ممکن است به نظر برسد که unbuffer -p بهدرستی کار نمیکند. این حالت را در نظر بگیرید:
process1 | unbuffer -p process2 | process3
اگر process1 پایان یابد، ممکن است کار process2 هنوز تمام نشده باشد. برای unbuffer غیرممکن است بداند چه مدت باید منتظر process2 بماند و حتی ممکن است process2 هرگز پایان نیابد؛ برای نمونه هنگامی که یک فیلتر باشد. بهدلیل سهولت و مصلحت، unbuffer به محض مواجهه با EOF (پایان فایل) از سمت ورودی خود یا از سمت process2، بهسادگی خارج میشود.
برای داشتن نسخهای از unbuffer که در تمامی شرایط کار کند، به یک پیشگو (oracle) نیاز خواهد بود. اگر راهحلی ویژه برای برنامهای خاص میخواهید، روشهای جایگزین یا اسکریپتنویسی دستی با Expect شاید مناسبتر باشند. برای مثال، نمونه زیر نشان میدهد که چگونه میتوان به grep اجازه داد پردازش خود را تکمیل کند در حالی که دستور cat پیش از آن زودتر پایان مییابد. استفاده از cat برای ارسال ورودی به grep در واقعیت هیچگاه به unbuffer نیازی ندارد؛ این تنها یک جایگزین فرضی برای فرآیندی است که ممکن است پایان یابد یا نیابد. به همین ترتیب، دستور cat پایانی در انتهای خط لوله نیز جایگزینی فرضی برای فرآیندی دیگر است.
$ cat /tmp/abcdef.log | grep abc | cat abcdef xxxabc defxxx $ cat /tmp/abcdef.log | unbuffer grep abc | cat $ (cat /tmp/abcdef.log ; sleep 1) | unbuffer grep abc | cat abcdef xxxabc defxxx $
اشکالات (BUGS)
این صفحه راهنما از خود برنامه طولانیتر است.
همچنین ببینید (SEE ALSO)
"Exploring Expect: A Tcl-Based Toolkit for Automating Interactive Programs" نوشته Don Libes، انتشارات O'Reilly and Associates، ژانویه ۱۹۹۵.
نویسنده (AUTHOR)
Don Libes، مؤسسه ملی استانداردها و فناوری (NIST)
| 1 June 1994 |