[Powered by Google Translate] ٹومی: ہم نے اس ویڈیو میں کے بارے میں جاننے گے
منتقل کیا جا رہا ہے اور پائپوں.
اب تک، ہم کیا گیا ہے افعال کا استعمال کرتے ہوئے کی طرح printf پر
ٹرمینل پر پیداوار کے اعداد و شمار اور GetString کی طرح کام کرتا ہے
صارف ہمارے ان پٹ فراہم کرنے کے لئے کی اجازت
کی بورڈ کا استعمال کرتے ہوئے پروگرام.
چلو جلدی سے ایک ایسا پروگرام ہے جو ایک لائن مل جاتی ہے پر ایک نظر ڈالیں
صارف کی طرف سے ان پٹ اور پھر اس کے نتائج.
>> 7 آن لائن، ہم ایک تار کے لیے صارف نے فورا ہی کر رہے ہیں، اور
پھر 8 لائن پر ہم اسے پرنٹ واپس کر رہے ہیں باہر.
اور چلانے کے ہمارے پروگرام مرتب کریں.
بہت اچھا ہے.
سٹرنگ ہم فراہم واپس مائدونت کیا گیا
ہمیں اڈے.
یہ ہوا کیونکہ printf تقریب ایک خط لکھا
ندی نے معیاری باہر، یا S T-D-باہر ہے.
جب کچھ stdout کے وزٹرز کا ریکارڈ رکھا جائے گا، پہلے سے طے شدہ کی طرف سے ہے
ٹرمینل کی طرف سے ظاہر ہے.
>> تو یہ سب ٹھیک اور اچھا ہے، لیکن کیا اگر بجائے صرف کی
سٹرنگ آویزاں کرنا، ہم اس کے لئے ایک فائل کو بچانے کے لئے کرنا چاہتا تھا؟
مثال کے طور پر، ہم کو یاد رکھنا چاہتے ہیں بالکل وہی جو ہمارے
پروگرام کیا جب ہم یہ خاص طور پر ان پٹ کے بعد دیا ہے.
ایک نقطہ نظر ہماری C پروگرام میں یہ کرتے ہیں، کا استعمال کرتے ہوئے کی ہو گی
فائلوں کو لکھنے کے لئے کچھ خاص کام کرتا ہے کہ ہم کریں گے
ایک اور ویڈیو میں ملاحظہ کریں.
بھی آسان، لیکن کسی نہ کسی طرح ہو گی
ایک فائل stdout ری.
اس طرح، جب printf stdout لکھتے ہیں، مواد گے
ایک فائل کے بجائے لکھا جائے
ٹرمینل کی طرف سے ظاہر ہے.
کے بعد ہم سے بڑا ایک علامت کا اضافہ کر کے ایسا کر سکتے ہیں،
ایک فائل کے نام کی طرف سے، ہم نے حکم اپنے پروگرام پر عمل کرنے کے لئے استعمال کرتے ہیں.
>> تو، بجائے صرف قتل / ری، ہم کر سکتے ہیں.
چلانے / ری، علامت سے زیادہ کے بعد، کے بعد.
file.txt طرح فائل کا نام،.
چلو دیکھتے ہیں کیا ہوتا ہے.
ٹھیک ہے.
یاد رکھیں کہ اس وقت، کچھ بھی نہیں، ٹرمینل میں ظاہر کیا گیا تھا،
لیکن ہم ہمارے مواد میں تبدیلی نہیں کی ہے
C پروگرام بالکل.
اب LS کے ساتھ اس ڈائریکٹری کے مواد کی جانچ پڑتال کرنے دو
>> ٹھیک ہے.
اب ہم ہماری فہرست میں ایک نئی فائل بلایا file.txt ہے،
جو کہ فائل کے نام ہم فراہم جب ہم اپنے بھاگ گیا ہے
پروگرام لوٹایا.
کی file.txt کھول دو.
اور یہاں ہم دیکھتے ہیں، کہ ری stdout باہر گیا تھا
ملاقات کی file.txt فائل میں لکھا ہے.
تو پچھلے کمانڈ دوبارہ چلائیں، لیکن ایک کی فراہمی
مختلف ان پٹ اس وقت.
ٹھیک ہے.
چلو file.txt میں دیکھو، اب لے.
>> تو ہم یہاں دیکھتے ہیں کہ فائل ادلیکھت کر دیا گیا ہے کر سکتے ہیں، ہماری
وہاں اصل ان پٹ نہیں ہے.
اگر ہم بجائے اس ملف (فائل) سے ملحق کرنا چاہتے ہیں، نئے ڈال
فائل کی موجودہ مواد کے نیچے ان پٹ، ہم یہ کر سکتے ہیں
صرف ایک کے بجائے دو علامات سے بڑا کا استعمال کریں.
چلو کہ کی کوشش.
اب، اگر ہم file.txt دوبارہ کھولتے ہیں، ہم نے ہمارے دونوں دیکھ سکتے ہیں
ان پٹ کی لائنز.
کچھ صورتوں میں، ہم کسی بھی ضائع کرنا چاہتے ہیں کر سکتے ہیں
ہمارے پروگرام کی پیداوار ہے.
بلکہ ایک فائل پیداوار لکھنے اور پھر حذف کرنے سے
فائل جب ہم نے اس کے ساتھ کیا کیا کر رہے ہیں، ہم خصوصی لکھ سکتے ہیں
فائل ملاقات کی / دیو / شہوت انگیز null.
کچھ / جب کے وزٹرز کا ریکارڈ رکھا جائے گا ہے dev/null--
یا صرف مختصر devnull -
یہ خود کار طریقے سے ضائع کیا جاتا ہے.
تو آپ کے ڈیٹا کے لئے ایک بلیک ہول کے طور پر devnull کے بارے میں سوچو.
>> تو اب ہم نے دیکھا ہے سے بڑھ کر نشانی کس طرح ری ڈائریکٹ کر سکتے ہیں ہے
stdout، یہ دیکھنے کی ضرورت ہے کہ ہم کس طرح میں معیاری ری کر سکتے ہیں -
یا ایس T-D--
stdout کے analogue.
جبکہ افعال printf پسند کہا جاتا سلسلہ لکھیں
stdout GetString، اور اسی طرح کے افعال سلسلہ سے پڑھا
کہا جاتا stdin، جو، ڈیفالٹ کی طرف سے، کے نالے ہے
حروف کی بورڈ میں ٹائپ ہے.
بعد ہم علامت سے کم استعمال کرتے ہوئے stdin ری کر سکتے ہیں،
فائل کے نام کی طرف سے.
اب، بجائے ان پٹ کے لئے صارف نے فورا ہی
ٹرمنل ایک پروگرام فائل کو کھولنے ہم مخصوص اور استعمال کریں گے
ان پٹ کے طور پر اپنے لائنوں.
>> چلو دیکھتے ہیں کیا ہوتا ہے.
بہت اچھا ہے.
file.txt کی پہلی لائن ہے ٹرمینل میں طباعت
کیونکہ ہم GetString ایک بار فون کر رہے ہیں.
اگر ہم اپنے پروگرام کے میں GetString پر ایک اور کال پڑا،
file.txt کی اگلی لائن کیا گیا ہے کے طور پر کرتے
اس کال تداخل.
ایک بار پھر، ہم نے ہمارے C کے پروگرام میں ترمیم نہیں کیا ہے بالکل.
ہم کہ ہم کس طرح اسے چلانے کے لئے صرف تبدیل کر رہے ہیں.
اور یہ بھی یاد رکھنا، ہم ری ڈائریکٹ stdout نہیں ہے اس وقت،
پروگرام کے پیداوار میں بھی
ٹرمینل میں ظاہر ہے.
ظاہر کی، ہم دونوں stdin ری کر سکتے ہیں
اور اس طرح stdout.
اب، file2.txt file.txt کی پہلی لائن پر مشتمل ہے.
>> تو، ان آپریٹرز کا استعمال کرتے ہوئے، ہم پڑھیں اور کرنے کے قابل ہو گیا ہے
متن فائلوں سے لکھتے ہیں.
اب، یہ دیکھنے کی ضرورت ہے کہ ہم کس طرح کے طور پر ایک پروگرام کی پیداوار میں استعمال کر سکتے ہیں
کسی دوسرے پروگرام کے ان پٹ.
تو یہاں ایک اور سادہ سی پروگرام ہے، میں
یہاں hello.c ملاقات کی.
جیسا کہ آپ دیکھ سکتے ہیں، یہ صرف نتائج "ہیلو
صارف کو ".
اگر میں ان پٹ کے طور پر خوش کی پیداوار کرنے کے لئے استعمال کی ری چاہتے ہیں -
کسی دوسرے پروگرام -
میں ہیلو کے stdout پہلے نامی فائل پر ری ڈائریکٹ کر سکتے
input.txt، تو ہے جو ایک ہی ری stdin ری
فائل - input.txt.
تو مجھے کیا کرنا / ہیلو input.txt> کر سکتے ہیں.
اس پر عمل کرنے کیلئے انٹر دبائیں.
کے بعد. / ری <
input.txt، اور یہ کہ پھانسی.
تو ہم ایک نیم وقفہ کے ساتھ یہ تھوڑا سا قصر کر سکتے ہیں، جس کی اجازت دیتا ہے
ہمیں ایک ہی لائن پر دو یا دو سے زیادہ حکم چلانے کے لئے.
تو میں کہتا ہوں، سکتا / ہیلو> input.txt، نیم وقفہ،
/ <input.txt ری.
>> یہ کام تو ہے، لیکن یہ اب بھی بہت inelegant محسوس ہوتا ہے.
میرا مطلب ہے، ہم واقعی اس بیچوان ٹیکسٹ فائل ہے جو ہے کی ضرورت ہے
رنز ری کے بعد اب کوئی ضروری ہے؟
خوش قسمتی سے، ہم اس اضافی متن کو استعمال کرتے ہوئے کیا فائل سے بچنے کر سکتے ہیں
کہا جاتا ہے ایک پائپ.
اگر میں کہتا ہوں، / ہیلو. / تو stdout ری
بائیں پروگرام -
اس صورت میں، ہیلو -
کے لئے معیاری ان پٹ کے طور پر استعمال کیا جائے گا
دائیں طرف کے پروگرام.
ری، اس صورت میں. تو اس کو چلانے کے.
>> ہم وہاں جا رہے ہیں.
ہم ان پٹ کے طور پر دیکھنا ہے کہ ہیلو کی پیداوار کے لئے استعمال کیا گیا ہے کر سکتے ہیں
کے لئے ری.
حکم stringing پائپوں کا استعمال کرتے ہوئے کی طرف سے ایک ساتھ مل کر، ہم فارم کیا ہے
نے ایک پائپ لائن کو فون کیا، کے بعد سے ہماری پیداوار بنیادی طور پر آگے بڑھ رہا ہے
حکم کی ایک ہی تسلسل کے ذریعے.
پائپ کا استعمال کرتے ہوئے، ہم کرنے کی ضرورت کے بغیر کچھ ڈاؤن لوڈ، اتارنا چیزیں کر سکتے ہیں
کسی بھی کوڈ لکھ دیں.
مثال کے طور پر، دو کا کہنا ہے کہ ہم جانتے ہیں کہ کتنی فائلیں ہیں کرنا چاہتے ہیں
کے اندر اندر اس ڈائریکٹری کی.
ایک پائپ کا استعمال کرتے ہوئے، ہم نے ورلڈ کپ کے ساتھ LS کمانڈ جمع کر سکتے ہیں -
wordcount یا -
کمانڈ.
LS stdout پر ڈائریکٹری میں ہر فائل پیداوار، اور
ورلڈ کپ ہمیں بتائیں کہ کس طرح بہت سے لائنز stdin کے ذریعے اس پر دیا گیا.
لہذا، اگر ہم یہ کہیں گے LS | ورلڈ کپ L -
ورلڈ کپ-L پرچم کی فراہمی لائنیں شمار بتانے کی -
ہم دیکھتے ہیں کر سکتے ہیں کہ کس طرح کئی فائلیں ہیں ہیں
موجودہ ڈائریکٹری میں.
>> تو ایک اور مثال کے طور پر میں ایک نظر ڈالیں.
میں یہاں ایک کہا جاتا students.txt فائل ہے،
ناموں کی ایک فہرست کے ساتھ.
تاہم، ان کے ناموں کو کسی بھی ترتیب یہ سب میں نہیں ہیں، اور ایسا لگتا ہے
کی طرح کچھ کے نام کو بار بار کر رہے ہیں.
جو ہم چاہتے حروف تہجی میں منفرد نام کی ایک فہرست ہے
حکم نامی final.txt فائل میں محفوظ کیا.
ظاہر کی، ہم سی کی طرف سے ہمارے لئے اس پروگرام کو لکھ سکتا ہے.
لیکن یہ بیکار میں حاصل کرنے کے لئے جا رہا ہے
بہت تیزی سے پیچیدہ ہے.
چلو بجائے پائپ اور کچھ بلٹ میں ٹولز کو حل کرنے کے لئے استعمال کریں
اس مسئلہ کا.
>> پہلی بات ہم کیا کرنے کی ضرورت ہے فائل students.txt پڑھ ہے.
بلی کا حکم صرف یہ ہے کہ کیا ہو گا.
یہ وضاحت فائل میں پڑھیں اور لکھیں گے
stdout کے مواد کو.
ہم ٹیکسٹ فائل کو پڑھا ہے کے بعد، ہم کریں گے
ناموں کو ترتیب کرنا چاہتے ہیں.
طرح کا حکم ہمارے لئے اس کو سنبھال سکتے ہیں.
ترتیب دیں stdin کے ذریعے stdout کی فراہمی لائن پیداوار
کے مطابق ترتیب میں.
students.txt کے مندرجات کی فراہمی
طرح stdin، ہم نے ایک پائپ کا استعمال کرتے ہوئے بلی اور طرح سے جمع کر سکتے ہیں.
طرح اور | تو میں نے بلی students.txt پھانسی کر سکتے ہیں
انٹر دبائیں.
اور اب، ہم میں students.txt کے مندرجات دیکھ
حروف تہجی.
>> تو دوسرا حکم شامل -
uniq، یا منفرد -
ہمارے پائپ لائن.
کے طور پر آپ کو لگتا ہے کہ ہو سکتا ہے، uniq، جب ایک کے مطابق کی ترتیب فراہم
stdin کے ذریعے کی لائنز منفرد لائنز کی پیداوار کریں گے.
تو اب ہم نے بلی students.txt ہے
طرح | | uniq.
آخر میں، ہم نے ایک پائپ لائن کی پیداوار میں محفوظ کر سکتے ہیں
طرح | | uniq بلی students.txt کے ذریعے فائل
> final.txt.
تو، اگر ہم نے final.txt کھولتے ہیں تو، ہم بالکل وہی جو ہم تھے
کے لئے تلاش رہیں ہیں:
حروف تہجی کی ترتیب میں منفرد ناموں کی ایک فہرست،
ایک ٹیکسٹ فائل میں محفوظ ہوگیا.
ویسے ہم بھی <طرح کہا جا سکتا ہے
students.txt | بالکل uniq> کیا final.txt پر
ایک ہی چیز، آپریٹرز ہم میں دیکھا ہے میں سے ہر ایک کا استعمال کرتے ہوئے
اس ویڈیو.
>> میرا نام ٹومی ہے، اور اس CS50 ہے.