آشنایی با دستور tee
توسط: vahit
سلام
بیشک هرکسی که یه مدت با یکی از توزیعهای سیستم عامل گنو/لینوکس سر و کله بزنه و راهش به ترمینال بیوفته یا کارش به یه اسکریپت بش گیر کنه حتماً با بحث «Redirecting Input and Output» آشنایی داره. خلاصهوار عرض کنم که در این مبحث برای تحقق یکی از فلسفههای یونیکس مبنی بر «انجام کارهای پیچیده با ترکیب ابزارهای ساده» یاد میگیریم که چطور ورودی/خروجی برنامههای مختلف رو به هم انتقال بدیم. برای این کار از راهنمایی زیر استفاده میکنیم:
< انتقال خروجی استاندارد به فایل.
&< انتقال خروجی استاندارد و خروجی خطا به فایل.
<< اضافه کردن خروجی استاندارد به انتهای فایل.
&<< اضافه کردن خروجی استاندارد و خروجی خطا به فایل.
> انتقال ورودی استاندارد به دستور.
| انتقال خروجی استاندارد به دستور.
برخی اوقات لازمه که خروجی دستوری را علاوه بر انتقال به فایل مشاهده هم بکنیم، برای این کار مجبوری دستور را دوباره اجرا کرده و در یکی از آنها خروجی را به فایل انتقال دهیم. یک راهحل سادهی دیگر استفاده از دستور tee است. طبق فایل منوآل دستور، کار این دستور گرفتن خروجی استاندارد و انتقال همزمان آن به خروجی استاندارد و فایل مورد نظر است. نحوهی استفاده از این دستور به این شکل است که خروجی دستور مورد نظر را با استفاده از pipe (|) به دستور tee که اسم فایل به عنوان آرگومان برای آن مشخص شده است منتقل میشود. برای مثال:
1 |
$ ls | tee tmp.txt |
حال اگر لازم باشد خروجی دستور دیگری را به انتهای فایل موجود اضافه کرده و ضمن این کار خروجی را در خروجی استاندارد نیز مشاهده کرد، باز میتوان از دستور tee استفاده کرد. برای این کار دستور را به همراه آپشن a به کار میگیریم. برای مثال اگر فایل tmp.txt حاوی خروجی دستور ls باشد با اجرای دستور زیر خروجی آن به انتهای فایل اضافه شده و به محتویات قبلی آن آسیبی نمیرسد.
1 |
ls | grep -i *.pdf | tee -a tmp.txt |
نکته: میتوان خروجی را با استفاده از فرم زیر همزمان به چند فایل انتقال داد:
1 |
ls | tee file1 file2 file3 |
منابع:
- http://en.wikipedia.org/wiki/Tee_%28command%29
- man tee
- http://linux.101hacks.com/unix/tee-command-examples/
بعضی موقعها وقتی به sed میگی خروجیش رو بده به یه فایل (از طریق شل)، نمیده و فایل خالی میشه!
با توجه به این که این مشکل sed (نمیدونم مشکل شل هست یا sed) بعضی وقتا منو به دردسر انداخته، یه مدته دیگه با tee خروجی رو میدم به فایل
من که هنوز دارم از sed فرار میکنم. معلوم نیست کی به تورش گیر کنم. :D
اگه بلدی با sed کار کنی خب بنویس ما بیسواتا هم یاد بگیریم :)
فقط یادت باشه لینک بدی بهم!
سلام وببخشید میشه راجع به دستور duرسیستم عامل ابونتو توضیح بدین.
به طور خلاصه، اسم این دستور مخفف disk usage هست و کارش پیدا کردن میزان حجم فایلها و دایرکتوریهای دیسکه.
لینک زیر با مثال و به شکل ساده توضیحش داده :)
http://www.linfo.org/du.html
میشه زودتر ج بدین