Zsh ওভার বাশ ব্যবহার করার কোনও কারণ আছে কি? [বন্ধ]


33

কেউ কেন zsh এর পরিবর্তে বাশ চালাতে চায় সে সম্পর্কে আমি আগ্রহী। আমার অর্থ zsh পুরোপুরি পিছনের দিকে সামঞ্জস্যপূর্ণ ash আমাকে ভুল করবেন না: আমি বাশ বা কিছুই অপছন্দ করি না। Zsh এর মাধ্যমে এটি ব্যবহার করার কোনও সুবিধা আছে কিনা তা আমি খাঁটিভাবে জানতে চাই।

সুতরাং zsh ওভার উপর ব্যাশ ব্যবহার করার কি কারণ আছে?


2
কেবল এটি উল্লেখ করতে চেয়েছিলেন যে জেডএসএইচ পুরোপুরি পিছনের দিকে BASH এর সাথে সামঞ্জস্যপূর্ণ নয়। জেডএসএইচে, অ্যারে ইনডেক্সিং 1 থেকে শুরু হয় - বেসে, অ্যারে ইনডেক্সিং 0 থেকে শুরু হয় There এছাড়াও অন্যান্য পার্থক্যও রয়েছে, তবে আমি এটিকে নির্দেশ করতে চেয়েছিলাম।
চার্লস অ্যাডিস

উত্তর:


29

দুটি কারণ মাথায় আসে:

প্রথম - এটি ব্যবহারিকভাবে সর্বত্র পাওয়া যায়। আমার বেশ কয়েকটি লিনাক্স সিস্টেম রয়েছে (এই ক্ষেত্রে CentOS 4.x) যা zsh ইনস্টলড নেই। একইভাবে আমাকে সোলারিস ২.6 এবং তার বেশি, এইচপি-ইউএক্স 10 এবং তার বেশি এবং এআইএক্সের অনুরূপভাবে ভীতিকর সংস্করণগুলিতে স্পর্শ করতে হবে। সুতরাং আমি এই কম্পিউটারগুলিতে বাশ ব্যবহার করব, যা আমি করি কারণ আমি এক মাস ধরে কয়েক হাজার ব্যক্তিগত না হলেও কয়েক হাজার ব্যক্তিকে স্পর্শ করি এবং আপনার ইন্টারফেসে ধারাবাহিকতা পেতে আপনি শেষ অবধি ব্যবহার করে আটকে যাচ্ছেন অক্ষমতা।

দ্বিতীয় - এটি ব্যবহারিকভাবে সর্বত্র পাওয়া যায়। এর অর্থ আমি বাশ শেল স্ক্রিপ্ট লিখতে পারি এবং 99% নিশ্চিত হতে পারি যে এটি অন্য কোথাও স্থানান্তরিত হলে এটি কাজ করবে।

হ্যাঁ, এই কারণগুলি অতিমাত্রায় একই, তবে তাদের পিছনে যুক্তিগুলি ভিন্ন।


2
আমি স্মরণ করছি যে এইচপিউক্সে ksh88 / ksh93 রয়েছে, আমাদের কখনই ব্যাশ ইনস্টল করার অ্যাক্সেস ছিল না।
জ্লেমিনি

24

বাশ সাধারণত প্রতিটি সিস্টেমের সাথে আসে, zsh হয় না। আমি zsh পছন্দ করি তবে এর কারণে আমি ইন্টারেক্টিভ ব্যবহারের জন্য zsh ব্যবহার করি তবে আমার সমস্ত স্ক্রিপ্টিংয়ের জন্য বাশ

আমি এটি সমস্ত কিছু সহজ রাখি বলে মনে করি, যেমন আমি যখন ব্যাশ সামঞ্জস্যপূর্ণ যাই হোক না কেন শপিং করি (SH_WORD_SPLIT সেটআপ করুন), তখনও আমি সূক্ষ্ম পার্থক্যের মধ্যে চলে যাই।


