سؤال ما هو الغرض من "تي"؟


كل استخدامات tee رأيت من أي وقت مضى كانت مثل:

 do_something | tee -a logfile

أو:

do_something_else | tee logfile

هو tee اخترع لأولئك الذين لا يعرفون يمكنك أن تفعل الشيء نفسه مع إعادة توجيه أنابيب قذيفة؟ مثل:

do_something >> logfile

أو:

do_something_else > logfile

من الناحية العملية هي نفسها وتحتاج إلى عدد أقل من أزرار لوحة المفاتيح للكتابة. ما هي الميزات المخفية التي لا أشاهدها tee؟


86
2017-09-10 11:14


الأصل


كيف لم يتم الرد على هذا من خلال السطر الأول من صفحة الرجل "... والكتابة إلى ملفات وملفات معيارية"؟ الإجابات مثيرة للاهتمام ، ولكن التحدث على نطاق واسع حول كيفية فائدة الأنابيب يعزز مجرد كيف يبدو هذا واسع جدا ، وربما ينبغي أن تكون مغلقة. - Xen2050
@ Xen2050 لا يمكن إلقاء اللوم على سؤال للحصول على إجابة واسعة النطاق. السؤال محدد جدا ، كما هو الحال الحالي أعلى تقدير الإجابة. - Jon Bentley
JonBentley السؤال لا يبدو مثل "مشكلة محددة بالتفاصيل الكافية لتحديد الإجابة المناسبة" (كما يقرأ الحوار وثيقة). يبدو مثل هذا: "إذا كان يمكن الإجابة على سؤالك من خلال كتاب بأكمله ، أو يحتوي على العديد من الإجابات الصحيحة (ولكن لا توجد طريقة لتحديد أيها - إن وجدت - صحيحة) ، فمن المحتمل أن تكون واسعة جدًا بالنسبة إلى التنسيق الخاص بنا." (المصدر: مركز المساعدة) - Xen2050
@ Xen2050 هل نقرأ نفس السؤال؟ يبدو لي محددة للغاية - ما هو الفرق بين الإنطلاق والأنابيب؟ تم الرد عليها بشكل ملائم باستخدام جملتين. بعيدا عن كتاب كامل. حقيقة أن بعض الإجابات أختر أن تنفجر على ظل لا علاقة له بنطاق السؤال. - Jon Bentley
JonBentley: هل نقرأ نفس السؤال؟ RMoog نوع من نوع من يدل سؤال جيد التركيز إلى حد ما - ما هو الفرق بين tee  و I / O إعادة توجيه؟حقيقة أنه يقول "قذيفة يضخ إعادة توجيه


الأجوبة:


ما لا تراه هو ذلك do_something | tee -a logfile يضع الإخراج في logfile  و ل stdout ، في حين do_something >> logfile ضعها فقط في ملف السجل.

الغرض من tee هو إنتاج سيناريو إدخال واحد ، متعدد المخرجات - تمامًا كما هو الحال في معبر 'T'.

تصحيح

كانت هناك تعليقات حول كيفية ذلك tee تمكن أكثر من استخدام sudo. هذا بجانب النقطة: cat، dd أو ربما أفضل buffer توفير هذا الاحتمال مع أداء أفضل ، إذا كنت لا تحتاج إلى مخرجات متعددة. استعمال tee لما تم تصميمه ، وليس لما يمكن أن "تفعله أيضًا"


240
2017-09-10 11:22



