شل korn - آموزش اسکریپت نویسی
X
تبلیغات
رایتل

آموزش اسکریپت نویسی

آموزش اسکریپت نویسی پوسته گنو-لینوکس

#!/bin/bash

شل korn

KornShell

پوسته Korn

KornShell یک پیاده‌سازی از پوسته Bourne اس این پوسته سازگاری کمتر، اما ویژگیهای افزوده بسیاری در جهت تسهیل برنامه‌نویسی دارد.اکثر این ویژگی‌ها بخشی از POSIX shell نیز می‌باشند، و بنابراین در هر سیستم موافق POSIX معتبر هستند. در دنیای شل‌ها، می‌توان گفت که خانواده Ksh نزدیکترین خویشاوند Bashمی‌باشند. Bash بسیاری ار توانایی‌های پوسته Korn را تکمیل می‌کند و هر دو در قراردادهای مشترک بسیاری شرکت دارند. اگر دقت به کار گرفته شود، نوشتن کُد چند زبانه قابل حمل میان این پوسته‌ها در حالیکه بازهم از یک فوق‌مجموعه ویژگی‌های POSIX sh استفاده می‌شود، امکان‌پذیر است. برای مثال، کلیدواژه محاسباتی ‎((‎. ناسازگاری‌ها نیز در بسیاری از ویژگی‌های مشترک وجود دارند. به طور نمونه، دستور داخلی ‎read -a‎ در Bash معادل دستور ‎read -A‎ در Ksh می‌باشد.

ksh88، و ksh93 جانشین آن، پوسته Korn اصیل David Korn می‌باشند. اکنون عضوِ بسته ast-open پس از اینکه در سال 2000 توسط ‎AT&T‎ تحت مجوز CPL منبع باز گردید، ksh93 به طور فعال توسعه داده می‌شود و احتمالاً پوسته‌ای می‌باشد که وقتی عبارت "ksh"بدون توصیف بیشتر به کار می‌رود، شخص به آن رجوع می‌کند. همچنین به طور رایج دارای بیشترین ویژگی‌ها می‌باشد. افزون بر این، چند نوع دیگر تحت نام "Korn shell" وجود دارد. برخی از رایج‌ترین آنها که به طور فعال توسعه داده می‌شوند عبارتند از mksh - پوسته کورن سیستم MirBSD، و pdksh (پوسته Korn قلمرو عمومی) - در حالیکه ksh93 هنوز یک نرم‌افزار مالکانه بود، قرار بود جایگزین منبع باز آن باشد.

پوسته Korn (هر کدام از ksh88 یا ksh93، نسبت به دوره سیستم) یک بخش استاندارد از هر سیستم مدرن (تجارتی) یونیکس، به عنوان مثال Solaris و AIX و HP-UX می‌باشد. نگارش pdksh اغلب درسیستم‌های BSD یا GNU/Linux در دسترس می‌باشند و تعداد رشد یابنده‌ای از سیستم‌های GNU/Linux اکنون ksh93 را به جای آن و یا همراه با pdksh ارائه می‌کنند

لیست ناتمام ویژگی‌های ksh93 بدون معادل سر راست در پوسته Bash (از نگارش 4.2)، (یعنی نه همان ویژگی با همان ترکیب دستوری توسط یک نام متفاوت). انجام دادن برخی از آنها با سایر شیوه‌ها در Bash کاری پیش‌پا افتاده است:

(جدول پایین کار در دست انجام است)

ویژگی

شرح

{n1..n2[ ..n3]%fmt}

عبارت پشت سر هم با یک قالب مشخص برای printf جهت اِعمال به هر شناسه تولید شده.

{n[,m]}(pattern-list)

تعیین ERE-style(سبکِ عبارت منظم توسعه یافته) اختیاری globهای توسعه یافته.

varname=([typeset [options]] assignment ...)

تخصیص مرکب و تو‌در‌توی متغیر. مشابه ساختارها در C. آرایه‌های Bash فقط می‌توانند از نوع داده‌های متجانس باشند.

%n$ and *n$

الحاقیه‌های SUS برنامه printf برای آدرس‌دهی شناسه‌های جداگانه

انواع عددی ممیز شناور

-

print (built-in)

چاپ کاراکترهای اختیاری را به طور قابل اطمینان میسر می‌کند.

لیست ناتمام ویژگی‌های BashShell بدون معادل سرراست در ksh93:

ویژگی

شرح

‎;;&‎

جداکننده ‎case...esac‎ مانند ‎;&‎ اما به طور اضافه تنها در صورتیکه لیست الگوی بعدی منطبق گردد ادامه می‌یابد

‎pushd/popd/dirs/~[+|-]N‎

Ksh فاقد پشته دایرکتوری است. بسط مَد (~) فقط در یک سطح پشتیبانی می‌شود.

سایر نکات با اهمیت:

  • کمک پردازشهای Bash به طور قابل ملاحظه‌ای متفاوت هستند و تا نگارش 4 به هیچوحه در Bash در دسترس نبودند. (پردازش ‎|&‎ در برابر کلید واژه coproc)

  • Ksh همیشه آخرین فرمان یک خط لوله را در محیط پوسته والد اجرا نموده است. Bash همواره برای تمام فرمانهای خط لوله از یک پوسته فرعی استفاده کرده. Bash 4.2 گزینه lastpipe فرمان shopt را اضافه نموده، اما به طور پیش‌فرض فعال نمی‌باشد.

  • ‎$SECONDS‎ در ksh93 دارای دقت میلی ثانیه است. Bash تنها ثانیه‌ها را حساب می‌کند و مکانیسمی برای تفکیک دقیق‌تر نشانه‌های زمان ندارد.


CategoryShell

پوسته Korn (آخرین ویرایش ‎2013-08-14 11:16:31‎ توسط host-84-82)