3
আপনি যে প্রতিটি জিএনইউ / লিনাক্স সিস্টেমটি বোঝাতে চান এটি কি হবে?
andol

2
ঠিক আছে আমি এটি ওএস / এক্স এবং বিএসডি নিয়ে এসেছি, অন্যান্য * নিক্সের সাথে আমার খুব বেশি অভিজ্ঞতা নেই, তাদের (সাম্প্রতিক সংস্করণগুলি) সাধারণত বাশ হয় না?
কাইল ব্র্যান্ড্ট

1
পুরানো সোলারিস সংস্করণগুলিতে বাশ অন্তর্ভুক্ত ছিল না; স্ক্রিপ্টিংয়ের শেল হওয়ায় আমি সাধারণত বোর্নের উপর নির্ভর করতে হত এটি কিছু সময়ের জন্য ঘটেনি, তবে আপনি এখনও কিছু বড় উদ্যোগে এটি চালাতে পারেন।
ব্যবহারকারী5336

3
অবশ্যই আলাদা বিএসডি হওয়া উচিত s কমপক্ষে ওপেনবিএসডি এবং ফ্রিবিএসডি-তে আপনাকে পোর্ট / প্যাকেজগুলি থেকে পৃথকভাবে ইনস্টল করতে হবে।
andol

andol: এগুলিই আমি ব্যবহার করতাম .. আমাকে অবশ্যই ভুলভাবে মনে রাখতে হবে, বা আমি এটি করেছি এবং মনে রাখবেন না।
কাইল ব্র্যান্ড্ট

13

zsh সম্পূর্ণরূপে বাশ সামঞ্জস্যপূর্ণ নয়। বিভিন্ন পার্থক্য আছে। নবতর zsh বাশের সাথে আরও সুসংগত (= ~ সমর্থিত, এক্সিকিউটে এখন অতিরিক্ত পতাকা বিকল্প রয়েছে, ইত্যাদি) তবে সম্পূর্ণ সামঞ্জস্যতা লক্ষ্য নয়, এমনকি "অনুকরণকারী" এর অধীনেও নয়।

উদাহরণস্বরূপ, বাশ সাবস্ট্রিংটি হ'ল। {Foo: অফসেট: লেন} তবে zsh এ এটি $ ফু [শুরু, শেষ] এবং এটি কেবল একটি সহজ উদাহরণ।

zsh একটি tcsh এবং ksh প্রভাবিত শেল যা অনেকগুলি নিজস্ব উপায়ে করে; POSIX সামঞ্জস্যতা সুস্পষ্টভাবে লক্ষ্য নয়, তবে বিকাশকারীরা প্যাচগুলিতে প্রতিক্রিয়াশীল যা বিকল্পগুলি যোগ করে / আচরণকে অনুকরণ করে যা জিনিসগুলি পক্সিকের কাছাকাছি পায়। তবে আপনি যখন সত্যিকার অর্থে শেলের শক্তিতে প্রবেশ করতে শুরু করলে আপনি কেবল লেখার জন্য লিখিত স্ক্রিপ্ট তৈরি করা শুরু করেন, এমনকি বাশের চেয়েও।

বাশ হ'ল পসিক্স শ্ + কেশ + পেনডেন্টিসিজম, বর্তমানে কিছু বৈশিষ্ট্য zsh থেকে অনুলিপি করা হয়েছে। এটিতে কেবল লেখার জন্য স্ক্রিপ্ট রয়েছে তবে এতে কম শক্তিশালী অপারেটর রয়েছে, আপনি zsh এর সংক্ষিপ্ততাটি ব্যবহার করবেন না এবং জিনিসগুলি আরও পঠনযোগ্য হতে পারে (হোয়াইটস্পেস বিভাজন এড়াতে সমস্ত উদ্ধৃতি ব্যতীত, বোকা ksh- স্টাইল $ অ্যারের অর্থ প্রথমে -অ্যারেমেট-অফ-অ্যারে, অ্যারে-এর সমস্ত উপাদান নয়)।

