[Powered by Google Translate] TOMMY: في هذا الفيديو، سوف نتعلم عن إعادة توجيه والأنابيب. حتى الآن، كنا باستخدام وظائف مثل printf ل بيانات الإخراج إلى محطة وظائف مثل GetString للسماح للمستخدم لتوفير مدخلات لدينا البرنامج باستخدام لوحة المفاتيح. دعونا نلقي نظرة على وجه السرعة برنامج يحصل على خط مدخلات من المستخدم ومن ثم إخراجها. على السطر 7، ونحن مطالبة المستخدم لسلسلة، و ثم على السطر 8، ونحن طباعته العودة. دعونا ترجمة وتشغيل البرنامج. كبيرة. وردد السلسلة قدمنا ​​مرة أخرى لنا في المحطة. حدث هذا لأن الدالة printf كتب إلى دعا تيار من معيار، أو S-T-D خارج. عند كتابة شيء لSTDOUT، انها افتراضيا عرض من قبل المحطة. ذلك أن كل شيء حسن وجيد، ولكن ماذا لو، بدلا من مجرد عرض السلسلة، أردنا أن حفظه إلى ملف؟ على سبيل المثال، قد كنا نريد أن نتذكر بالضبط ما لدينا لم البرنامج عندما كنا أعطاه مدخل معين في وقت لاحق. ونهج واحد يكون القيام بذلك في برنامج C لدينا، وذلك باستخدام بعض وظائف خاصة للكتابة على الملفات التي سنقوم نرى في فيديو آخر. حتى أسهل، على الرغم من ذلك، على نحو ما هو إعادة توجيه STDOUT إلى ملف. وبهذه الطريقة، عندما يكتب إلى stdout printf، سوف محتويات أن تكون مكتوبة إلى ملف بدلا من عرض من قبل المحطة. تابعنا يمكن أن نفعل ذلك فقط عن طريق إضافة علامة أكبر من، بواسطة اسم الملف، إلى الأمر نستخدمها لتنفيذ برنامجنا. لذلك، بدلا من تنفيذ ببساطة. / إعادة توجيه، لا يمكننا تشغيل / إعادة توجيه، تليها علامة أكبر من، تليها اسم الملف، مثل file.txt. دعونا نرى ما سيحدث. OK. لاحظ أن هذا الوقت، كان عرض أي شيء في المحطة، لكننا لم تعديل محتويات موقعنا C برنامج على الإطلاق. دعونا الآن دراسة محتويات هذا الدليل مع LS. حسنا. لدينا الآن ملف جديد في دليلنا دعا file.txt، الذي هو اسم الملف زودنا عندما هربنا لدينا إعادة توجيه البرنامج. دعونا فتح file.txt. وهنا، يمكننا أن نرى أن إعادة توجيه STDOUT من كان كتبت إلى ملف يسمى file.txt. لذلك دعونا تشغيل الأمر السابق مرة أخرى، ولكن توريد مدخلات مختلفة هذه المرة. حسنا. دعونا نلقي نظرة على file.txt الآن. هنا يمكننا أن نرى أن الملف قد تمت الكتابة، لذلك لدينا إدخال الأصلي ليس هناك بعد الآن. إذا كنا نريد لإلحاق بدلا لهذا الملف، ووضع جديد إدخال أدناه محتويات القائمة من الملف، لا يسعنا استخدام اثنين من أكبر من علامات بدلا من واحدة فقط. دعونا نحاول ذلك. الآن، إذا كان لنا أن فتح file.txt مرة أخرى، يمكننا أن نرى كل من دينا إدخال خطوط. في بعض الحالات، قد نريد أن تجاهل أي خرج من برنامجنا. بدلا من كتابة الإخراج إلى ملف ثم حذف الملف عندما ننتهي معها، يمكننا إرسال بريد إلى الخاص دعا الملف / ديف / لاغية. عند كتابة أي شيء ل/ dev/null-- أو لمجرد devnull قصيرة - يتم تجاهل تلقائيا. أعتقد ذلك من devnull كما الثقب الأسود للبيانات الخاصة بك. حتى الآن لقد رأينا كيف علامة أكبر من يمكن إعادة توجيه STDOUT، دعونا نرى كيف يمكننا إعادة توجيه القياسية في - أو S-T-D-في - والتماثلية من STDOUT. بينما ظائف مثل printf الكتابة إلى دفق دعا STDOUT، GetString وظائف مماثلة قراءة من مجرى دعا ستدين، والتي، بشكل افتراضي، هو تيار من حرف كتبته على لوحة المفاتيح. تابعنا يمكن إعادة توجيه STDIN باستخدام أقل من تسجيل، قبل اسم الملف. الآن، بدلا من مطالبة المستخدم لإدخال في محطة، وسوف برنامج فتح الملف المحدد ونحن استخدام في خطوط كإدخال. دعونا نرى ما سيحدث. كبيرة. وقد طبع في السطر الأول من file.txt إلى محطة لأننا يدعو GetString مرة واحدة. لو كان لدينا مكالمة أخرى إلى GetString في برنامجنا، في كان يمكن أن السطر التالي من file.txt تستخدم المدخلات لهذه الدعوة. مرة أخرى، نحن لم تعديل برنامجنا C على الإطلاق. نحن فقط تغيير الطريقة التي تعمل بها. وتذكر أيضا، ونحن لم STDOUT توجيه هذه المرة، لذلك كان الناتج من البرنامج مازال عرض في محطة. يمكننا، بطبيعة الحال، إعادة توجيه كل من ستدين وSTDOUT مثل هذا. الآن، file2.txt يحتوي على السطر الأول من file.txt. لذلك، وذلك باستخدام هذه العوامل، لقد كنا قادرين على القراءة و الكتابة من ملفات نصية. الآن، دعونا نرى كيف يمكننا استخدام الناتج من برنامج واحد كما المدخل إلى برنامج آخر. حتى هنا برنامج آخر بسيط I C ودعا hello.c هنا. كما ترون، هذا ببساطة إخراج "مرحبا هناك! "للمستخدم. إذا كنت تريد إعادة توجيه لاستخدام مدخلات الإنتاج من مرحبا - برنامج آخر - ويمكنني أن إعادة توجيه لأول مرة من STDOUT مرحبا إلى ملف يسمى input.txt، ثم إعادة توجيه STDIN من إعادة توجيه إلى أن نفس الملف - input.txt. حتى أتمكن من القيام به. / مرحبا> input.txt. اضغط Enter لتنفيذ ذلك. تليها. / إعادة توجيه < input.txt، وتنفيذ ذلك. حتى نتمكن من تقصير هذا قليلا مع فاصلة منقوطة، والذي يسمح لنا لتشغيل اثنين أو أكثر من الأوامر في نفس السطر. لذلك أستطيع أن أقول، / مرحبا> input.txt، منقوطة، / إعادة توجيه final.txt. لذلك، إذا كان لنا أن فتح final.txt، لدينا بالضبط ما كنا أبحث عن: قائمة بأسماء فريدة من نوعها في الترتيب الأبجدي، حفظها إلى ملف نصي. من جانب الطريق، ونحن يمكن أيضا وقال النوع < students.txt | UNIQ> final.txt للقيام بالضبط الشيء نفسه، وذلك باستخدام كل من مشغلي رأيناه في هذا الفيديو. اسمي تومي، وهذا هو CS50.