ফাইল অনুসন্ধানে * এর ব্যবহার


9

লিনাক্স ফাইল অনুসন্ধানের বিষয়ে পড়ার সময় আমি নিম্নলিখিতগুলি পেয়েছি ...

* ওয়াইল্ডকার্ড ব্যবহার করে ফাইলগুলি অনুসন্ধান করতে, * দিয়ে অজানা স্ট্রিংটি প্রতিস্থাপন করুন, উদাহরণস্বরূপ যদি আপনি কেবল মনে করেন যে এক্সটেনশনটি আউট ছিল, ls * .out টাইপ করুন

এবং যখন আমি সিস্টেমে নিম্নলিখিত কমান্ডটি চেষ্টা করেছি (উবুন্টু 14.04 এলটিএস) .. আমি পেয়েছি

anupam@JAZZ:~$ ls  *.bash* 

ls: cannot access  *.bash* : No such file or directory

anupam@JAZZ:~$ ls  .bash*

.bash_history   .bash_logout  .bash_profile  .bashrc

anupam@JAZZ:~$

প্রথম ক্ষেত্রে কেন এটি কোনও ডিরেক্টরি ( *.bash*) দেখায় না এবং পরবর্তী ক্ষেত্রে এটি ফাইলগুলি ( .bash*) দেখায়

আমি এই স্বাদে নতুন, এবং আমার অটোমাটা থিওরি ক্লাস অনুসারে (*) এর অর্থ এপসিলন (খালি) সহ কোনও স্ট্রিংয়ের সমন্বয়, সুতরাং ফলাফল উভয় ক্ষেত্রেই আলাদা কেন ....?

উত্তর:


11

আপনি যখন তা করবেন সম্প্রসারিত হচ্ছে আগে এটি পাস করা হয়েছে । যে যদি আমরা তিনটি ফাইল আছে (অর্থাৎ , এবং ) একটি ডিরেক্টরি আসলে চলমান ।ls **lsabcls *ls a b c

যখন বাশ প্রসারিত করতে পারে না, এটি কাঁচা স্ট্রিংয়ের মধ্য দিয়ে যায় ¹ এজন্য আপনি খুঁজে পাওয়া বার্তা সহ ত্রুটিতে ওয়াইল্ডকার্ডগুলি দেখেন। lsআক্ষরিক নামে পরিচিত একটি ফাইলের তালিকা প্রদর্শন করার চেষ্টা করেছিল *.bash*

তাহলে কেন যে প্রসারিত হয়নি? ওয়েল ডিফল্ট গ্লোববিং (যা এই ওয়াইল্ডকার্ড সম্প্রসারণ বলা হয়) লুকানো ফাইলগুলি ফিরিয়ে দেবে না। আপনি shopt -s dotglobএটি দিয়ে এটি পরিবর্তন করতে পারেন (এটি অবিরত না রাখলে আপনি এটি আটকে না রাখেন .bashrc- এটি কোনও ভাল কারণে ডিফল্টরূপে অক্ষম হতে পারে তাই এটির সাথে সতর্ক থাকুন), এখানে একটি দ্রুত ডেমো রয়েছে:

$ ls  *.bash*
ls: cannot access *.bash*: No such file or directory
$ shopt -s dotglob
$ ls  *.bash*
.bash_aliases  .bash_history  .bash_logout  .bashrc  .bashrc.save

এর ব্যতিক্রমটি আপনি ইতিমধ্যে দেখিয়েছেন - যখন আপনি ইতিমধ্যে স্পষ্টভাবে বলে দিয়েছেন যে ফাইলগুলি কোনও প্যাটার্নের সাথে লুকানো থাকবে .bash*। এটি কেবলমাত্র ডিফল্ট dotglobসেটিংসকে ওভাররাইড করে :

$ shopt -u dotglob  # unset dotglob
$ ls .bash*
.bash_aliases  .bash_history  .bash_logout  .bashrc  .bashrc.save

যাইহোক, এই ছদ্মবেশের পাশাপাশি, আমি আশা করি এটি আপনাকে পৃষ্ঠের নীচে কী চলছে তা বুঝতে সহায়তা করে।


অন্যান্য আছে shoptপতাকার যে পরিবর্তন কিভাবে কাজ globbing: extglob, failglob, globstar, nocaseglobএবং nullglob। তারা এবং অন্যান্য shoptপতাকাগুলির একটি ভেলা বাশ ম্যানুয়ালটির অংশ হিসাবে নথিভুক্ত করা হয় ।

একইভাবে, প্যাটার্ন ম্যাচিংয়ের পৃষ্ঠাটি কিছু ভাল পড়ার জন্য করা উচিত।

Less failglobবা nullglobসেট না করে।


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