উভয় শেলের শক্তির পুরো সদ্ব্যবহার করে এমন স্ক্রিপ্টগুলি লেখাই বুদ্ধিমানের কাজ নয়, যদি না আপনি কোনও আবদ্ধ পরিবেশে থাকেন (উদাহরণস্বরূপ, সিস্টেম আরসি স্ক্রিপ্টগুলি লেখার ক্ষেত্রে, যেখানে কিছু এফএস মাউন্ট করা যায় না ইত্যাদি)। আদর্শ হিসাবে, পার্ল / পাইথন / রুবি / যে কোনও বড় কিছুর জন্য যা আপনার প্রয়োজন তা বোঝাতে বর্নেতে না ব্যবহার করুন, যদি আপনি চান অন্যরা এটি বজায় রাখতে সক্ষম হন। ইন্টারেক্টিভ শেল (ট্যাব সমাপ্তির প্রোগ্রামিং ইত্যাদি) সম্পর্কিত জিনিসের জন্য শেল স্টাফ রাখুন।

আমি zsh এর উপর ব্যাশ ব্যবহার করব না। আমি সাধারণ স্ক্রিপ্টগুলির জন্য zsh এর ওপরে শ ব্যবহার করব, বা এমন ভাষাতে স্যুইচ করব যেখানে সহকারী অ্যারেগুলিতে শালীন অপারেটর রয়েছে (zsh এর বিপরীতে, যেখানে তারা আবার 'সংক্ষিপ্ত')। আমি পারে যদি আমি যে এক সামান্য বৈশিষ্ট্য একটি বিদ্যমান প্রমাণিত পরিশ্রমী স্ক্রিপ্ট প্রসারিত করতে এবং এখনই এটিকে পুনর্লিখন সময় নেই প্রয়োজন ব্যাশ করার জন্য একটি SH স্ক্রিপ্ট স্যুইচ করুন।


6
বিশেষ দ্রষ্টব্য: $ {foo বিন্যাস: অফসেট: lên} হয় এখন, zsh সমর্থিত সামঞ্জস্যের জন্য।
ফিল পি

6

আমার পরামর্শ: আপনি যদি নিরঙ্কুশ বহনযোগ্যতার জন্য যাচ্ছেন তবে বোর্ন শেল বিধি ব্যবহার করে লিখুন, এমনকি কর্ন শেল এক্সটেনশানগুলি নিয়েও বিরক্ত করবেন না। যেমনটি উল্লেখ করা হয়েছে, এগুলি আশেপাশে কিছু পুরানো "বড় বাক্সগুলি" যেগুলিতে জিএনইউ শেলগুলি নেই।

বাশ ইতিমধ্যে "খুব বেশি" করে। আমার কর্মক্ষেত্রে এক বন্ধু আছে যিনি zsh পছন্দ করেন তবে আমি জানি না এটি ঠিক কী করে।

