سؤال

أنا لست جديدة *nix, لكن في الآونة الأخيرة لقد تم انفاق الكثير من الوقت في موجه الأوامر.سؤالي هو ما هي مزايا استخدام KornShell (ksh) أو باش قذيفة ؟ أين هي المخاطر من استخدام واحد على الآخر ؟

تبحث لفهم من وجهة نظر المستخدم وليس محض البرمجة.

هل كانت مفيدة؟

المحلول

باش.

مختلف UNIX و Linux تطبيقات مختلفة مختلفة المصدر مستوى تطبيقات ksh ، وبعضها حقيقي ksh ، وبعضها pdksh تطبيقات وبعضها فقط روابط الرمزية لبعض قذيفة أخرى أن لديها "ksh" شخصية.هذا يمكن أن يؤدي إلى غريب الاختلافات في تنفيذ السلوك.

على الأقل مع باش يمكنك أن تكون متأكدا من أنه رمز قاعدة واحدة, و كل ما عليك أن تقلق بشأن ما (عادة ما يكون الحد الأدنى) إصدار باش المثبتة.بعد أن فعلت الكثير من البرمجة على كل الحديثة (و لا حتى الحديث) UNIX, البرمجة باش هو أكثر موثوق بها ومتسقة في تجربتي.

نصائح أخرى

الفرق بين Kornshell و باش الحد الأدنى.هناك بعض المزايا واحد على الآخر ، ولكن الاختلافات هي صغيرة:

  • باش هو أسهل بكثير من مجموعة السريع الذي يعرض الدليل الحالي.أن تفعل الشيء نفسه في Kornshell هو hackish.
  • Kornshell وقد صفائف النقابي و باش لا.الآن, آخر مرة كنت تستخدم المصفوفات الترابطية كان...اسمحوا لي أن أعتقد...أبدا.
  • Kornshell مقابض حلقة الجملة أفضل قليلا.يمكنك عادة تعيين قيمة في Kornshell حلقة و هذا بعد الحلقة.
  • باش يعالج الحصول على رموز الإنهاء من الأنابيب بطريقة أنظف.
  • Kornshell لديه print الأمر الذي هو أفضل من echo الأوامر.
  • باش وقد التبويب الاكمال.في الإصدارات القديمة
  • Kornshell لديه r التاريخ الأمر الذي يسمح لي بسرعة إعادة السن الأوامر.
  • Kornshell بناء الجملة cd old new الذي يحل محل old مع new في الدليل الخاص بك وأقراص مدمجة هناك.انها مريحة عندما يكون لديك في دليل يسمى /foo/bar/barfoo/one/bar/bar/foo/bar و تحتاج إلى cd /foo/bar/barfoo/two/bar/bar/foo/bar في Kornshell ، يمكنك أن تفعل ببساطة cd one two وينبغي القيام به معها.في باش عليك cd ../../../../../two/bar/bar/foo/bar.

أنا قديم Kornshell الرجل لأنني تعلمت Unix في 1990s ، وكان ذلك قذيفة من خيار آنذاك.يمكنني استخدام باش, ولكن يمكنني الحصول على الإحباط في الأوقات لأنه في العادة استخدام بعض طفيفة الميزة التي Kornshell لديه باش لا وهو لا يعمل.لذا ، كلما كان ذلك ممكنا ، Kornshell كما الافتراضي.

ومع ذلك أنا سوف أقول لك أن تعلم باش.باش ينفذ الآن على معظم أنظمة Unix وكذلك على لينكس, و هناك ببساطة أكثر الموارد المتاحة للتعلم باش الحصول على مساعدة من Kornshell.إذا كنت بحاجة إلى القيام بشيء غريب في باش يمكنك الذهاب على ستاكوفيرفلوو بعد السؤال الخاص بك و ستحصل على عشرات الإجابات في بضع دقائق -- وبعض منهم حتى تكون صحيحة!.

إذا كان لديك Kornshell السؤال بعد ذلك على ستاكوفيرفلوو, سوف تضطر إلى الانتظار لبعض القديمة الماضي على رئيس الوزراء القراصنة مثلي يستيقظ من قيلولته قبل أن تحصل على إجابة.و تنسى الحصول على أي رد إذا كانوا يقدمون الحلوى حتى في سن الشيخوخة المنزل في ذلك اليوم.

باش هو ببساطة قذيفة من خيار الآن ، لذا إذا كنت قد حصلت على تعلم شيء ما ، قد تذهب أيضا مع ما هو شعبي.

أنا كورن قذيفة المخضرم ، لذلك أعرف أن أتكلم من هذا المنظور.

ومع ذلك, لقد كنت مرتاحا مع Bourne shell ksh88 ، ksh93 و الأكثر أعلم الميزات التي هي معتمد فيه.(يجب أن تخطي ksh88 هنا ، كما انها ليست على نطاق واسع بعد الآن.)

التفاعلية استخدام تأخذ ما يناسب حاجتك.التجربة.أحب أن أكون قادرا على استخدام نفس شل التفاعلية استخدام البرمجة.

ذهبت من ksh88 على SVR2 إلى tcsh ، ksh88sun (الذي أضاف كبيرة تدويل الدعم) و ksh93.حاولت باش, و يكره ذلك لأنه فإنه بالارض التاريخ.ثم اكتشفت shopt -s lithist وكان كل شيء جيدا.(إن lithist الخيار يؤكد أن أسطر محفوظة في الأمر الخاص تاريخ.)

شل البرمجة كنت التوصية على محمل الجد ksh93 إذا كنت تريد ثابت لغة البرمجة الجيدة POSIX المطابقة ، وحسن الأداء ، كما العديد من الأوامر يونكس يمكن أن تكون متاحة وظائف مدمج.