الإخراج المتعدد هو المفتاح. tee يمكن أن تأخذ حتى الحجج متعددة والكتابة إلى العديد من الملفات في وقت واحد. - Kamil Maciorowski
أنا أسميها نقطة الإنطلاق تركيب الأنابيب، وليس عبور (كما هو الحال في تقاطع الطريق؟) السخافات تأتي في اتجاه واحد ويخرج في كلا الاتجاهين. - user20574
كيف أستخدم cat بطريقة مباشرة بدلا من tee على سبيل المثال echo /var/work/core.%p | sudo tee /proc/sys/kernel/core_pattern؟ echo /var/work/core.%p | sudo cat > /proc/sys/kernel/core_pattern لا يعمل ، لأنه تتم معالجة إعادة التوجيه من قبل قذيفة غير sudo. أما بالنسبة لل dd، echo /var/work/core.%p | sudo dd of=/proc/sys/kernel/core_pattern يعمل ، ولكن dd غالباً ما تكون أداة قوية قادرة على إلحاق أضرار كبيرة ، خاصة تحت sudo. أما بالنسبة لل buffer، لم يتم تثبيته بشكل افتراضي في أي من وحدات توزيعة RedHat أو Ubuntu يجب أن أسلمها (أو MacOS) ... - Digital Trauma
EugenRieck أحصل على وجهة نظرك حول علاقة 1: n بين: في أن تكون الوظيفة الأساسية. ومع ذلك ، لا مدمج cat ولا /bin/cat العمل بالنسبة لي في هذه الحالة. لا يهم أين cat يأتي من > لا يزال سيتم التعامل معها من قبل أعلى مستوى (غير sudo) قذيفة. ميزة tee على cat في هذا الموقف هو أنه يسمح تمرير ملف الإخراج كمعلمة سطر أوامر (وليس إعادة توجيه). dd هو بالتأكيد خيار قابل للتطبيق ، على الرغم من أنني ما زلت أؤيده tee لهذا - Digital Trauma
EugenRieck ما لديها قذيفة cat و tee كما بنيت؟ وأي إصدار من sudo يمكن تشغيل مدمن قذيفة؟ - wjandrea


Tee ليس عديم الفائدة

ربما كنت على علم بأن على أي حال؟ إن لم يكن ، على قراءة! أو إذا كنت تعرف كيف يعمل ، لكنك غير متأكد لماذا ا كان موجودًا ، تخطى إلى النهاية لترى كيف تتناسب مع فلسفة يونكس.

ماذا هو الغرض من tee؟

في أبسطها ، يأخذ البيانات على المدخلات القياسية ويكتب ذلك إلى الإخراج القياسي وملف واحد (أو أكثر). لقد تم تشبيه ل قطعة السباكة المحملة في الطريقة التي يقسم بها إدخال واحد إلى مخرجات اثنين (واثنين من الاتجاهات).

أمثلة

لنأخذ مثالك الأول:

do_something | tee -a logfile

هذا يأخذ انتاج do_something ويضيفه إلى ملف السجل ، بينما يعرضه أيضًا للمستخدم. في الواقع، فإن صفحة ويكيبيديا على tee لديه هذا كمثال الثاني:

لعرض وإلحاق الإخراج من أمر إلى ملف موجود:

  lint program.c | tee -a program.lint

هذا يعرض الإخراج القياسي من الأمر lint program.c على جهاز الكمبيوتر وفي نفس الوقت يلحق نسخة منه إلى نهاية الملف program.lint. إذا كان الملف program.lint غير موجود ، يتم إنشاؤه.

المثال التالي له استخدام آخر: تصاعد الأذون:

للسماح بتصعيد الأذونات:

cat ~/.ssh/id_rsa.pub | ssh admin@server "sudo tee -a /root/.ssh/authorized_keys2 > /dev/null"

يوضح هذا المثال أن الإنطلاق يتم استخدامه لتجاوز قيود كامنة في sudo أمر. sudo غير قادر على توجيه الإخراج القياسي إلى ملف. عن طريق إغراق تيار خارج المعيار في /dev/null، نحن أيضا قمع الإخراج المتطابقة في وحدة التحكم. يعطي الأمر أعلاه وصول الجذر الحالي للمستخدم إلى خادم عبر ssh ، عن طريق تثبيت المفتاح العمومي للمستخدم على قائمة تخويل المفتاح للخادم.

أو ربما كنت تريد أن تأخذ إخراج أمر واحد ، والكتابة في مكان ما ، وكذلك استخدام ذلك كمدخل إلى أمر آخر؟

يمكنك أيضًا استخدام الأمر tee لتخزين إخراج أمر إلى ملف وإعادة توجيه نفس الإخراج كمدخل إلى أمر آخر.

سيأخذ الأمر التالي نسخة احتياطية من إدخالات crontab ، ويمرّ إدخالات crontab كإدخال إلى أمر sed الذي سيعمل الإستبدال. بعد الاستبدال ، ستتم إضافته كمهمة كرون جديدة.

$ crontab -l | tee crontab-backup.txt | sed 's/old/new/' | crontab –

(الائتمان إلى أمثلة استخدام أمر الإنطلاق)

Tee يعمل مع فلسفة يونكس:

اكتب البرامج التي تقوم بشيء واحد وفعل ذلك جيدًا. اكتب برامج للعمل معًا. اكتب برامج للتعامل مع تدفقات النص ، لأن هذه واجهة عالمية.

(الائتمان إلى أساسيات فلسفة يونكس)

