Jump to content

POSIX шел

Википедиа — Чөлөөт нэвтэрхий толь
(POSIX shell (бүрхүүл)-с чиглүүлэгдэв)
Bash, UNIX-д хэрэглэгддэг шел.

POSIX шел нь POSIX стандартын[1] нэг хэсэг бөгөөд энэхүү системийн команд мөрийн шелийг[2] тодохойлж өгсөн байдаг. Энэ нь хэрэглэгчийг үйлдлийн системтэй холбож өгдөг хэрэглэгчийн интерфэйс програм юм. Өөрөөр хэлвэл хэрэглэгч команд мөрийн горимд компьютерийн гар дээр удирдамж бичиж оруулах замаар ажиллах юм. Үүнээс гадна хэрэглэгч үйлдлүүдээ файлд хадгалан скрипт үүсгэж, түүнийгээ команд мөрийн шелээр ажиллуулах боломжтой. Энэ нь ажлыг автоматжуулах үндсэн арга болдог.

Өнөөгийн гол үйлдлийн системүүд (Microsoft Windows-с бусад) POSIX стандартыг дэмжсэн шелийг үндсэн шелээр ашигладаг. Үндсэн шел нь /bin/sh -д холбоотой байгаа шелийг хэлнэ. Хэрэглэгч POSIX шелийг ашиглах болон үүнд зориулсан скрипт бичсэнээр өргөн хүрээний системүүд дээр ажиллах боломжтой болох юм.

Windows дээр POSIX стандартыг дэмжсэн шел анхнаасаа суугаагүй байдаг бөгөөд хэрэглэгч үүнийг нэмэлт байдлаар суулган ашиглах боломжтой.

POSIX шелийн ажиллагаа

[засварлах | кодоор засварлах]

Командын мөрийн шел нь итерактив команын хэл болон скриптийн програмын хэл болдог. Хэрэглэгч командын мөрийн горимд ажиллах явцад шелийн өөрийн болон системийн бусад командуудыг дураараа хольж ашигладаг.

Шел анх ачааллах үед зарим файлуудыг (/etc/profile, ~/.profile) тодорхой нөхцөлтэйгээр автоматаар ажиллуулдаг. Ингснээрээ хэрэглэгчийн орчинг үндсэн ажиллагаа эхлэхээс өмнө тохируулах боломж олгодог.

Онцгой утгатай тэмдэгтүүд

[засварлах | кодоор засварлах]

Хойшоо налуу зураас \, дан хашилт ' болон давхар хашилт " -ыг ашиглан онцгой утгатай тэмдэгтүүдийг тусгаарлан оруулж өгдөг. Үүнд:

|  &  ;  <  >  (  )  $  `  \  "  '  <space>  <tab>  <newline>

Жишээ нь: cd 'foo bar', cd "foo bar" болон cd foo\ bar гэсэн командууд нь ижил утгатай бөгөөд foo bar гэсэн хавтасруу шилжэн орохыг заана.

Гэхдээ давхар хашилт дотор $, ` болон \ тэмдэгтүүд нь огцгой утгатай хэвээр байх юм.

Параметр болон хувьсагчууд

[засварлах | кодоор засварлах]

Байршлын параметр нь шелийг эсвэл функц дуудаж ажиллуулах үед зааж өгсөн аргументууд болно. Үүнийг ашиглахдаа харгалзах дугаараар нь хандна. Эдгээрийг set командаар өөрчлөх боломжтой.

Хувьсагч нь нэрээр хандаж ашиглах параметр юм. шел ачааллаж эхлэхдээ орчны хувьсагчуудыг эдгээр шелийн хувьсагч болгодог. Хувьсагчийг тодорхойлох эсвэл өөрчлөхдөө name=value гэж зааж өгнө.

Онцгой параметрыг тусгай тэмдэгтээр хандах бөгөөд, жишээлвэл, ? тэмдэгтээр хамгийн сүүлийн командын гаралтын төлвийг заана.

Үгийн эхэнд бичигдсэн, хашилтан дотор бус долгион тэмдэг ~ нь хэрэглэгчийн гэр хавтсыг илэрхийлнэ. Жишээ нь: ~/foobar – хэрэглэгчийн гэр хавтсанд байрлах foobar файлыг заана, ~user/foobaruser гэсэн хэрэглэгчийн гэр хавтсанд байрлах foobar файлыг заана.

Параметр тэлэлт нь ${param} болон $param гэсэн хэлбэртэй байх бөгөөд тухайн параметр болон хувьсагчийг заана. Энэ тэлэлт нь мөн давхар хашилтанд байрлаж болно.

Команд солих нь $(command) болон `command` хэлбэртэй байх бөгөөд тухайн командын гаралтыг энэ хэсэгч орлуулж ашиглахыг заана.

Арифметик тэлэлт нь $((expression)) хэлбэрээр тоон бодолтын үр дүнг энэ хэсэгт орлуулж ашиглахыг заана.

Файл нэрийн тэлэлт нь хэв бүхий үгийг системийн харгалзах файлын нэрүүдээр солих ажиллагаа юм. Жишээ нь: ls *.odt коммандаар ажжиллаж буй хавтас дотор байх бүх odt файлуудыг ls командад дамжуулна.

