ლინუქსში ეფექტიური მუშაობისთვის ძალიან მნიშვნელოვანი command line-ს ცოდნა. command line მოგცემთ საშუალებას ლინუქსში  ყველაფერი გააკეთოთ როგორც, რა დროსაც და რა ხერხითაც გინდათ.  ვინდოუსს ასეთი  მოქნილი და ზუსტი ინსტრუმენტი კარგა ხანს არ გააჩნდა. ვინდოუსის cmd ლინუქსის კომანდ ლაინის ძალიან “ფერმკრთალი”  ანალოგია . თუმცა მძლავრი კომანდ ლაინის არსებობა რომ საჭიროა ეს დამტკიცდა თუნდაც იმით, რომ მაიკროსოფტმა შეიმუშავა და წარმოადგინა Powershell. ამით მაიკროსოფტმა მისცა ვინდოუსის ადმინისტრატორებს ისეთივე მძლავრი ინსტრუმენტი, როგორიც ლინუქსის ადმინისტრატორებს ქონდათ პრაქტიკულად ლინუქსის დასაბამიდანვე.

როცა საქმე ლინუქს ეხებოდა ხშირად გაიგებდით რომ რაღაც ბრძანება შელშია შესყავანი ან ვიღაცა შელთან მუშაობს. რა არის შელი? მარტივად რომ ვთქვად შელი არის პრაქტიკულად ის კომანდ ლაინი, რომელშიც ჩვენ ჩაწერთ რაღაც ბრძანებებს და ლინუქსი ამ ბრძანებეს შეძლებისდაგვარად შეასრულებს (მთავარია წინასწარ იცოდეთ ლინუქის შესაძლებლობების მაქსიმუმი და ის თუ როგორ “უთხრათ” ესა თუ ის ბრძანება). შელს, რომელთანაც  თქვენ ხშირად მოგიწევთ მუშაობა, ქვია ბაში (bash – bourne again shell; პირველი შელი (Bourne shell (sh) ) Unix ტიპის ოპერაციული სისტემებისთვის დაწერილი იყო  Stephen Bourne მიერ ჯერ კიდევ 1977 წელს, ხოლო მერე 1989 წელს Brian Fox გამოუშვა გაუმჯობესებული ვერსია, რომელიც  Stephen Bourne საპატივცემულოდ დაარქვა bash)

(ვინაიდან სტატიების ეს ციკლია გათვლილია დამწყებებზე ჩვენ არ დავიწყებთ сommand line-ის, ტერმინალის, შელის და ა.შ. განსხვავებათა ნიუანსების გარჩევას, არამედ მათ ერთმანეთის სინონიმებად მივიღებთ)

შელის გამოსაძახებლად თქვენ გჭირდებათ შესაბამისი პუნქტის გამოძახება  გრაფიკულ გარსში (მაგ.: Konsole-კდეში, Terminal- გნომი და ა.შ.).