tee يناسب كل هذه:

  • يفعل شيئا واحدا: يخلق نسخة إضافية من المدخلات
  • وهو يعمل مع برامج أخرى لأنه هو الغراء (أو قطعة "T السباكة" إذا كنت تفضل) التي تسمح للبرامج الأخرى بالعمل معًا كما هو الحال في الأمثلة أعلاه
  • يفعل ذلك عن طريق معالجة دفق النص المعطى على المدخلات القياسية

118
2017-09-10 11:23



Joe: sudo tee -a ربما كان أحدث ابتكار (رأيتها لأول مرة في أدلة Ubuntu / الويكي خاصة لوضع الاشياء فيها /proc/sysلأن التبديل إلى أوبونتو كان عندما تحولت إلى sudo النظام القائم (كيف يتم تكوين أوبونتو افتراضيا) بدلا من استخدام su مع كلمة مرور الجذر). أعتقد tee يسبق sudo، لذلك ليس سببًا لذلك tee موجود. لا تحتاج tee لذلك ، فإنه من الأسهل ببساطة الكتابة بشكل تفاعلي من sudo sh -c 'cat > output'. - Peter Cordes
مع قذائف حديثة مثل باش ، يمكنك ذلك tee لإطعام خطي أنابيب ، مثل foo | tee >(pipe2) | pipe1. أو متعة أخرى هي ffmpeg ... |& tee /dev/tty | sed 's/.*\r// > encode.log لمشاهدة تحديثات خط الحالة بشكل تفاعلي على tty ، أثناء إزالة "الأسطر" التي تنتهي بـ "الإرجاع" بدلاً من سطر جديد للتسجيل الفعلي. (أي تصفية تحديثات سطر الحالة). بشكل عام ، يمكنك التمسك tee /dev/tty في أي مكان في خط الأنابيب كطباعة تصحيح. - Peter Cordes
انها أقل من الحد من sudo كنت تعمل في جميع أنحاء وأكثر من تقييد لتفسير قذيفة من>. عند تشغيل أمر مع sudo يتم إعادته إلى برنامج shell الخاص بك والمزيد من عمليات إعادة التوجيه مع> يتم تشغيلها باستخدام أذونات shell. إذا كنت تريد أن تكتب بأذونات مرتفعة ، فأنت بحاجة إلى أن يكون الجزء المرتفع من خط الأنابيب هو ما تفعله الكتابة. هناك عدد كبير من الطرق للقيام بذلك اعتمادًا على التأثير الذي تريده بالضبط. إذا كنت تريد حقا استخدام> شيء مثل "sudo bash -c" command> outfile "" سيقوم بهذه المهمة. - Perkins
بالضبط ،Perkins. يوزع shell على > ويضع إعادة التوجيه قبل sudo حتى الحصول عليها execد ، لذلك هو قطعا لا حدود للسودو التي لا تعالج الأشياء التي لا تراها. :) عادة ما أحاول أن أشير إلى هذا على أنه "سير العمل sudo" أو بعض المصطلح نفسه عندما أقوم بشرحه ، بدلا من وصف sudo نفسه. - dannysauer
sudo tee -a هو IMHO إساءة استخدام المحملة. استعمال sudo cat، sudo dd أو (مع أفضل أداء في كثير من الحالات) sudo buffer إذا كنت لا تحتاج إلى مخرجات متعددة. - Eugen Rieck


من الناحية العملية هي نفسها وتحتاج إلى عدد أقل من أزرار لوحة المفاتيح للكتابة.

ليس هو نفسه على الإطلاق ...

يبدو أن ما يلي يماثل نوعًا ما ، ولكنه ليس كذلك:

$ echo "hi" > test.txt
$ echo "hi" | tee test.txt
hi

الاختلاف الحرج هو أن الأول كتب البيانات فقط إلى الملف المسمى ، بينما كتب الأخير hi إلى المحطة (stdout) و الملف المسمى ، كما هو موضح أدناه:

redirect vs tee


tee يسمح لك بكتابة البيانات إلى ملف و استخدمها في خط أنابيب ، مما يتيح لك القيام بأشياء مفيدة - مثل الاحتفاظ بالبيانات من مسار جزئي عبر خط أنابيب:

grep '^look ' interesting_file.txt \
  | tee interesting_lines.txt \
  | sort

أو يمكنك الكتابة إلى ملف بامتيازات مرتفعة ، دون إعطاء الامتيازات المرتفعة لخط الأنابيب (هنا echo يتم تشغيله كمستخدم ، في حين tee يكتب إلى الملف باسم root):

