কেন গ্রেপ ডিফল্টরূপে বাইনারি ফাইলগুলি উপেক্ষা করে না?


94

পতাকাটির জন্য ম্যানপেজটি নীচে grepবর্ণিত -I:

-I      Ignore binary files.  This option is equivalent to 
        --binary-file=without-match option.

এটি বাইনারি ফাইল সম্পর্কে এটিও বলে:

 --binary-files=value Controls searching and printing of binary files.
         Options are binary, the default: search binary files but do not print
         them; without-match: do not search binary files; and text: treat all
         files as text.

আমি এমন দৃশ্যের কথা ভাবতে পারি না যেখানে আমি বাইনারি ফাইলগুলির ম্যাচগুলির বিষয়ে যত্নশীল। যদি এ জাতীয় দৃশ্য বিদ্যমান থাকে, অবশ্যই এটি অবশ্যই আদর্শের চেয়ে ব্যতিক্রম হবে। কেন grepএই পতাকাটি সেট করার জন্য ডিফল্টরূপে বাইনারি ফাইলগুলি উপেক্ষা করা হচ্ছে না ?


4
আপনি ভেরিয়েবলটি GREP_OPTIONSআপনার পছন্দসই সেটিংসে সেট করতে পারেন , তারপরে আপনাকে অনেকগুলি কমান্ড লাইন সুইচ ব্যবহার করতে হবে না।
মার্কো

2
অন্যান্য কমান্ডগুলির জন্য একটি নোট যা এইরকম চলককে সমর্থন করে না: আপনি নিজের .(ba|z|foo)shrc': উপন্যাস গ্রেপ = "গ্রেপ-আই" an এ কোনও কোনও নাম নির্ধারণ করে ডিফল্ট বিকল্পগুলি সেট করতে পারেন `
এরিক

1
এটি আসলে খুব দরকারী হতে পারে। উদাহরণস্বরূপ, আমি কোনও প্রকল্পের unityক্য সংস্করণ অনুসন্ধান করছি এবং কোন ফাইলটি এটি রাখা হয়েছে তা মনে করতে পারছি না I আমি সংস্করণটির ফর্ম্যাটটি অনুসন্ধান করেছি এবং এটি কিছু বাইনারি ফাইলের সাথে মিলছে যা মেলে। এটি সংস্করণ 5-এর পূর্ববর্তী হিসাবে দেখা গেছে, সংস্করণটি কেবল বাইনারি ফাইলে উপস্থিত ছিল, সুতরাং বাইনারি ম্যাচটি না থাকলে আমি সম্ভবত এটি মিস করতাম।
সুইভেন হানসেন

এফওয়াইআই একটি সরঞ্জাম এসি আছে যা " গ্রেপের চেয়ে ভাল" ধরণের। আক বাইনারি ফাইলগুলি অনুসন্ধান করে না। ডেবিয়ান ভাষায়, এটি "ack-grep" নামে আসে।
টিকা কাজুরা

উত্তর:


91

গ্রেপ যে সমস্ত কিছু বাইনারি ফাইল বলে মনে করে তা আসলে বাইনারি ফাইল নয়। উদাহরণস্বরূপ পুতুলের লগগুলিতে তাদের মধ্যে আনসির রঙ কোডিং থাকে, যা গ্রেপকে তারা বাইনারি মনে করে inary আমি এখনও / var / লগের মাধ্যমে গ্রেপিং করছি তবে আমি তাদের অনুসন্ধান করতে চাই।


4
একই হিসাবে পিডিএফ ফাইলের জন্য যায়।
জোসেফ আর

12
+ historতিহাসিকভাবে গ্রেপ এটি করতে পারে না, সুতরাং কেবলমাত্র সামঞ্জস্যের জন্য, ডিফল্টটিকে সর্ব-সমেত থাকতে হবে।
অলিভিয়ার ডুলাক

2
@ অলিভিয়ারডুলাক এটি বোধগম্য হয়, অন্যথায় বাইনারি ফাইলগুলি উপেক্ষা করা ডিফল্ট হওয়া উচিত।
দাগাং

5

grepবাইনারি ফাইলগুলি অনুসন্ধান করার ক্ষমতাটিও দরকারী যখন আমি একটি প্রোগ্রাম সংকলন করি এবং লিঙ্কার ( ld) কোনও ফাংশন সন্ধান না করার বিষয়ে অভিযোগ করে। আমি একটি কমান্ড ব্যবহার করতে পারেন

, grep FUNCTION_NAME / lib / অনুপস্থিত liberal এর সংক্ষিপ্ত রূপ *

এটিতে থাকা লাইব্রেরিটি সন্ধান করতে। (গ্রন্থাগারগুলি বাইনারি ফাইল।


সেক্ষেত্রে, আপনি বরং ব্যবহার করতে চাই grep -l function_name /lib/lib*বা nm -Do /lib/lib* | grep function_nameবা ldconfig -p | grep -o '/.*/lib.*' | xargs nm -Do | grep function_nameযদিও।
স্টাফেন চেজেলাস

ভাল, grep some_function /lib/*সংক্ষিপ্ত এবং সাধারণত সঠিক উত্তর দেয় - আমি যে লাইব্রেরির সন্ধান করছি name তবে হ্যাঁ, কখনও কখনও আপনার মতো আরও পরিশীলিত পদ্ধতিরও প্রয়োজন হয়।
ড্যানিয়েল Frużyński
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.