ডিফল্টরূপে গ্রেপ-আর কোথায় অনুসন্ধান করবে?


16

আমি যদি কোনও পথ নির্দিষ্ট না করে গ্রিপ ব্যবহার করে অনুসন্ধান করি তবে এটি যেমন grep -r 'mytext'অসীম সময় নেয়। এদিকে আমি যদি নির্দিষ্ট পথের সাথে অনুসন্ধান করি তবে grep -r 'mytext' .তা আমার তাত্ক্ষণিকভাবে তাত্ক্ষণিকভাবে সন্ধান করে। সুতরাং, আমি কৌতুহলী, প্রথম আকারে, কোন ডিরেক্টরিতে গ্রেপ অনুসন্ধান করে?

আপডেট: গ্রেপ সংস্করণ: গ্রেপ (জিএনইউ গ্রেপ) ২.১০


3
দূরে টাইপ করার চেষ্টা করুন, foomytextbarচালানোর পরে লিখুন (এন্টার পরে) grep -r 'mytext'
sr_

2
সম্ভবত আপনি কি রাজা নির্দিষ্ট করা উচিত grep। জিএনইউ দিয়ে grepআমি লিনাক্সে ব্যবহার করি grep -r 'mytext'এবং grep -r 'mytext' .একই জিনিসটি করি: বর্তমান ডিরেক্টরি থেকে পুনরাবৃত্তভাবে অনুসন্ধান শুরু করুন। যখন -rস্যুইচটি ব্যবহৃত হয় জিএনইউ এসটিডিএন অনুসন্ধান করে grep না
manatwork

2
আহ। আমি grep২.১২: পেস্টবিন. com/ L4my26QS দিয়ে পরীক্ষা করেছি এর মধ্যে আমি এই সংস্করণ ২.১১ (2012-03-02) সম্পর্কিত NEWS ফাইলে পেয়েছি: "যদি কোনও ফাইল অপারেন্ড না দেওয়া হয় এবং একটি কমান্ড-লাইন-আর বা সমমানের বিকল্প দেওয়া হয় , গ্রেপ এখন কর্মক্ষম ডিরেক্টরিটি অনুসন্ধান করে Former পূর্বে গ্রেপ -আরটিকে উপেক্ষা করে এবং স্ট্যান্ডার্ড ইনপুটটি অনার্সিকভাবে অনুসন্ধান করেছিল G জিআরইপি_অপশনগুলিতে পাওয়া একটি -আর এই নতুন প্রভাব ফেলবে না। "
manatwork

3
GNU গ্রেপ সম্প্রতি -r আর্গুমেন্টের সাথে আচরণ পরিবর্তন করেছে ( প্রতিশ্রুতি দেখুন )। সুতরাং আরও নতুন গ্রেপের সাথে "গ্রেপ-পিয়ার পেটারন" এসটিডিএন নয় বরং বর্তমান ডিরেক্টরি অনুসন্ধান করবে।
hluk

2
@ মাইকেল, আমি আমার প্রশ্নটি গ্রেপ সংস্করণ দিয়ে আপডেট করেছি। দেখে মনে হচ্ছে যে আমি যে উত্তরটি সঠিক বলে ধরেছি তা সত্যই সঠিক, কারণ আমি একটি 'পুরানো' গ্রেপ ব্যবহার করছি। সুতরাং আমি কোনও -r নির্দিষ্ট করে বা না নির্দিষ্ট করি না, যদি কোনও ডিরেক্টরি সরবরাহ না করা হয় তবে এটি STDIN এ অনুসন্ধান করে। বিটিডব্লিউ, এই তদন্তের জন্য ধন্যবাদ, এখন, আমি ভবিষ্যতে

উত্তর:


24

আসলে এটি কোথাও অনুসন্ধান করে না। এটি স্ট্যান্ডার্ড ইনপুট থেকে ইনপুটটির জন্য অপেক্ষা করে।

এটা চেষ্টা কর:

beast:~ viroos$ grep foo

আপনি যখন "foo" ধারণকারী লাইনটি টাইপ করেন এবং এই লাইনটি প্রবেশ করান তখন পুনরাবৃত্তি হবে অন্যথায় কার্সারটি নতুন লাইনে স্থানান্তরিত হবে তবে গ্রেপ কিছুই প্রিন্ট করবে না।


6
আমি উপরে grep -r PATTERNজিএনইউর নতুন সংস্করণ দিয়ে মন্তব্য করেছি গ্রেপ স্ট্যান্ডার্ড ইনপুট পড়বে না তবে বর্তমান ডিরেক্টরিতে প্যাটার্ন অনুসন্ধান করবে ( প্রতিশ্রুতি দেখুন )। আপনি পরিবর্তন নির্দিষ্ট করার সময় আপনি সম্ভবত স্ট্যান্ডার্ড ইনপুটটি অনুসন্ধান করতে চান না বলে এই পরিবর্তনটি বোধগম্য হয় -r
hluk

আমি আমার গ্রেপ সংস্করণটি পরীক্ষা করেছি, এটি 2.10, সুতরাং এই উত্তরটি পুরোপুরি প্রাসঙ্গিক। বিটিডব্লিউ, এখন, আমি জানি গ্রেপের নতুন সংস্করণগুলি থেকে কী অপেক্ষা করতে হবে ll

3

ম্যাকিকের পূর্ববর্তী উত্তর হিসাবে ঠিক বলেছেন:

আসলে এটি কোথাও অনুসন্ধান করে না। এটি স্ট্যান্ডার্ড ইনপুট থেকে ইনপুটটির জন্য অপেক্ষা করে।

তবে আপনি যদি ইতিমধ্যে চলমান প্রোগ্রামের স্টিডিনে লিখতে পারেন তবে আপনার যদি 0 তম প্রথম বর্ণনাকারীর মধ্যে তথ্য পাইপ করে / প্রোক উপলব্ধ থাকে:

এক টার্মিনাল রান

grep "hello"

এবং এটি অনির্দিষ্টকালের জন্য অপেক্ষা করুন ... অন্য টার্মিনালে এটি টাইপ করুন:

echo "hello $USER" > /proc/`pgrep grep`/fd/0

প্রথম টার্মিনাল প্রিন্ট হ্যালো এবং আপনার ব্যবহারকারী নাম দেখুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.