echo 0 \
  | sudo tee /proc/sys/net/ipv4/ip_forward

مع tee، يمكنك الكتابة إلى العديد من الملفات (و  stdout):

echo "hi" \
  | tee a.txt b.txt

من الممكن أيضا استخدامها exec مع tee لتسجيل كل إخراج البرنامج النصي إلى ملف ، مع السماح باستمرار للمراقب (stdout) لمشاهدة البيانات:

exec > >( tee output.log )

68
2017-09-10 11:29



لا ننسى exec > >(tee "$LOGFILE") 2>&1 في البرنامج النصي باش الذي يتيح إخراج البرنامج النصي stdout و stderr على حد سواء ، stdout والملف وأشار إلى $LOGFILE. - rexkogitans
rexkogitans 2> & 1 ، أليس هذا هو بناء الجملة كمد؟ - dmb
dmb: إنها بنية shell الخاصة بـ "إرسال stderr (= 2) إلى نفس المكان كـ stdout (= 1)" - psmears
rexkogitans كان سؤالًا معقولًا حقًا ، لا يمكنني أن أعرف حقيقة أنك لم تستخدم "Windoze" لعقد من الزمان. أنا أستعمل 2>&1 لإسقاط الإخراج وخطأ لملفات النص في ويندوز. - dmb
dmb أنا آسف على السبر وقحا. كل شيء عن تعليق psmears. من الواضح أن نظام التشغيل Windows اعتمد أسلوب Unix هنا. - rexkogitans


هذا هو نقطة الإنطلاق:
enter image description here

تركيب الأنبوب على شكل T. لديها مدخل ، واثنين من منافذ منفصلة.
بعبارة أخرى ، تقسم الأنابيب الواحدة إلى اثنتين. مثل شوكة في الطريق.

وبالمثل، tee هو أنبوب (|) يتيح لك إعادة توجيه الإدخال القياسي إلى مخرجات منفصلة.


مثال
قل على سبيل المثال ، أنت تكتب ls /.
ستحصل على مخرجات تبدو كالتالي:

Applications    Network     Users       bin        dev      net      private    tmp         var
Library         System      Volumes     cores      etc      home     opt        sbin        usr

إعادة توجيه الإخراج إلى ملف نصي ، ls / > ls.txtولا يتم عرض أي إخراج في shell ، في الملف النصي الناتج فقط.