যাইহোক, হয় বোর্ন (বা "আবার বোর্ন") শেলটির জন্য লিখুন, অথবা বিকল্পভাবে, আপনি যদি কয়েকটি নির্দিষ্ট বাক্সের জন্য একটি কাস্টম স্ক্রিপ্ট করছেন তবে "শেল হেল্ক" পুরোপুরি এড়িয়ে যান এবং কেবল পার্ল বা পাইথন ব্যবহার করে লিখুন (বা যাই হোক না কেন আপনার স্থানীয়ভাবে ইনস্টল করা দোভাষী হ'ল)।


5

উপরে বর্ণিত পোর্টেবিলিটি কারণ ছাড়াও, অন্য একটি হতে পারে বাশ এখনও বৈশিষ্ট্যগুলি যুক্ত করছে।

উদাহরণস্বরূপ bash v4.x + প্রবর্তিত:

  • পুনরাবৃত্তাকার গ্লোববিং:

    rm -f ** / *। লগ

  • autocd:

    "সিডি / টিএমপি" এর পরিবর্তে "/ টিএমপি" টাইপ করুন


2
বাশ কীভাবে zsh থেকে বৈশিষ্ট্যগুলি অনুলিপি করা বাশ ব্যবহারের কারণ?
qqx

5

যাইহোক, আপনাকে এখানে বহুবার বলা হয়েছে যে ব্যাশ ব্যবহারিকভাবে সব জায়গায় পাওয়া যায়, সুতরাং এটি পোর্টেবল স্ক্রিপ্টগুলি লিখতে ব্যবহার করুন, এটি মিথ্যা।

ছাইপাঁশ. আপনি যদি জানেন যে আপনার যে প্রতিটি সিস্টেমের জন্য যত্নশীল তা BASH করে তবে এটি একটি যথাযথ যুক্তিসঙ্গত বিবৃতি। BASH এর অনেক দরকারী বৈশিষ্ট্য রয়েছে যা POSIX sh এ যুক্তিসঙ্গতভাবে অনুকরণ করা যায় না। নন-পসিক্স বৈশিষ্ট্যগুলির অযৌক্তিক ব্যবহার কোনও দুর্দান্ত ধারণা নয় তবে আপনার যখন সত্যিকারের প্রয়োজন হয় তখন সেগুলি ব্যবহার করা ভাল।

বহনযোগ্যতা নিরঙ্কুশ নয়। অন্য যে কোনও কিছুর মতো আপনার এটি গ্রহণের কতদূর দরকার তা তর্কযোগ্য। উদাহরণস্বরূপ, ফেডোরা RPM প্যাকেজ নির্মাণের জন্য শেল কমান্ড ব্যবহার করে এবং ফেডোরা প্যাকেজিং নির্দেশিকাতে উল্লেখ করা হয়েছে যে সমস্ত প্যাকেজগুলি ফেডোরায় স্থানীয়ভাবে তৈরি করা আবশ্যক, তাই বেসের সমস্ত বৈশিষ্ট্য ব্যবহার করা ঠিক আছে fine যদিও BASH ব্যতীত তাত্ত্বিকভাবে অন্যান্য ডিগ্রোরা তাদের উত্স আরপিএমগুলি পুনরায় ব্যবহার করতে চাইতে পারে, তারা আপনার "সর্বদা উজে পজিক্স !! 1" মন্ত্রের পরিবর্তে ব্যবহারিকতার ভিত্তিতে পোর্টেবিলিটি সম্পর্কে সিদ্ধান্ত নিয়েছে।

জেডএসএইচ একটি ডিফল্ট শেল হিসাবে ধরা পড়ে নি, কেবল কারণ এটি অর্ধ-বেকড ধারণাগুলির একটি বিস্তৃত জগাখিচুড়ি।


2
আপনি কী ব্যাখ্যা করতে পারেন যে zsh এ কোন বৈশিষ্ট্য বা ধারণা আপনি অর্ধ-বেকড বলে মনে করেন এবং কেন?
ফ্যানরল

2

যাইহোক, আপনাকে এখানে অনেক বার বলা হয়েছে যা bashব্যবহারিকভাবে সর্বত্র পাওয়া যায়, সুতরাং এটি পোর্টেবল স্ক্রিপ্টগুলি লিখতে ব্যবহার করুন, যা মিথ্যা

পোর্টেবল ইউনিক্স স্ক্রিপ্টগুলি লেখার সঠিক উপায়টি হ'ল ব্যবহার করা shযা প্রতিটি * নিক্স সিস্টেমে পাওয়া যায়

ব্যতীত অন্য সমস্ত শেল আপনার shএকটি দৈনিক ইন্টারেক্টিভ সরঞ্জাম।

bashবনাম আসার সময় zsh- এর চেয়ে bashবেশি বান্ডিল হয় , সুতরাং সিস্টেমটিতে অতিরিক্ত সফ্টওয়্যার ইনস্টল করার অসুবিধাগুলি এখানে আসে - আপনাকে এটি বজায় রাখতে হবে। কিছু লোক zsh "দুর্দান্ত বৈশিষ্ট্যগুলি" পছন্দ করে তাই তারা সেই দামটি দিতে পছন্দ করে, কিছু না।*nixeszsh


2
Sh এর অনেকগুলি আধুনিক বাস্তবায়ন কেবল বাশের লিঙ্ক।
user9517 GoFundMonica সমর্থন

2
@ আইইন উবুন্টু ডিফল্টরূপে ড্যাশ ব্যবহার করে এবং shব্যাশ হলেও এটি চলার সময় সামঞ্জস্যতা মোড সক্ষম করে sh
ম্যাগগ্রোভেন

2

আর একটা কথা:

অনেক প্রোগ্রাম ডিফল্টরূপে শীতল বাশ সমাপ্তি সরবরাহ করে। আমার জন্য এটি স্যুইচ না করার কারণ।

[জুলাই ২০১৩ এ যোগ করা হয়েছে] উপরের মন্তব্যের পর থেকে জেডএসটি ব্যবহার করার কয়েক বছর পরে, আমাকে বলতে হবে ট্যাব সমাপ্তি (এমনকি বিল্ট ইন ও, তৃতীয়-প্যারালিটি পরিবর্তনগুলি) চমত্কার এবং দেখে মনে হচ্ছে এটি বাশের প্রস্তাবিতের চেয়ে অনেক দূরে like । :)।


