বাশ-এ, ওয়াইল্ডকার্ড সম্প্রসারণগুলি কি যথাযথভাবে নিশ্চিত হতে পারে?


53

বাশ-এ কোনও ওয়াইল্ডকার্ডের বিস্তৃতি বর্ণানুক্রমিকভাবে গ্যারান্টিযুক্ত? আমি একটি বড় ফাইলকে 10 এমবি টুকরোতে বিভক্ত করতে বাধ্য হচ্ছি যাতে সেগুলি আমার মার্চুরিয়াল সংগ্রহস্থলের দ্বারা গ্রহণযোগ্য হতে পারে।

সুতরাং আমি ভাবছিলাম আমি ব্যবহার করতে পারি:

split -b 10485760 Big.file BigFilePiece.

এবং তারপরে:

cat BigFile | bigFileProcessor

আমি কাজ করতে পারে:

cat BigFilePiece.* | bigFileProcessor

তার জায়গায়।

যাইহোক, আমি কোথাও খুঁজে পাইনি যে গ্যারান্টিযুক্ত ছিল যে নক্ষত্রের বিস্তৃতি (ওরফে ওয়াইল্ডকার্ড, ওরফে *) সর্বদা বর্ণানুক্রমিকভাবে থাকবে যাতে এর .aaআগে এসেছিল .ab(টাইমস্ট্যাম্প ক্রম বা এর মতো কিছু হওয়ার বিপরীতে)।

এছাড়াও, আমার পরিকল্পনার কোনও ত্রুটি আছে? catএকসাথে ফাইলটি নির্ধারণের জন্য পারফরম্যান্স ব্যয় কতটা দুর্দান্ত ?


4
নিশ্চিতভাবেই আপনি ভুল পদ্ধতি গ্রহণ করছেন। যদি অ্যাডমিন আপনার ভাণ্ডারগুলিতে থাকা ফাইলগুলির আকারের সীমাবদ্ধতা রাখে, তবে আপনার তার সাথে কথা বলা উচিত। সম্প্রসারণ সম্পর্কে কথা বলছি - আমি সর্বদা দেখেছি যে প্রসারটি বর্ণানুক্রমিক।
মিরেসিয়া ভুটকোভিচি

1
আপনার sortযদি কোনও অতিরিক্ত অর্ডার ম্যানিপুলেশন প্রয়োজন হয় তবে আপনি সর্বদা পাইপ করতে পারেন ।
ওয়ার্নার

2
দয়া করে নোট করুন যে মার্চুরিয়াল আপনার যে পরিমাণ র‍্যাম রয়েছে তার দ্বারা সীমাবদ্ধ যে কোনও আকারের ফাইল পরিচালনা করতে পারে। আপনি যদি একটি বড় ফাইল যুক্ত করেন তবে আপনি একটি সতর্কতা পেয়েছেন, যেহেতু মার্কুরিয়াল ধরে নিয়েছে যে এটি ফাইলটিকে মেমোরিতে রাখতে পারে। মার্জগুলির জন্য, মার্চুরিয়ালকে মেমরিতে দুটি ফাইল রাখা দরকার। স্বল্প পরিমাণে র‍্যামযুক্ত মেশিনগুলির ফলে ফাইলটি পরীক্ষা করতে সমস্যা হতে পারে। আমি কেবল এটি পরীক্ষা করেছি এবং hg commitএকটি Nএমবি ফাইলে প্রায় 3 * Nএমবি র‌্যামের hg updateপ্রয়োজন হয় এবং প্রায় 2 * Nএমবি র‌্যামের প্রয়োজন হয়। এটি লিনাক্সে মার্চুরিয়াল 1.5 সাথে রয়েছে।
মার্টিন গিজলার

উত্তর:


67

হ্যাঁ, গ্লোব্বিং বিস্তৃতি বর্ণানুক্রমিক।

বাশ manপৃষ্ঠা থেকে:

পথের নাম সম্প্রসারণ

