আমার মতো প্রবর্তকদের জন্য বর্ধিত ব্যাখ্যা সহ একটি সরল সংস্করণ এখানে যারা এক লাইনে কীভাবে একাধিক কমান্ড রাখবেন তা শিখতে চেষ্টা করছেন।
আপনি যদি পদক্ষেপে সমস্যাটি লিখতে থাকেন তবে এটি দেখতে এটির মতো হবে:
// For every file in this directory
// Check the filetype
// If it's an ASCII file, then print out the filename
এই অর্জন করার জন্য, আমরা তিন ইউনিক্স কমান্ড ব্যবহার করতে পারেন: find
, file
, এবংgrep
।
find
ডিরেক্টরিতে প্রতিটি ফাইল চেক করবে।
file
আমাদের ফাইল টাইপ দেবে। আমাদের ক্ষেত্রে, আমরা 'ASCII পাঠ্য' ফেরত খুঁজছি
grep
থেকে আউটপুটে 'ASCII' কীওয়ার্ডটি সন্ধান করবে file
সুতরাং আমরা কিভাবে এক এক লাইনে এই স্ট্রিং করতে পারি? এটি করার একাধিক উপায় রয়েছে তবে আমি দেখতে পেয়েছি যে এটি আমাদের সিউডো কোড অনুসারে করা আমাদের সার্থক করে তোলে (বিশেষত আমার মতো একজন শিক্ষানবিশকে)।
find ./ -exec file {} ";" | grep 'ASCII'
জটিল মনে হচ্ছে, তবে খারাপ না যখন আমরা এটিকে ভেঙে ফেলি:
find ./
= এই ডিরেক্টরিতে প্রতিটি ফাইলের মাধ্যমে দেখুন। দ্যfind
যে 'অভিব্যক্তি' মিলে যায়, অথবা যাই হোক না কেন কোনো ফাইলের ফাইলের নাম জানতে কমান্ড কপি করে প্রিন্ট পাথ, যা আমাদের ক্ষেত্রে বর্তমান ডিরেক্টরী অথবা পরে আসে./
সবচেয়ে গুরুত্বপূর্ণ বিষয়টি বুঝতে হবে যে সেই প্রথম বিটের পরে সমস্ত কিছু সত্য বা মিথ্যা হিসাবে মূল্যায়ন করা হচ্ছে। যদি সত্য হয় তবে ফাইলটির নাম মুদ্রিত হয়ে যাবে। যদি না হয়, তবে কমান্ডটি এগিয়ে চলেছে।
-exec
= এই পতাকাটি অনুসন্ধান কমান্ডের মধ্যে একটি বিকল্প যা আমাদেরকে কিছু অন্যান্য কমান্ডের ফলাফল অনুসন্ধানের অভিব্যক্তি হিসাবে ব্যবহার করতে দেয়। এটি একটি ফাংশন মধ্যে একটি ফাংশন কল করার মত।
file {}
= কমান্ডটি ভিতরে ডাকা হচ্ছে find
। file
কমান্ড একটি স্ট্রিং, যাতে আপনি একটি ফাইল এর filetype: বলে ফেরৎ। নিয়মিতভাবে, এটা ভালো দেখাবে: file mytextfile.txt
। আমাদের ক্ষেত্রে, আমরা find
কমান্ড দ্বারা যা কিছু ফাইল তাকানো হচ্ছে তা এটি ব্যবহার করতে চাই , তাই আমরা {}
একটি খালি ভেরিয়েবল বা পরামিতি হিসাবে কাজ করতে কোঁকড়া ধনুর্বন্ধনী ব্রেসগুলি রেখেছি । অন্য কথায়, আমরা কেবল সিস্টেমের কাছে ডিরেক্টরিগুলির প্রতিটি ফাইলের জন্য একটি স্ট্রিং আউটপুট দেওয়ার জন্য বলছি।
";"
= এটি প্রয়োজনীয় find
এবং এটি আমাদের -exec
কমান্ডের শেষে বিরামচিহ্নের চিহ্ন । যদি আপনার চালনার প্রয়োজন হয় তবে আরও ব্যাখ্যাের জন্য 'অনুসন্ধান' এর জন্য ম্যানুয়ালটি দেখুন man find
।
| grep 'ASCII'
= |
একটি পাইপ। পাইপ বামে যা আছে তার আউটপুট নেয় এবং ডানদিকে যা থাকে তার ইনপুট হিসাবে এটি ব্যবহার করে। এটি find
কমান্ডের আউটপুট নেয় (একটি স্ট্রিং যা একক ফাইলের ফাইল টাইপ) এবং এটি পরীক্ষা করে এটি স্ট্রিং রয়েছে কিনা তা পরীক্ষা করে 'ASCII'
। যদি এটি হয়, এটি সত্য ফিরে আসে।
এখন, কমান্ডটি find ./
সত্য হলে ডানদিকে ডান দিকের অভিব্যক্তিটি grep
সত্য হবে। ভয়েলা।
find . -type f -exec grep -Il "" {} \;
।