إذا كنت ترغب في قابلية الاستخدام على الأقل على حد سواء.وتأكد من أن لديك جيدة اختبار جناح.

وهناك العديد من الفروق الدقيقة بين قذائف.ينظر على سبيل المثال القراءة من الأنابيب:

b=42 && echo one two three four |
    read a b junk && echo $b

هذا وسوف تنتج نتائج مختلفة في قذائف مختلفة.فإن كورن قذيفة تشغيل خطوط الأنابيب من العودة إلى الجبهة ؛ العنصر الأخير في خط أنابيب يمتد في العملية الحالية.باش لا تدعم هذا مفيد السلوك حتى v4.x, وحتى ذلك الحين, انه ليس الافتراضي.

مثال آخر يوضح الاتساق:على echo الأمر نفسه الذي كان عتيقة من الانقسام بين BSD و SYSV unix, و قدم كل الخاصة بهم الاتفاقية لعدم طباعة الأسطر الجديدة (وغيرها من السلوك).ونتيجة لهذا يمكن أن يكون لا يزال ينظر في العديد من 'تكوين' النصية.

Ksh أخذت نهجا جذرية و قدم print الأمر الذي يدعم كلا من الطرق ( -n الخيار من BSD, و زائدة \c خاصة حرف من SYSV)

ومع ذلك ، بالنسبة خطيرة في أنظمة البرمجة أنصح من قذيفة ، مثل python, perl.أو أن أعتبر خطوة أخرى إلى الأمام ، واستخدام منصة مثل الدمية - التي تتيح لك مشاهدة وتصحيح الدولة من مجموعات كاملة من أنظمة جيدة لمراجعة الحسابات.

شل البرمجة مثل السباحة في مياه مجهولة ، أو ما هو أسوأ.

البرمجة في أي لغة يتطلب معرفة بناء الجملة ، واجهات والسلوك.شل البرمجة ليس مختلفا.

ليس لدي تجربة مع ksh, ولكن يجب استخدامها على حد سواء باش zsh.أنا أفضل zsh أكثر باش بسبب دعم قوية جدا الملف globbing متغير التوسع المعدلات ، وأسرع التبويب الانتهاء.

هنا هو مقدمة سريعة: http://friedcpu.wordpress.com/2007/07/24/zsh-the-last-shell-youll-ever-need/

هذا هو قليلا من Unix مقابل لينكس المعركة.معظم إن لم يكن جميع توزيعات لينكس باش تثبيت ksh الاختياري.معظم أنظمة يونكس مثل سولاريس ، إيكس و HPUX يكون ksh كما الافتراضي.

شخصيا أنا دائما استخدام ksh, أنا أحب السادس الانتهاء وأنا إلى حد كبير استخدام سولاريس على كل شيء.

عن النصوص ، أنا دائما استخدام ksh لأنه ينعم على gotchas.

ولكن أجد باش أكثر راحة بالنسبة التفاعلية استخدام.بالنسبة لي emacs الارتباطات الرئيسية و التبويب الانتهاء هي الفوائد الرئيسية.ولكن هذا في الغالب قوة العادة ، وليس أي مشكلة فنية مع ksh.

@foxxtrot

في الواقع ، فإن معيار قذيفة Bourne shell (sh). /bin/sh على لينكس هو في الواقع bash, ولكن إذا كنت تهدف عبر منصة مخطوطات, كنت أفضل حالا التمسك الميزات الأصلي Bourne shell أو كتابة ذلك في شيء من هذا القبيل perl.

جوابي سيكون 'اختيار واحد وتعلم كيفية استخدامها'.كلاهما الكريم قذائف.باش ربما لديه المزيد من أجراس وصفارات ، لكن كلاهما لديه الميزات الأساسية فأنت تريد.باش هو أكثر عالميا المتاحة في هذه الأيام.إذا كنت تستخدم لينكس في كل وقت ، مجرد عصا مع ذلك.

إذا كنت البرمجة تحاول التمسك عادي 'ش' لقابلية هو ممارسة جيدة, لكن مع باش متاحة على نطاق واسع حتى في هذه الأيام أن قليلا من المشورة هو على الارجح قليلا من الطراز القديم.

تعلم كيفية استخدام الانتهاء الخاص بك قذيفة التاريخ ؛ قراءة manpage أحيانا و محاولة تعلم بعض الأشياء الجديدة.

لشيء واحد, باش وقد التبويب الانتهاء.هذا وحده يكفي لجعل لي تفضل ذلك على ksh.

Z قذيفة لديه مجموعة جيدة من ksh ميزات فريدة من نوعها مع أشياء لطيفة التي باش يوفر بالإضافة إلى الكثير من الاشياء على أعلى من ذلك.

متوفرة في معظم UNIX نظام ksh هو المعيار-comliant بوضوح مصممة جيدا مقربة.أعتقد الكتب ، ويساعد في ksh كافية وواضحة ، وخاصة أورايلي الكتاب.باش الشامل.وأظل على أنها الجذر الدخول قذيفة لينكس في المنزل فقط.

التفاعلية استخدام, افضل zsh على لينكس/يونكس.تشغيل البرامج النصية في zsh لكن سوف اختبار معظم البرامج النصية ، وظائف في إيكس ksh على الرغم من.

باش هو المعيار ، ولكن هذا هو الغالب لأنه يمكن أن يكون متأكد من أنها مثبتة على كل *nix هناك.إذا كنت تخطط لتوزيع البرامج النصية واستخدام باش.

أنا حقا لا يمكن معالجة البرمجة الفعلية الخلافات بين قذائف للأسف.

باش هو المعيار لينكس.
تجربتي هي أنه من الأسهل أن تجد المساعدة باش من ksh أو csh.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top