تريد أن ترى الإخراج ، وتمريره إلى ملف نصي في نفس الوقت؟
أضف tee إلى الأنبوب الخاص بك (|أي: ls / | tee ls.txt


قارن بين الاثنين:

ls /          >          ls.txt
ls /        | tee        ls.txt

25
2017-09-11 16:26



+1 للصورة التي نعرفها تساوي ألف كلمة - Sergiy Kolodyazhnyy
إذا كنت قد اخترت قطعة من خنفساء الحديقة ، فستكون متماشية مع استعارة دوغ ماكلروي الأصلية. - JdeBP
JdeBP عذرا ، ليس لدي أي فكرة من هو هذا. هل هو المؤلف الأصلي للمنشأة أو شيء ما؟ غالبًا ما تتم مقارنة تدفق البيانات والتيار الكهربائي الفعلي مع الأنظمة الهيدروليكية ، ولكنك على الأرجح تعرف ذلك. على أي حال ، لقد اخترت هذا النمط فقط للحفاظ على بساطة فائقة. كنت في الواقع أفعل ذلك لإبقائه مألوفًا ، ولكن تنوع الحديقة يميل إلى أن يكون أكثر من شكل Y و / أو مرفقات معقدة بصريًا لإرفاق الملحقات ، وما إلى ذلك. - tjt263
م. دوغلاس ماكلروي ، مؤلف هذه المذكرة الشهيرة من الذى عملت في مختبرات بيل و أقنع كين طومسون لوضع الأنابيب في يونكس. - JdeBP


لا ، يمكنك الإشارة إلى أحد الأمثلة القليلة التي يمكنك من خلالها بالفعل إعادة التوجيه إلى الملف باستخدام > و >> العاملين.

لكن تي يمكن أن تفعل أكثر من ذلك بكثير. لأنك تنفق عليه ، يمكنك بعد ذلك توجيه الأنبوب إلى شيء آخر.

يتم سرد مثال جيد على صفحة ويكيبيديا:

find "4DOS" wikipedia.txt | tee 4DOS.txt | sort > 4DOSsorted.txt

في الأساس ، يمكنك توجيه الأنبوب إلى نقطة الإنطلاق ، بحيث يمكنك بعد ذلك توجيه الأنبوب من نقطة الإنطلاق إلى عنصر آخر. إذا كان كل ما تريد القيام به هو كتابة ملف سجل ، نعم ، فأنت لا تحتاج حقا Tee.


17
2017-09-10 11:21





tee بعيد عن أن تكون عديمة الفائدة أستخدمها طوال الوقت ويسعدني وجودها. إنها أداة مفيدة جدًا إذا كان لديك خط أنابيب تريد تقسيمه. مثال بسيط جدا هو أن لديك بعض الأدلة $dأنك تريد القطران وتريد تجزئته أيضًا لأنك مصاب بجنون العظمة (مثل أنا) ولا أثق بوسيط التخزين لاحتواء البيانات بشكل موثوق. أنت استطاع قم بكتابتها على القرص أولاً ثم تجزئتها ، لكن ذلك سيخفق إذا تعرض الأرشيف للتلف قبل أن يتم تجزئته. علاوة على ذلك ، سيكون عليك قراءته ، وإذا كنت تعمل على ملفات بحجم مئات جيغابايت ، فستعرف أنك لا تريد قراءة هذه الملفات مرة أخرى إذا لم يكن الأمر كذلك.

ما أقوم به هو ببساطة:

tar -c "$d" | tee >(sha256sum) >(cat > "$d"".tar") > /dev/null

يخلق الكرة القطران ويوصلها إلى نقطة الإنطلاق ، ثم تقوم بتوصيلها إلى قوقعتين ، في واحدة منها يتم تجزئتها وفي الأخرى التي تتم كتابتها إلى القرص.

ومن الرائع أيضًا إذا كنت تريد إجراء عدة عمليات على ملف كبير:

< file.tar.gz tee >(sha256sum) >(tar -xz) /other/storage/location/file.tar.gz > /dev/null

يقرأ الملف مرة واحدة ، ويعيده (حتى تتمكن من التحقق مما إذا كان لا يزال كما ينبغي أن يكون) ، ويستخرجه ، ونسخه إلى موقع مختلف. لا حاجة لقراءتها ثلاث مرات لذلك.


16
2017-09-10 15:31



تصيد الأخطاء: tee لا يخلق subshells ؛ يتم تشغيل shell الاستدعاء sha5sum و cat ويربط الإخراج الخاص بهم إلى واصفات الملفات التي يتم تمريرها إلى tee. أيضا ، استخدام غير مجدية من cat. يمكنك استخدام إعادة توجيه الإدخال لديك tee قراءة مباشرة من file.tar.gz. - chepner
chepner أنت على صواب حيال الاعتراض الأول ، لكنك مخطئ تمامًا بشأن الاعتراض الثاني. أنا أحب كتابة خطوط الأنابيب الخاصة بي بالترتيب ، لذلك أدرك أن المدخلات الموجودة في اليمين رهيبة بالنسبة للقراءة وأن القيام بذلك هو بشكل واضح بشكل موضوعي أدنى من طريقي وليس تمامًا تفضيلاً ذاتيًا. cat الحب. cat هي الحياة. - UTF-8
يمكنك أيضا الكتابة < file.tar.gz tee >(sha256sum) ... إذا كنت قلقًا بشأن الترتيب المعجمي لعمليات إعادة التوجيه. لا يغير ذلك حقيقة أنه لا توجد حاجة إلى عملية منفصلة تمامًا فقط لإدخال ملف واحد tee. - chepner
chepner بارد ، شكرا لك! تعلمت شيئا اليوم. :) - UTF-8
السعر ل ابتداء  cat منخفضة نسبيًا. إن تكلفة 100 GBB إضافية من مكالمات نظام كتابة + قراءة تهدر بالتأكيد وقت وحدة المعالجة المركزية الإضافية وعرض النطاق الترددي للذاكرة لمثالك المقترح لملف ضخم. تذكر أن عرض النطاق الترددي للذاكرة هو مورد مشترك في جميع النوى ، ناهيك عن التلوث الإضافي لمخزن L3 من ذلك النسخ. على x86 مع تمكين التخفيف Specter + Meltdown ، تكون مكالمات النظام أكثر تكلفة من استخدامها. أنت تستخدم مقدارًا قابلًا للقياس من وقت وحدة المعالجة المركزية الإضافية على مدار هذه النسخة. أيضا >(cat > foo) ليس أسهل في الفهم من fooالمنظمة البحرية الدولية. - Peter Cordes


