"গ্রেপ-আর ফু *" বনাম "গ্রেপ-আর ফু" oo


10

গ্রেপ-আর ব্যবহার করার সময় আপনি * বা এর মাধ্যমে সমস্ত ফাইলে অনুসন্ধান করতে পারেন। এবং এটি একই জিনিস ফেরত বলে মনে হচ্ছে তবে এটি কি আসলে একই রকম?

যাক আমি "foo" অনুসন্ধান করি, তারপরে আমি লিখতে পারি

grep -r foo *

অথবা

grep -r foo .

কেউ পার্থক্য ব্যাখ্যা করার চেষ্টা করবে। এবং *?

উত্তর:


15

grep -r foo *লুকানো ফাইল বা ডিরেক্টরিতে ম্যাচগুলির সন্ধান করে না, *এটি শেল দ্বারাও প্রসারিত হয় যাতে বর্তমান ডিরেক্টরিতে প্রচুর এন্ট্রি পাওয়া গেলে বা অন্য কোনও ত্রুটি বা দুর্ব্যবহার হলে আপনার পক্ষে খুব দীর্ঘ ত্রুটি হতে পারে the কিছু ফাইল বা ডিরেক্টরিগুলির নাম ড্যাশ অক্ষর দিয়ে শুরু হয়।

অনুরোধের grep -r foo .উপরের ত্রুটিগুলি নেই

আপডেট করা হয়েছে:

আর একটি পার্থক্য: গ্রেপের ম্যান পেজ (@ ফেডোরা 17) বলেছেন:

-r, --recursive
    Read all files under each directory, recursively, following symbolic links only if they
    are on  the  command  line.  ...

আপনি যখন খালি ডিরেক্টরিতে এই কমান্ডটি প্রয়োগ করেন তখন একটি পার্থক্যও উপস্থিত থাকবে:

$ grep -r foo *; echo $?
grep: *: No such file or directory
2
$ grep -r foo .; echo $?
1
$

4

আপনি যদি তারকাচিহ্ন ব্যবহার করেন তবে আপনি যে ডিরেক্টরিগুলির মতো কোনও বিন্দু দিয়ে শুরু হওয়া ডিরেক্টরিগুলিতে ফাইলগুলি মেলতে পারবেন না .cache

হালনাগাদ:

এটি কারণ *হিসাবে কল করার আগে শেল দ্বারা প্রসারিত হয় grep, সুতরাং এটি একক ডিরেক্টরি নামের পরিবর্তে নামের তালিকা (বর্তমানের জন্য .) গ্রহণ করে। শেলটি যেভাবে প্যাটার্নটি প্রসারিত করে তা শেল প্যারামিটারের সাথে কাস্টমাইজ করা যেতে পারে (যেমন nullglob, nocaseglobবা অন্যান্য bashবিকল্পগুলি) বা পরিবেশের ভেরিয়েবল (যেমন LANGবা LC_ALL)

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