Одтой тэмдэг (*) ямарч тексттэй таарах ба асуултын тэмдэг (?) ямар нэг үсэг болон тэмдэгтийг илэрхийлнэ. Дөрвөлжин хаалтаар тэмдэгтийн ангийг ([abc]) үүсгэх энэ нь анхаалын тэмдэгтээр эхэлсэн тохиолдолд ([!abc]) харгалзах тэмдэгтийн ангийг урвуугаар илэрхийлнэ.

Оролт гаралтыг өөрчлөх

[засварлах | кодоор засварлах]

Аливаа командыг ажиллуулахдаа оролт, гаралтын урсгалыг өөрчилж зааж өгч болно. Үүнд: command > file гэсэн хэлбэрээр командын стандарт гаралтын урсгалыг заасан файлруу чиглүүлнэ. command < file гэсэн хэлбэрээр командын стандарт оролтын урсгалыг заасан файлаас уншина. command 2> file гэсэн хэлбэрээр командын стандарт алдааны урсгалыг заасан файлруу чиглүүлнэ.

Шел аливаа командыг ажиллуулахын өмнө тухайн команд хаана байгааг олох шаардлагатай байдаг. Энэ хайлт нь дараах дарааллын дагуу явагдана:

  1. Хэрэв командын нэр ташуу зураас (/) агуулсан бол тухайн командыг шууд хайлт хийлгүй ажиллуулна.
  2. Шелийн функц тухайн нэрээр олдвол ажиллуулна.
  3. Дараачийн ээлжинд шелийн өөрийн командыг авч үзнэ.
  4. Эцэст нь тухайн командыг PATH орчны хувьсагчид зааж өгсөн хавтаснуудаас хайж ажиллуулна.

Шелийн функц, өөрийн команд болон системийн командыг дуудаж ажиллуулах хэлбэр нь яг адилхан байдаг учир эдгээр төрлийн командуудыг харилцан солих боломжтой байдаг. Өөрөөр хэлбэл байнга хэрэглэгдэх системийн командыг ижил нэртэй функцээр орлуулснаар гүйцэтгэлийг сайжруулж болно.

Дамжуулах хоолой

[засварлах | кодоор засварлах]

Оролт гаралтыг өөрчилж болдогтой төстэй бас нэгэн ажиллагаа нь дамжуулах хоолой юм. Энэ аргачлалаар нэг командын гаралтыг нөгөө командын оролтруу шууд холбож өгч болно. Хэлбэр нь command1 | command2 байх бөгөөд энэ нь эхний командын гаралтыг дараачийн командын оролттой холбоно гэсэн үг.

Удирдлагын бүтэц

[засварлах | кодоор засварлах]

if команд нь дараах хэлбэртэй байх бөгөөд command -н төгсгөлийн төлөв тэг байх нөхцөлд commands командуудыг ажиллуулах бөгөөд эс боловоос else хэсгийн командуудыг ажиллуулах юм.

if command
then commands ...
[ elif command
  then commands ... ]
[ else commands ... ]
fi

while команд нь дараах хэлбэртэй байх бөгөөд command -н төгсгөлийн төлөв тэг байх болгонд командуудыг давтан ажиллуулах юм.

while command
do commands ...
done

for команд нь дараах хэлбэртэй байх бөгөөд бүх word ... утгуудын хувьд тус бүр var хувьсагчид оноож командуудыг давтан ажиллуулах юм.

for var [ in word ... ]
do commands ...
done

Шелийн функц тодорхойлох

[засварлах | кодоор засварлах]

Функц тодорхойлохдоо дараах хэлбэрийг ашиглана. Үүнд name гэсэн функц нь их биедээ хэдэн ч командуудыг агуулж болох ба return -р функцийг төгсгөж болох бөгөөд төлөвийг мөн зааж өгч болно.

name() {
    commands ...
    [ return [ exitstatus ] ]
}

Шелийн өөрийн командууд

[засварлах | кодоор засварлах]

Шелийн зарим командуудыг дурьдя:

bg – Зогсоосон байгаа арын ажлыг үргэлжлүүлэх.

cd – Ажлын хавтсыг өөрчлөх.

echo – Дэлгэцэнд текст бичих.

exit – Шелээс гарах.

pwd – Ажлын хавтсыг харуулах.

read – Хэрэглэгчээс текст мэдээлэл авах.

wait – Арын ажлыг дуусахыг хүлээх.

Системийн командууд

[засварлах | кодоор засварлах]

POSIX стандартад[1] мөн бусад системийн командуудыг зааж өгсөн байдаг. Түүнээс гадна системийн командууд нь шелийн нэгдсэн хэсэг биш болохыг анхаарах хэрэгтэй. Үүнээс зарим нэгийг дурдвал:

cat – заасан файлуудыг нэгтгэн харуулах.

chmod – файл болон хавтасны эрхийг өөрчлөх.

cp – заасан файл болон хавтсыг хуулах.

find – системээс файл болон хавтсуудыг хайх.

mkdir – шинэ хавтас үүсгэх.

mv – заасан файл болон хавтсыг нүүлгэх буюу нэрийг өөрчлөх.

rm – заасан файл болон хавтсыг устгах.