საშინაო დავალება OS_2018_Spring კლასისთვის.
პროექტზე მუშაობდნენ:
გიორგი ქობულაძე - tomriddleperevell
ოთარ დვალიშვილი - sparrowV
ოთარ ჯანხოთელი - janxo
გაშვება - make && ./shell.c
ფუნქციონალი:
ჩაშენებული ფუნქციები:
?-- ბეჭდავს ინფორმაციას shell-ს შესახებ
cd -- ცვლის დირექტორიას
pwd -- ბეჭდავს მიმდინარე სამუშაო დირექტორიის სახელს
exit -- ასრულებს შელის პროცესს
ulimit -- აბრუნებს მიმდინარე ლიმიტებს ან ცვლის მათ
nice -- უშვებს პროგრამას შეცვლილი ‘nice’-ით
თუ nice-ს გამოვიძახებთ პარამეტრების გარეშე,
დაბეჭდავს მიმდინარე პროცესის niceness-ს
kill -- გზავნის სიგნალს მითითებულ პროცესთან
type -- ბეჭდავს გადაცემული ბრძანება built-in ფუნქციაა თუ სხვა პროგრამა
echo $VARNAME -- ბეჭდავს მითითებული ცვლადის მნიშვნელობას
echo $? -- ბეჭდავს ბოლო შვილობილი პროცესის სტატუს კოდს
echo "some random string" -- ბეჭდავს გადმოცემულ სტრინგს stdout-ზე
export VARIABLE -- აექსპორტებს ცვლადს და მის მნიშვნელობას
ENV1=”value” ახალი ცვლადის აღწერა
გარე პროგრამების გაშვება:
shell-ს შეუძლია ნებისმიერი გარე პროგრამის გაშვება,
რომლის გამშვები ფაილიც განთავსებულია $PATH ცვლადში
მოცემული დირექტორიებიდან რომელიმეში.
shell პროცესი არ კცვდება ღილაკების კომბინაციით CTRL-C ან CTRL-Z.
c პარამეტრით პროგრამა არგუმენტად იღებს შესასრულებელ ბრძანებას.
გადაცემული ბრძანების შესრულების შემდეგ ამთავრებს მუშაობას
და აბრუნებს შესრულებული ბრძანების სტატუსს.
მაგ. ბრძანება: ./fsh -c 'cd /tmp; pwd' უნდა ბეჭდავდეს /tmp-ს
სიმბოლო ‘;’ აღნიშნავს ბრძანების დასასრულს
მას შეიძლება მოსდევდეს N რაოდენობის სხვა ბრძანება.
საკონტროლო ოპერატორები(‘||’ და ‘&&’):
თუ ბრძანებები გადაბმულია ‘||’ ოპერატორით მარჯვენა ოპერანდი
სრულდება მაშინ როცა მარცხენა ოპერანდი შედეგად დააბრუნებს
არანულოვან კოდს(მუშაობას დაასრულებს შეცდომით).
თუ ბრძანებები გადაბმულია ‘&&’ ოპერატორით მარჯვენა ოპერანდი
სრულდება მაშინ როცა მარცხენა ოპერანდი შედეგად დააბრუნებს
0-ს(მუშაობას დაასრულებს წარმატებით).
მაგ. ბრძანებები:
ls none_existing_dir || echo "there is no such directory or file"
ls ./ && echo "ls executed successfully"
პაიპ ოპერატორი:
მაგ: ბრძანება ls /etc | grep passwd | sort
ls-ის stdout-ი უნდა გადაებას grep-ის stdin-ს
grep-ის stdout უნდა გადაებას sort-ის stdin-ს
I/O stream-ების გადამისმართება:
ოპერატორი ‘<’ ამისამართებს სტანდარტულ ინფუთს (stdin)
ოპერატორი ‘>’ ამისამართებს სტანდარტულ აუთფუთს (stdout)
ჯერ ფაილის ზომას ანულებს
ოპერატორი ‘>>’ ამისამართებს სტანდარტულ აუთფუთს (stdout)
ახალ მონაცემებს ბოლოში აწებებს
მაგ: ბრძანება cat fsh.c > fsh_temp.txt
fsh.c ფაილის შიგთავსი გადააქვს fsh_temp.txt ფაილში
(fsh_temp.txt ფაილის ზომა დასაწყისში ნულდება)
პროექტი დაწერილია make-ით.