উবুন্টু গ্রেপ, ইত্যাদির সন্ধান করুন: "অনুমতি অস্বীকৃত" এবং "এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই" আউটপুট


17

আমি যখন ব্যবহার করি grepবা find, আমি সর্বদা "অনুমতি অস্বীকৃত" এবং "এই জাতীয় কোনও ফাইল বা ডিরেক্টরি" নোটিশগুলিতে বিরক্ত হই, এরকম কিছু:

johndoe@johndoe-desktop:/$ grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn
grep: ./lib/ufw/user6.rules: Permission denied
grep: ./lib/ufw/user.rules: Permission denied
grep: ./lib/init/rw/udev/watch/27: No such file or directory
grep: ./lib/init/rw/udev/watch/26: No such file or directory
grep: ./lib/init/rw/udev/watch/25: No such file or directory

আমি কীভাবে সেগুলি এড়াতে এবং এটি তৈরি করতে পারি যাতে আমি কেবলমাত্র প্রাসঙ্গিক ডেটা দেখতে পারি, যেমন এমন কিছু যা আমি সত্যিই সন্ধান করছি?


উত্তর:


24

গ্রেপের সাহায্যে আপনি -s পতাকাটি নির্দিষ্ট করতে পারবেন যা @ortang যা বলেছে তা বেশ কিছু করে

-s, - কোনও বার্তা অস্তিত্বহীন বা অপঠনযোগ্য ফাইল সম্পর্কে ত্রুটি বার্তাগুলি দমন করে। বহনযোগ্যতা দ্রষ্টব্য: GNU গ্রেপের বিপরীতে, 7 তম সংস্করণ ইউনিক্স গ্রেপ POSIX- এর সাথে সামঞ্জস্য করেনি, কারণ এটির -Q এর অভাব রয়েছে এবং এর -s বিকল্পটি GNU গ্রেপ-এর বিকল্পের মতো আচরণ করেছে। ইউএসজি-স্টাইলের গ্রেপেরও -কির অভাব ছিল তবে এর -s বিকল্পটি জিএনইউ গ্রেপের মতো আচরণ করেছে। পোর্টেবল শেল স্ক্রিপ্টগুলি -Q এবং -s উভয়ই এড়ানো উচিত এবং এর পরিবর্তে স্ট্যান্ডার্ড এবং ত্রুটি আউটপুটটিকে / dev / নালটিতে পুনর্নির্দেশ করা উচিত।

যতদূর আমি জানি @ উত্তরাং উত্তর সবচেয়ে ভাল। কিছুটা এইরকম

find / -name "myfile" -type f -print 2>/dev/null


6

পুনঃনির্দেশিত করার চেষ্টা করুন stderrথেকে /dev/null

johndoe@johndoe-desktop:/$ grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn

5

পুনঃনির্দেশ strerrকরা /dev/null(ওরফে black hole) এর অনুমতি অস্বীকার করেছেন ত্রুটি দমন একটি ভাল উপায়।

তবে খেয়াল রাখবেন যে এই ক্ষতটি কেবল permission deniedবার্তাগুলিকেই দমন করে না তবে সমস্ত ত্রুটি বার্তাকে দমন করে।

আপনি যদি এর বাইরে অন্য কোনও ত্রুটি বার্তা ধরে রাখতে চান permission deniedতবে আপনি এরকম কিছু করতে পারেন -

grep -rnP 'YII_CORE_PATH' ./ 2>&1 | grep -v 'permission denied' > error.log

আপনি যদি এগুলি ধরে রাখতে চান না তবে নিম্নলিখিতটি ঠিক আছে -

grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn

1
আপনি ইতিমধ্যে / dev / নালটিতে পুনঃনির্দেশিত এমন কোনও কিছুকে গ্রেপ করতে পারবেন না।
চোরোবা

@ ছোটোবা উত্তরটি সংশোধন করেছেন। প্রথম পরামর্শের 2>&1পরিবর্তে লেখার 2> /dev/nullঅর্থ।
জয়পাল সিংহ

হ্যাঁ, আপনাকে প্রথমে পুনর্নির্দেশ stderrকরতে হবে stout
অর্টাঙ্গ

3
johndoe@johndoe-desktop:/$ sudo grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn

sudoপ্রশাসনিক সুবিধার্থে কমান্ডটি উন্নত করতে কমান্ডটি ব্যবহার করুন ।


0

গ্রেপ-ভি এর আগে "| &" ব্যবহার করা এটির সাথে ডিল করবে, যেমন

grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn |& grep -v 'permission denied'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.