POSIX шел
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/foobar
– user
гэсэн хэрэглэгчийн гэр хавтсанд байрлах foobar
файлыг заана.
Параметр тэлэлт нь ${param}
болон $param
гэсэн хэлбэртэй байх бөгөөд тухайн параметр болон хувьсагчийг заана. Энэ тэлэлт нь мөн давхар хашилтанд байрлаж болно.
Команд солих нь $(command)
болон `command`
хэлбэртэй байх бөгөөд тухайн командын гаралтыг энэ хэсэгч орлуулж ашиглахыг заана.
Арифметик тэлэлт нь $((expression))
хэлбэрээр тоон бодолтын үр дүнг энэ хэсэгт орлуулж ашиглахыг заана.
Файл нэрийн тэлэлт нь хэв бүхий үгийг системийн харгалзах файлын нэрүүдээр солих ажиллагаа юм. Жишээ нь: ls *.odt
коммандаар ажжиллаж буй хавтас дотор байх бүх odt
файлуудыг ls
командад дамжуулна.
Шелийн хэв
засварлахОдтой тэмдэг (*
) ямарч тексттэй таарах ба асуултын тэмдэг (?
) ямар нэг үсэг болон тэмдэгтийг илэрхийлнэ. Дөрвөлжин хаалтаар тэмдэгтийн ангийг ([abc]
) үүсгэх энэ нь анхаалын тэмдэгтээр эхэлсэн тохиолдолд ([!abc]
) харгалзах тэмдэгтийн ангийг урвуугаар илэрхийлнэ.
Оролт гаралтыг өөрчлөх
засварлахАливаа командыг ажиллуулахдаа оролт, гаралтын урсгалыг өөрчилж зааж өгч болно. Үүнд: command > file
гэсэн хэлбэрээр командын стандарт гаралтын урсгалыг заасан файлруу чиглүүлнэ. command < file
гэсэн хэлбэрээр командын стандарт оролтын урсгалыг заасан файлаас уншина. command 2> file
гэсэн хэлбэрээр командын стандарт алдааны урсгалыг заасан файлруу чиглүүлнэ.
Командын хайлт
засварлахШел аливаа командыг ажиллуулахын өмнө тухайн команд хаана байгааг олох шаардлагатай байдаг. Энэ хайлт нь дараах дарааллын дагуу явагдана:
- Хэрэв командын нэр ташуу зураас (
/
) агуулсан бол тухайн командыг шууд хайлт хийлгүй ажиллуулна. - Шелийн функц тухайн нэрээр олдвол ажиллуулна.
- Дараачийн ээлжинд шелийн өөрийн командыг авч үзнэ.
- Эцэст нь тухайн командыг
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
– заасан файл болон хавтсыг устгах.