Nitpick على الإجابة @ bertieb الذي يقول يوضح هذا المثال أن الإنطلاق يتم استخدامه لتجاوز قيود متأصلة في الأمر sudo. sudo غير قادر على توجيه الإخراج القياسي إلى ملف.

لا يوجد قيود الكامنة ، فقط سوء فهم لكيفية معالجة الأمر.

مثال:

sudo echo 0 > /proc/sys/net/ipv4/ip_forward

ال قذيفة الحالية يوزع سطر الأوامر. يجدها إعادة توجيه الإخراج وينفذ ذلك. ثم ينفذ الأمر الذي هو sudo ويوفر سطر الأوامر المتبقية كوسائط للأمر الذي تم تنفيذه. إذا لم يكن لدى shell الحالي أذونات الجذر ، فستفشل إعادة توجيه الإخراج.

echo 0 | sudo tee /proc/sys/net/ipv4/ip_forward

هذا يعمل لأنه يتم تأجيل إعادة توجيه الإخراج إلى tee الأمر ، الذي لديه أذونات الجذر في تلك المرحلة لأنه تم تنفيذه عبر sudo.

sudo bash -c "echo 0 > /proc/sys/net/ipv4/ip_forward"

هذا يعمل لأن shell به إعادة التوجيه له أذونات الجذر.


11
2017-09-10 14:33



أيضا ، قد تحتاج sudo للأمر ، ولكن ليس للملف الجاري إخراجه ويعمل إعادة التوجيه على ما يرام: sudo foo-needs-privilege > /tmp/this-output-file-doesnt - Dennis Williamson


كما ذكر آخرون ، خرج الأنابيب إلى tee يكتب الأمر أن الإخراج إلى كل من الملف وإلى stdout.

أنا غالبا ما استخدم tee عندما أريد التقاط إخراج من أمر يستغرق وقتًا طويلاً للتشغيل ، مع الرغبة أيضًا في إجراء فحص مرئي للمخرج نظرًا لأن الأمر يجعله متاحًا. بهذه الطريقة ، لا يتعين علي الانتظار حتى ينتهي الأمر من العمل قبل فحص الإخراج.

ما لا يبدو أنه تم ذكرها بعد (ما لم أفتقدها) ، هو أن tee يمكن أيضا الكتابة إلى ملفات متعددة في وقت واحد. فمثلا:

ls *.png | tee a.txt b.txt

سوف يكتب كل *.png الملفات في الدليل الحالي إلى ملفين مختلفين (a.txt و b.txt) ذات مرة.

في الحقيقة ، يمكنك كتابة نص إلى عدة ملفات مختلفة في وقت واحد باستخدام tee مثله:

$ tee --append a.txt b.txt c.txt d.txt
These lines are appended to four different files,
and are also written to stdout.
CTRL-D

9
2017-09-10 17:22





الاستخدام الأكثر شيوعًا لنقطة الإنطلاق هو رؤية النص على الجهاز في نفس الوقت الذي ترسله فيه إلى الملف (أو الملفات). تفترض صياغة سؤالك أن تقوم فقط بكتابة نص إلى ملفات السجل. لدي البرامج النصية التي تكتب قوائم أسماء الملفات أو أسماء الدلائل لتشغيل الملفات (ليتم معالجتها من قبل البرامج النصية الأخرى بشكل غير متزامن) وأستخدم نقطة الإنطلاق لإرسال نفس المحتوى إلى stdout. يتم توجيه جميع stdout إلى السجلات. إذاً ، لدي نصّ حيث أريده ولديّ سجل تسجيل دخول قمت به ، كل ذلك من بيان "صدى" واحد

المحمل هو أيضا أفضل طريقة في يونكس لصنع عدة ملفات متطابقة. يمكنني استخدامه من وقت لآخر لصنع ملفات فارغة متعددة ، مثل هذا ...

:|tee file01 file02 file03

8
2017-09-10 14:43



لما لا touch؟ (أكثر وضوحا على الفور ما يحدث) - Attie
Attie touch لن يتم اقتطاع الملفات إذا كانت موجودة بالفعل ولكن فقط تحديث الطوابع الزمنية وترك محتوىها كما هو ؛ لكن tee سوف اقتطاعهم. أيضا ، به rm+touch يختلف عن tee (فكر في الارتباطات الثابتة والارتباطات الصوتية) - Matija Nalis
إذن لم لا truncate -s 0؟ :-) - Attie