ტერმინალის ეკრანზე ჩვენ ვხედავთ მისალმებას  და ბრძანების შეყვანის შეთავაზებას. გავარჩიოთ ეს მისალმება. წარწერა tux@tux-VirtualBox:~$  ბევრ ინფროს გვაწვდის. კერძოდ, tux არის მოხმარებლის სახელი.  ძაღლუკას ნიშნის მერე მოდის კომპიუტერის სახელი, რომელიც ჩვენ შემთხვევაში არის tux-VirtualBox. მაგალითად თუ თქვენი იუზერი იქნება giorgi და კომპის სახელი giorgi-pc წარწერის ეს ნაწილი იქნება, როგორც giorgi@giorgi-pc ანუ იუზერი გიორგი იმყოფება კომპ giorgi-pc-ზე. რას ნიშნავს მაშინ ტილდა ანუ ~? ეს ნიშანი ლინუქსის კომანდ ლაინში აღნიშნავს იუზერის ე.წ. home directory-ს, ანუ იმ ცენტრალურ ადგილას სადაც დევს იუზერის ყველა ფაილი და პრინციპში რომლის ფარგლებშიც ვრცელდება მისი ძალაუფლება). ის რომ აღნიშნული იუზერი მოქმედებს მხოლოდ იუზერის უფლებამოსილებით აღნიშნავს ბოლოში მდგომი დოლარის ნიშანი. თუ ჩვენ გვექნება დოლარის ნიშნის ნაცვლად დიეზი (#), ეს ნიშნავს იმას რომ ჩვენმა იუზერმა მოიპოვა სუპერ ანუ  რუთის  (root) ძალაუფლება და მის ნებას ვერაფერი აღუდგება წინ 🙂 საბოლოო ჯამში # ნიშანი მისალმების ბოლოს ნიშნავს იმას, რომ თქვენ შეუზღუდავი ძალაუფლება გაქვთ მოცემულ სისტემაში და ეს კი თქვენგან მეტ პასუხისმგემლობას მოითხოვს, ვინაიდან ერთი არასწორი ნაბიჯი და თქვენმა სისტემა შეიძლება სიცოცხლესთან შეუთავსებელი დაზიანებები მიიღოს :))

რამოდენიმე რჩევა კომანდ ლაინში კ

თუ თქვენ გინდათ დაუბრუნდეთ წინათ აკრეფილ ბრძანებას, მაშინ უბრალოდ დააჭირეთ ზევით მიმართულ ისარს კლავიატურაზე.  როგორც წესი  მოცემულ გახსნილ ფანჯარაში შეყვანილო ბოლო 500 ბრძანება დამახსოვრებულია. ასევე უნდა გაითვალისწინოთ, რომ კოპირების და ჩასმის სტანდარტული კომბინაციები (ანუ Ctrl+C და Ctrl+V) ტერმინალში არ მუშაობს. რაიმე ტექსტს თქვენ დააკოპირებთ უბრალოდ მისი მონიშვნით, ხოლო ჩასვამთ მაუსის შუა ღილაკზე (გორგოლაჭზე) დაჭერით.

რა მარტივი ბრძანებები შეგვიძლია გამოვიყენოთ?
მაგალითად გამოვიძახოთ კალენდარი 🙂 ბრძანება cal

ან მივიღოთ დეტალური ინფორმაცია დღევანდელი თარიღის შესახებ. ბრძანება date.

როგორც ზემოთ აღვნიშნეთ როდესაც თქვენ ხსნით კომანდ ლაინს, თქვენ აღმოჩნდებით home directory-ში, რომელიც გამოდის როგორც current working directory ანუ მიმდინარე სამუშაო დირექტორია, ფოლდერი, ადგილი და ა.შ. 🙂  იმისთვის რომ ვნახოთ ჩვენი მოქმედი current working directory  საკმარისია ავკრიფოთ უმარტივესი და უპატარესი ბრძანება pwd. ნებისმიერ ერთ მოცემულ მომენტში ჩვენ შეგვიძლია ვიმყოფებოდეთ მხოლოდ ერთ კონკრეტულ  current working directory. როგორ გადავიდეთ სხვა დირექტორიაში? პირველ რიგში უნდა დავიმახსოვროთ რომ დირექტორიდან დირექტორიაში გადასასვლელად ჩვენ გვჭირდება ბრძანება cd მერე კი შესაბამისი მისამართი. აქვე უნდა აღვნიშნოთ, რომ ლინუქს ვინდოუსისგან განსხვავებით აქვს ერთი ფუძე ყველა დისკისთვის, დისკები უბრალოდ მაუნტდებიან შესაბამის ადგილებში. ასე რომ რომელიმე სხვა ფოლდერში გადასვლისას cd ბრძანების არგუმენტად ჩვენ უნდა მივუთითოთ  ან აბსოლუტური მისამართი მაგალითად /home/user/desktop ან ე.წ. რელატიური, რომლის გამოყენებისას ნაკლები ბეჭდვა დაგვჭირდება.

აბსოლუტური მისამართია რომელიც იწერება თავიდან ბოლომდე სრულად. რელატიური მისამართია ისეთი, რომელშიც ნაგულისხმევია უკვე ჩვენი არსებული მდებარეობა ან გამოყენებულია სპეციალური სიმბოლო. თუ მოვიტანთ ანალოგიას ცხოვრებითან – აბსოლუტური მისამართი იქნება საქართველო, თბილისი, ალექსიძის 3. ხოლო თუ მისამართს ვეუბნებით ადამიანს რომელიც უკვე თბილისშია (ანუ რელატიურია მისამართი – ითვალისწინებს ადამიანის არსებულ მდებარეობას) შეგვიძლია ვუთხრათ უბრალოდ მოდი ალექსიძის სამში.

რელატიურად მისამართად შეიძლება გამოგვადგეს სიბოლო ~ ნებისმიერ დირექტორიაში ყოფნისას თუ ჩვენ ავკრეფთ cd ~ და დავაჭერთ ენთერს აღმოვჩნდებით home directory-ში. გარდა ამისა არსებობს . და .. სიმბოლოები. სიმბოლო . ნიშნავს იმას რომ ჩვენ მივმართავთ იმავე დირექტორიაში მყოფ ფოლდერს თუ ფაილს რომელშიც ამჟამად ვიმყოფებით. მაგალითად, თუ ჩვენ ვიმყოფებით ფოლდერ /home/user -ში და გვინდა გადავიდეთ ფოლდერ Downloads -ში, რომელიც იმავე ფოლდერშია განლაგებული, საკმარისია ავკრიფოთ cd ./Downloads (მართალი რომ გითხრათ საკმარისია ავკრიფოთ cd Downloads, ვინაიდან ამ დროს სისტემა გაჩუმების პრინცით გამოიყენებს ./    ./  გამოყენება უფრო ხდება სკრიპტების გაშვებისას). დაწვენილი ორი წერთილი ანუ .. კი ზედა დირექტორიას აღნიშნავს, განსახილველ მაგალითში თუ ჩვენ ავკრეფთ cd .. ჩვენ აღმოვჩნდებით ზედა /home დირექტორიაში

კომანდ ლაინთან მუშაობის სპეციფიკიდან გამომდინარე ფაილების სახელებში უმჯობესია არ გამოიყენოთ გამოტოვება არამედ გამოიყენოთ ქვედა ტირე _, მაგალითად: ჯობია ფაილს დაარქვათ chemi_konfigi ვიდრე chemi konfigi.

ჩვენ უკვე ვნახეთ პრაქტიკაში pwd, date, cal, მაგრამ ლინუქსის ყველა ბრძანება როდია ასეთი მარტივი კონსტრუქციის.

აკრიფეთ ბრძანება ls -l შედეგის დადგომის მერე ls -a, ხოლო შემდეგ  ls -al

აღნიშნული მაგალითი გვიჩვენებს, რომ ხშირად ბრძანებას შეიძლება მოყვეს ერთი ან მეტი ოფცია (რომელიც განსაზღვრავს ბრძანების არსს) და არგუმენტი (რომელიც განსაზღვრავს თუ რა ობიექტ(ებ)ზე განხორცილედება ესა თუ ის ბრძანება.

მარტივად, რომ ვთქვათ ბრძანება უნდა დაიწეროს შემდეგი თანმიმდევრობით:

brdzaneba  -opcia argumenti

პრაქტიკაში ბრძანება წარმოადგენს ერთადერთ აუცილებელ კომპონენტს, რაც შეეხება ოფციას ან არგუმენტს – მათ გამოიყენებთ საჭიროების ამებრ.

როგორც წესი ოფცია იწერება ტირეთი და ტირეს მოსდევს ერთი ასო (მაგ.: -a)  თუ ჩვენ გვჭირდება ორი ან მეტი ოფციის გამოყენება ერთად, ჩვენ რა თქმა უნდა შეგვიძლიათ დავწეროთ მაგალითად ls -t -l -a, თუმცა ლინუქსში არსებობს უფრო მარტივი გზა: ls -alt ან ls -tal ან სულაც ls -lat. როგორც ხედავთ თანმიმდევრობას არ აქვს მნიშვნელობა. (არსებობს იშვიათი გამონაკლისები!)

გარდა ოფციის ასეთი სტანდარტული ფორმის არსებობს ასევე ე.წ. Human Readable ფორმატი, რომელიც როგორც წესი უფრო გასაგებია ადამიანისთვის. ასე მაგალითად ls -a შეიძლება დაიწეროს როგორც ls –all. დავაკვირდეთ, რომ . Human Readable ფორმატში დაწერილ ოფციას წინ უსწრებს ორი ცალი ტირე.

თუ მაგალითების ნახვის მერე ჯერ არ ხართ ბოლომდე დარწმუნებული თუ რას აკეთებს ls გეპატიჟებით ციკლის შემდეგ სტატიაში 🙂