হ্যাঁ, আপনি পারেন grep
/dev/sda1
এবং /proc
তবে আপনি সম্ভবত এটি করতে চান না। আরো বিস্তারিত:
হ্যাঁ, আপনি বাইনারি বিষয়বস্তু গ্রেপ চালাতে পারেন /dev/sda1
। তবে, আধুনিক বড় হার্ড ডিস্কগুলির সাথে, এটি খুব দীর্ঘ সময় নিবে এবং ফলাফলটি কার্যকর হবে না বলে সম্ভবত।
হ্যাঁ, আপনি এই বিষয়বস্তুগুলি গ্রেপ করতে পারেন /proc
তবে সচেতন হন যে আপনার কম্পিউটারের মেমরিটি ফাইল হিসাবে সেখানে ম্যাপ করা আছে। গিগা বাইটের র্যাম সহ একটি আধুনিক কম্পিউটারে, এটি গ্রেপ করতে অনেক দিন সময় নেয় এবং, ফলস্বরূপ কার্যকর হওয়ার সম্ভাবনা নেই।
ব্যতিক্রম হিসাবে, আপনি যদি কোনও ক্ষতিগ্রস্থ ফাইল সিস্টেমের সাথে একটি হার্ড ডিস্কে ডেটা খুঁজছেন, তবে আপনি grep something /dev/sda1
ফাইলটির ডেটা পুনরুদ্ধারের প্রচেষ্টা হিসাবে চালাতে পারেন।
অন্যান্য সমস্যাযুক্ত ফাইল /dev
হার্ড ডিস্ক এবং হার্ড ডিস্কের অধীনে পার্টিশনগুলি /dev
যদি কারও পর্যাপ্ত ধৈর্য থাকে তবে গ্রেপ করা যেতে পারে। অন্যান্য ফাইল (টুপি টিপ: ব্যবহারকারী 2313067 ) তবে সমস্যার কারণ হতে পারে:
/dev/zero
অসীম দৈর্ঘ্যের একটি ফাইল। ভাগ্যক্রমে, grep
(কমপক্ষে জিএনইউ সংস্করণ) এড়াতে যথেষ্ট স্মার্ট:
$ grep something /dev/zero
grep: input is too large to count
/dev/random
এবং /dev/urandom
অসীম হয়। কমান্ড grep something /dev/random
চিরকালের জন্য চলবে যদি না grep
থামার সিগন্যাল দেওয়া হয়।
/dev/urandom
পাসওয়ার্ড তৈরি করার সময় গ্রেপ করা কার্যকর হতে পারে । উদাহরণস্বরূপ, পাঁচটি এলোমেলিক অক্ষর পেতে:
$ grep --text -o '[[:alnum:]]' /dev/urandom | head -c 10
G
4
n
X
2
এটি অসীম নয় কারণ এটি পর্যাপ্ত অক্ষর পাওয়ার পরে, head
গ্রেপকে বন্ধ করার জন্য পাইপটি বন্ধ করে দেয়।
অসীম লুপস
"... লিঙ্কগুলি ... যখন ট্র্যাভার করা হয় তখন অসীম লুপ তৈরি করুন ..."
গ্রেপ (কমপক্ষে জিএনইউ সংস্করণ) এটি না করার জন্য যথেষ্ট স্মার্ট। আসুন দুটি ক্ষেত্রে বিবেচনা করা যাক:
সঙ্গে -r
বিকল্প,, grep নেই সিম্বলিক লিঙ্ক অনুসরণ যদি না তারা স্পষ্টভাবে কমান্ড লাইন নির্দিষ্ট আছে। অতএব, অসীম লুপগুলি সম্ভব নয়।
সঙ্গে -R
বিকল্প,, grep করে সিম্বলিক লিঙ্ক অনুসরণ তা সবই তাদের পরীক্ষা এবং একটি লুপ ধরা করতে রাজি। বর্ণনা করা:
$ mkdir a
$ ln -s ../ a/b
$ grep -R something .
grep: warning: ./a/b: recursive directory loop
সমস্যাযুক্ত ডিরেক্টরিগুলি বাদ দিয়ে grep -r
একটি সরু হিসাবে, grep
নির্দিষ্ট ফাইল বা ডিরেক্টরি অনুসন্ধান থেকে গ্রেপ বন্ধ করার জন্য একটি সীমিত সুবিধা সরবরাহ করে। উদাহরণস্বরূপ, যদি আপনি বাদ আসতে পারে যা সমস্তই ডিরেক্টরি নামে proc
, sys
এবং dev
সঙ্গে, grep এর রিকার্সিভ অনুসন্ধান থেকে:
grep --exclude-dir proc --exclude-dir sys --exclude-dir dev -r something /
অন্যথা, আমরা অগ্রাহ্য করতে proc
, sys
এবং dev
ব্যাশ এর বর্ধিত globs ব্যবহার করছে:
shopt -s extglob
grep -r something /!(proc|sys|dev)
grep
কোনও ফাইল সন্ধান/proc
করে ম্যাপড মেমোরির দিকে নিয়ে যায়, এমন কি ঘটতে পারে যাgrep
কোনও ইওএফকে (এলোমেলো) স্মৃতিতে আঘাত করে এবং নিম্নলিখিত ডেটাটিকে একটি হিসাবে ব্যাখ্যা করে নতুন ফাইলের নাম অনুসন্ধান করবেন? আমিgrep
উত্স কোড পড়া শুরু করেছি , তবে আমার ধারণা আমি এতে খুব বেশি দেখতে পাচ্ছি না।