শব্দ বিভাজন পর, যদি না -fবিকল্প সেট করা হয়েছে, ব্যাশ অক্ষরের জন্য প্রতিটি শব্দ স্ক্যান *, ?এবং [। যদি এই চরিত্রগুলির মধ্যে একটি উপস্থিত হয়, তবে শব্দটি একটি প্যাটার্ন হিসাবে বিবেচনা করা হবে, এবং প্যাটার্নের সাথে মিলে যাওয়া ফাইলের নামের সাথে বর্ণমালা অনুসারে বাছাই করা তালিকাটি প্রতিস্থাপন করা হবে।


@ ডেনিস উইলিয়ামসন, যদি কোনও ব্যবহারকারীর আলাদা আলাদা ভাষা সেট থাকে তবে কি এটি এখনও সত্য হবে?
জোরেডেচি

5
@ জোরেদাচি: এটি আসলে পসিক্স দ্বারা নির্দিষ্ট করা হয়েছে: ওপেনগ্রুপ.আর.অনলাইনপবস / 007908775 / xsh / glob.html " পথের নামগুলি LC_COLLATE বিভাগের বর্তমান সেটিং দ্বারা নির্ধারিত অনুসারে সাজানো হয়েছে, এক্সবিডি স্পেসিফিকেশন দেখুন, এলসি_কোলেট [ ওপেনগ্রুপ.org / অনলাইনপাবস / 007908775 / এক্সবিডি /… "এবং এজন্য আপনার ls -l [[:lower:]]পরিবর্তে আপনার মতো জিনিস করা উচিত ls -l [a-z]
ডেনিস উইলিয়ামসন

দ্রষ্টব্য যে আদেশটি বর্ণানুক্রমিক তাই বিগফিলাপিস .10 বিগফাইপিস 2 এর আগে আসবে
কেন

@ ডেনিসউইলিয়ামসন - কেন দুই জোড়া বর্গাকার বন্ধনী? একজন আমার কাছে ঠিক একই রকম কাজ করছে বলে মনে হচ্ছে।
আর্টঅফ ওয়ারফেয়ার

2
@ArtOfWarfare: এই চেষ্টা করুন: mkdir lctest; cd lctest; touch w; touch z; ls -l [:lower:]; echo =====; ls -l [[:lower:]]। "Z" ফাইলটি কেবল দ্বিতীয় দ্বারা তালিকাভুক্ত করা হয়েছে lsকারণ এটি লোয়ার কেস সিঙ্গল-লেটার ফাইলের নাম জিজ্ঞাসা করছে। প্রথমটি ls- বাইরের স্কোয়ার বন্ধনী ব্যতীত একটি - অক্ষরগুলির তালিকা থেকে একক-অক্ষর ফাইলের নাম জিজ্ঞাসা করছে ":", "এল", "ও", "ডাব্লু", "ই", এবং "আর"। উভয় ক্ষেত্রেই বহিরাগত বর্গাকার বন্ধনী একটি বন্ধনী এক্সপ্রেশন সীমানা যা অক্ষর এবং শ্রেণি তালিকাভুক্ত করে। এর ক্ষেত্রে [[:lower:]], অভ্যন্তরের বর্গাকার বন্ধনী, কলোন এবং শব্দের একটি অক্ষর শ্রেণীর নাম। ...
ডেনিস উইলিয়ামসন

4

এটি এর জন্য নথিভুক্ত আচরণ bashযাতে আপনি এটি আপনার স্ক্রিপ্টগুলিতে নির্ভর করতে পারেন। এটি খুব দীর্ঘ সময়ের জন্য অন্যান্য বোর্নের সামঞ্জস্যপূর্ণ শেলগুলির ক্ষেত্রেও সত্য ... যদিও কেস ফোল্ডিং বা অ-অক্ষরীয় অক্ষর সম্পর্কিত কোনও ক্ষেত্রেও মামলা থাকতে পারে।

(ফলাফলের তালিকাটি bashপ্রায় "এএসসিআইআই-বেটিকাল" অর্ডারে থাকবে --- ছোট এবং উচ্চতর অক্ষরগুলি বাদে এমনভাবে জড়িত হবে যেন কোনও মামলার পার্থক্য নেই তবে তাদের ছোট ছোট অক্ষরের সাথে বড় হাতের অক্ষরের আগে জড়িত থাকে All সমস্ত অ -ভাষাবিজ্ঞানীদের ASCII এ প্রদর্শিত হওয়ার সাথে একই ক্রমে কোলেট করা উচিত)।

অন্যরা যেমন উল্লেখ করেছে যে এটি আপনার ভাষা সম্পর্কিত পরিবেশ সেটিংস দ্বারা উদ্বেগিত হতে পারে: সাধারণত ল্যাং এবং আরও নির্দিষ্টভাবে LC_COLLATE। কমান্ড যে অধীনে উল্লিখিত glob সম্প্রসারণ ক্রম উপর নির্ভর করে চালানোর জন্য সবচেয়ে নিরাপদ হতে পারে envকমান্ড (ব্যবহার পরিবেশ পরিষ্কার -iবা -uউপযুক্ত) অথবা পাইপ মাধ্যমে ফলাফল sortশক্তসমর্থ সিকোয়েন্সিং নিশ্চিত করতে হবে।


4
এটি প্রদর্শিত হয় যে বাছাই প্রক্রিয়ায় সমস্ত অ-অক্ষরসংখ্যার উপেক্ষা করা হয়। সুতরাং "=", "_", "~" কোনও ফাইল জোর করে তালিকা শুরু করতে বা শেষ করতে (যথাক্রমে) ব্যবহার করা যাবে না।
ওথিয়াস

3

বিশ্বব্যাপী বিস্তৃতি বর্ণমালা অনুসারে বাছাই করা হলেও তারা শেলের ল্যাঙ্গেজ সেটিংও মান্য করে।

আপনি যদি এটি পোর্টেবল হতে চান তবে আপনার স্ক্রিপ্টে এটি "সি" তে সেট করার বিষয়টি নিশ্চিত করুন।

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