[Powered by Google Translate] Tommy: এই ভিডিওতে, আমরা সম্পর্কে জানতে পারবেন
পুনঃচালিত এবং পাইপ.
এ পর্যন্ত, আমরা ফাংশন ব্যবহার করছি না printf যাও
টার্মিনালে আউটপুট তথ্য এবং GetString ভালো ফাংশন
ব্যবহারকারী যাও আমাদের ইনপুট প্রদান করার অনুমতি দেয়
প্রোগ্রাম কীবোর্ড ব্যবহার করে.
চলুন শুরু করা যাক দ্রুত একটি প্রোগ্রাম যা একটি লাইন পায় কটাক্ষপাত করা
ব্যবহারকারী থেকে ইনপুট এবং আউটপুট তারপর এটা.
>> লাইন 7, আমরা একটি স্ট্রিং জন্য হলে ব্যবহারকারীকে করছেন, এবং
তারপর লাইন 8, আমরা এটা মুদ্রণ করেছেন ফেরত.
চলুন এবং কম্পাইল আমাদের প্রোগ্রাম চালানো.
গ্রেট.
আমরা স্ট্রিং উপলব্ধ ফিরে প্রতিধ্বনিত হয়
আমাদের এ টার্মিনাল.
এই কি কারণ printf ফাংশানের একটি লেখেন
স্ট্রীম নামক মান আউট, বা গুলি-t-d-আউট.
যখন stdout-এ কিছু লেখা হয়, এটি ডিফল্ট এর দ্বারা
টার্মিনাল দ্বারা প্রদর্শিত হয়.
>> সুতরাং যে সব বেশ, ভালো কথা, কিন্তু আছে কি যদি, পরিবর্তে সহজভাবে
পংক্তি প্রদর্শন করা, আমরা একটি ফাইলে সংরক্ষণ চেয়েছিলেন?
উদাহরণস্বরূপ, আমরা মনে রাখতে চাইবেন ঠিক কি আমাদের
প্রোগ্রাম হয়েছিলো যখন আমরা দিয়েছেন এটি একটি নির্দিষ্ট ইনপুট পরে.
একটা পদক্ষেপ আমাদের সি প্রোগ্রাম এই, না ব্যবহার করে
কিছু লেখার ফাইলের জন্য বিশেষ ফাংশন যে আমরা করব
অন্য ভিডিওতে দেখুন.
যদিও আরও সহজ,, একরকম হবে
একটি ফাইল stdout-এ পুনর্নির্দেশ.
এই ভাবে, যখন printf stdout-এ লিখেছেন, বিষয়বস্তু ইচ্ছাশক্তি
একটি ফাইল যাও বদলে করা
টার্মিনাল দ্বারা প্রদর্শিত হয়.
আমরা একটি বৃহত্তর-তুলনায় সাইন যোগ করে ঠিক তা করতে পারে, অনুসরণ
কমান্ড ব্যবহার করে একটি ফাইল নামের দ্বারা, আমরা আমাদের প্রোগ্রাম চালানো ব্যবহার.
>> সুতরাং, শুধু বদলে নির্বাহ. / পুনর্নির্দেশ, আমরা করতে পারেন
. চালানো / পুনর্নির্দেশ, অনুসরণ সাইন তুলনায় অধিক দ্বারা, অনুসরণ দ্বারা
file.txt ভালো ফাইলের নাম,.
এর কি চলুন দেখা যাক.
ঠিক আছে.
এই সময়, টার্মিনালে কিছুই দেখানো হয় বিজ্ঞপ্তি,
কিন্তু আমরা আমাদের বিষয়বস্তু পরিবর্তন করা আছে
সি প্রোগ্রাম এ সব.
চলুন এখন ls সঙ্গে এই ডিরেক্টরির বিষয়বস্তু পরীক্ষা করুন.
>> ঠিক আছে.
আমরা এখন আমাদের একটি নতুন ডিরেক্টরির মধ্যে ফাইল file.txt বলা আছে,
যা ফাইলের নামের আমরা সরবরাহ যখন আমরা আমাদের দৌড়ে
প্রোগ্রাম পুনঃনির্দেশ.
চলুন file.txt খুলুন.
এবং এখানে, আমরা যে stdout-এ পুনর্নির্দেশ আউট ছিল দেখতে পারেন
লিখিত ফাইল নামক file.txt যাও.
সুতরাং এর আবার আগের কমান্ডটি প্রয়োগ করুন যাক, কিন্তু একটি সরবরাহ
বিভিন্ন ইনপুট এই সময়.
ঠিক আছে.
চলুন এখন file.txt কটাক্ষপাত করা.
>> আমরা এখানে যে ফাইলটি মুছে ফেলা হয়েছে দেখতে পারেন, তাই আমাদের
মূল ইনপুট আর হয় না.
যদি আমরা পরিবর্তে এই ফাইলটি সংযুক্ত করতে চান, নতুন নির্বাণ
ফাইলের বিষয়বস্তু নীচে বিদ্যমান ইনপুট, আমরা করতে পারেন
দুই বৃহত্তর-তুলনায় চিহ্ন ব্যবহার পরিবর্তে শুধুমাত্র একটি.
চলুন যে চেষ্টা.
এখন, যদি আমরা আবার খুলুন file.txt, আমরা আমাদের উভয় দেখতে পারেন
ইনপুট লাইনে.
কিছু ক্ষেত্রে, আমরা কোনো বাতিল করতে পারেন
আমাদের প্রোগ্রামের আউটপুট.
পরিবর্তে শুধুমাত্র একটি ফাইল আউটপুট লেখার এবং তারপর মুছে ফেলা হচ্ছে
ফাইল যখন আমরা সঙ্গে সম্পন্ন হলে, আমরা একটি বিশেষ লিখতে পারেন
ফাইল নামক এবং / dev / নাল.
কখন / কোন কিছু লেখা হয় dev/null--
বা সংক্ষেপে শুধু devnull -
এটি স্বয়ংক্রিয়ভাবে বাতিল করা হয়.
Devnull তাই আপনার জন্য তথ্য অন্ধকূপ হিসাবে মনে করি.
>> তাই এখন আমরা কিভাবে চেয়ে সাইন পুনর্নির্দেশ দেখা যাবে করেছি
stdout-এ, যাক কিভাবে আমরা রিডিরেক্ট মান দেখতে পারেন -
বা গুলি-t-d-মধ্যে -
stdout-এর অ্যানালগ.
যদিও ফাংশন চান printf প্রবাহ নামক যাও লিখুন
stdout-এ, GetString এবং অনুরূপ কর্ম প্রবাহ থেকে পড়া
বলা stdin, ডিফল্টরূপে যা,,, হল প্রবাহ
অক্ষর কীবোর্ড এ টাইপ.
আমরা stdin সাইন কম ব্যবহার পুনর্নির্দেশ করতে পারেন, অনুসরণ
দ্বারা একটি ফাইলের নাম.
এখন, বরং এ জন্য ইনপুট হলে ব্যবহারকারীকে
টার্মিনাল, একটি প্রোগ্রামের ফাইল খোলার জন্য আমরা নির্দিষ্ট করা এবং ব্যবহার করা
ইনপুট হিসাবে তার লাইন.
>> এর কি চলুন দেখা যাক.
গ্রেট.
file.txt প্রথম লাইন টার্মিনালে করেনি ছাপা হয়েছে
কারণ আমরা GetString কলিং একবার করছি.
যদি আমরা GetString আমাদের প্রোগ্রামে অন্য কল ছিল,
file.txt পরবর্তী লাইন হিসাবে ব্যবহৃত হয়েছে করবে
কল ইনপুট.
আবার, আমরা এ সব পরিবর্তন আমাদের সি প্রোগ্রাম করেন নি.
আমরা কেবলমাত্র পরিবর্তন করছি আমরা কিভাবে এটিকে চালাতে.
এবং এছাড়াও, মনে রাখবেন আমরা এই সময় আছে stdout-এ পুনঃনির্দেশিত না,
তাই প্রোগ্রামের আউটপুট এখনও ছিল
টার্মিনালে প্রদর্শিত হবে.
আমরা অবশ্যই, উভয় stdin পুনর্নির্দেশ করতে পারেন
ভালো এবং stdout-এ.
এখন, file2.txt রয়েছে file.txt প্রথম লাইন.
>> এইসব অপারেটর ব্যবহার করে, তাই, আমরা পড়তে পারব
টেক্সট ফাইল থেকে লিখুন.
এখন, এর দেখতে দিন কিভাবে আমরা একটি প্রোগ্রামের আউটপুট হিসাবে ব্যবহার করতে পারেন
অন্য প্রোগ্রামের ইনপুট.
তাই এখানে আরেকটি সহজ সি প্রোগ্রাম আমি
এখানে hello.c বলা হয়.
হিসাবে আপনি দেখতে পারেন, কেবল এই আউটপুট "হাই
! ব্যবহারকারী যাও আছে ".
যদি আমি ইনপুট হিসাবে হ্যালো আউটপুট ব্যবহার রিডিরেক্ট করতে চান -
অন্য প্রোগ্রাম -
আমি প্রথম নামক কোনো ফাইল হ্যালো এর stdout-এ পুনর্নির্দেশ পারে
input.txt তারপর, যে একই মধ্যে পুনর্নির্দেশ stdin পুনঃনির্দেশ
ফাইল - input.txt.
সুতরাং আমি. / হ্যালো> input.txt করতে পারেন.
এই চালানো Enter টিপুন.
অনুসরণ করছে. / পুনর্নির্দেশ <
input.txt, এবং যে চালানো হয়.
সুতরাং আমরা এই একটি সেমিকোলন সঙ্গে একটি বিট, যার সাহায্যে খাটো করতে পারেন
আমাদের একই লাইনে দুই অথবা অধিক কমান্ড সঞ্চালন করুন.
সুতরাং আমি,. বলতে পারেন / হ্যালো> input.txt, সেমিকোলন,
. / <Input.txt পুনর্নির্দেশ.
>> তাই এই কাজ করে, কিন্তু এটি এখনও মনে সুন্দর অসুন্দর.
আমি বলতে চাচ্ছি, আমরা কি সত্যিই এই মধ্যবর্তী টেক্সট ফাইলটি যে এর প্রয়োজন
রান পুনর্নির্দেশ পরে আর প্রয়োজনীয়?
ভাগ্যক্রমে, আমরা এই অতিরিক্ত টেক্সট ফাইল ব্যবহার করে কি কি এড়াতে পারেন
নামক একটি নল.
যদি আমি বলে, / হ্যালো |.. /, Stdout-এ পুনর্নির্দেশ তারপর সারাংশ
বাম প্রোগ্রাম -
এই ক্ষেত্রে, হ্যালো -
জন্য স্ট্যান্ডার্ড ইনপুট হিসাবে ব্যবহার করা হবে
ডানদিকে প্রোগ্রাম.
এই ক্ষেত্রে, পুনর্নির্দেশ. তাই আসুন এই রান.
>> এখন পর্যন্ত আমরা যেতে.
আমরা ইনপুট হিসাবে দেখতে পারেন যে হ্যালো আউটপুট ব্যবহার করা হয়েছিল
জন্য পুনর্নির্দেশ.
কমান্ড একসাথে গাঁথন পাইপ ব্যবহার করে, আমরা কি এর গঠন
নামক একটি পাইপলাইন, যেহেতু মূলত আমাদের আউটপুট চলন্ত হয়
মাধ্যমে ক্রমানুশারে একাধিক কমান্ড.
পাইপ ব্যবহার করে, আমরা প্রয়োজন যাও ছাড়া কিছু শান্ত স্টাফ করতে পারেন
যে কোনো সময়ে সমস্ত কোড লিখুন.
উদাহরণস্বরূপ, এর যাক বলতে আমরা কতগুলি ফাইল জানতে চাই
ভিতর এই নির্দেশিকা.
একটি পাইপ ব্যবহার করে, আমরা wc ls কমান্ডের সাথে একত্রিত করতে পারেন -
অথবা wordcount -
কমান্ড.
Ls stdout-ডিরেক্টরির মধ্যে প্রতিটি ফাইল, এবং আউটপুট হবে
wc আমাদের বলতে হবে কতগুলি লাইন এটা stdin মাধ্যমে দেওয়া হয়.
সুতরাং, যদি আমরা বলতে ls | wc-l -
wc যাও-l পতাকা তা সরবরাহ লাইন সংখ্যা গণনা বলুন -
আমরা ঠিক কতগুলি ফাইল দেখতে পারেন
বর্তমান ডিরেক্টরির.
>> সুতরাং আসুন আরও একটি উদাহরণ কটাক্ষপাত করা.
আমি এখানে একটি ফাইল নামক students.txt,
সঙ্গে নামের একটি তালিকা.
যাইহোক, এই নামগুলি কোনো ক্রম এটি সব হয় এবং এটি দেখায়, না
ভালো কয়েক নাম পুনরাবৃত্ত হয়.
আমরা কি করতে চান বর্ণানুক্রমিক মধ্যে অনন্য নামের তালিকা
আদেশ, সংরক্ষিত নামক কোনো ফাইল final.txt যাও.
আমরা অবশ্যই,, একটি আমাদের জন্য এই না সি প্রোগ্রাম লিখতে পারেন.
কিন্তু কেউ অকারণে করবে
জটিল প্রশংসনীয় দ্রুত.
চলুন শুরু করা যাক পরিবর্তে পাইপ এবং কিছু বিল্ট ইন সরঞ্জাম ব্যবহার সমাধান
এই সমস্যা.
>> প্রথম জিনিস আমরা যা করতে হবে students.txt ফাইলটি পড়া হয়.
cat কমান্ডের ঠিক করবেন.
এটা নির্দিষ্ট ফাইলে লিখতে এবং পড়তে হবে
stdout-এর বিষয়বস্তু.
পরে আমরা টেক্সট ফাইল পড়তে করেছি, আমরা করব
যাও নামগুলি সাজাতে চান.
সাজানোর কমান্ড আমাদের জন্য এই ব্যবস্থা করতে সক্ষম.
সাজান লাইন stdout-এ stdin মাধ্যমে সরবরাহকৃত আউটপুট হবে
এ আদেশ অনুসারে সাজানো.
যাতে students.txt বিষয়বস্তু সরবরাহ করে
সাজানোর এর stdin, আমরা বিড়াল এবং সাজানোর একত্রিত করে একটি নল ব্যবহার করতে পারেন.
এবং সাজানোর | তাই আমি বিড়াল students.txt নির্বাহ করতে পারেন
Enter টিপুন.
এবং এখন, আমরা students.txt বিষয়বস্তু দেখুন
অদ্যাক্ষর অনুক্রমে সাজানো.
>> সুতরাং আসুন আর একটি কমান্ড যোগ করা -
uniq, অথবা অনন্য -
আমাদের পাইপলাইন.
হিসাবে আপনি uniq, অনুমান করতে পারে, যখন একটি সাজানো ক্রম সরবরাহকৃত
stdin মাধ্যমে লাইন, অনন্য লাইন আউটপুট হবে.
তাই এখন আমরা বিড়াল students.txt আছে
| সাজান | uniq.
পরিশেষে, আমরা পাইপলাইন আউটপুট একটি সংরক্ষণ করতে পারেন
সাজানোর | | uniq বিড়াল students.txt মাধ্যমে ফাইল
> Final.txt.
সুতরাং, যদি আমরা খোলা final.txt আপ, আমরা কি ঠিক আছে আমরা
খুঁজছি:
বর্ণানুসারে অনন্য নামের তালিকা,
সংরক্ষিত একটি টেক্সট ফাইল.
যাইহোক, আমরা বলেন সাজান <থাকতে পারে
students.txt | uniq> final.txt না ঠিক
একই জিনিস, অপারেটরদের আমরা দেখা করেছি প্রতিটি ব্যবহার
এই ভিডিও.
>> আমার নাম টমি, এবং এই CS50.