3
আমি মনে করি যে জেডএসএইচ-তেও কাজ করে, জেডএসএইচে ট্যাব সমাপ্তির সাথে, আমি প্রচুর প্রোগ্রামের নির্দিষ্ট যুক্তি পাই ...
কাইল ব্র্যান্ড্ট

মজাদার. আপনি কি বলছেন যে ব্যাশ সমাপ্তি ফাইলগুলি zsh এর সাথে কাজ করে বা কিছু প্রোগ্রামের zsh- নির্দিষ্ট সমাপ্তির স্টাফ রয়েছে? এখনও বাশ সম্পূর্ণ হওয়ার ফাইলগুলির কিছু স্ট্যান্ড লেআউট রয়েছে যা zsh স্বয়ংক্রিয়ভাবে বিবেচনা করতে পারে বা নাও পারে। আপনি নিজের zsh কনফিগারেশনটিকে কাজ করতে টিপ করেছেন?
ওয়াজচিয়াচ ক্যাকজমারেেক

@ ওয়াজসিচ ক্যাকজমারেেক: আমি মনে করি আপনি নীচের থেকে 19.3 চান: zsh.sourceforge.net/Doc/Re कृपया / zsh_19.html । সত্যি বলতে, আমি কখনোই সময় নেয় সত্যিই এটা বুঝতে, শুধু একটি .zshrc আমি অনলাইনে পাওয়া বন্ধ ripped :-) কিন্তু এটা কার্যক্ষম মত প্রোগ্রাম,, grep, ইত্যাদি থেকে কমান্ড লাইন আর্গুমেন্ট সম্পন্ন হবে ....
কাইলি Brandt

5
বাশের ট্যাব সমাপ্তি zsh এর পুরাতন ট্যাব-সমাপ্তির সিস্টেমের মতো। এটি zsh থেকে ব্যাশে অনুলিপি করা আইডিয়াগুলির মধ্যে একটি z আপনি zsh এ ব্যাশের জন্য লেখা সমাপ্তি স্ক্রিপ্টগুলি "বাশকম্পিনিটি" চালিয়ে এবং তারপরে zsh এর ভিতরে "সম্পূর্ণ" এবং / অথবা "কমপেজেন" কমান্ড ব্যবহার করে ব্যবহার করতে পারেন - এটি সম্ভব কারণ ব্যাশ কার্যকারিতা zsh এ উপলব্ধ একটি উপসেট এবং তাই অনুকরণ করা যেতে পারে। সুতরাং ব্যাশে স্যুইচ করার কোনও কারণ নেই কারণ একটি আদেশ কমানোর মাধ্যমে বাশ সম্পূর্ণ হয়।
ফিল পি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.