logo

Ievads Linux Shell un Shell skriptēšanā

Ja mēs izmantojam kādu lielu operētājsistēmu, mēs netieši mijiedarbojamies ar apvalks . Palaižot Ubuntu, Linux Mint vai jebkuru citu Linux izplatīšanu, mēs mijiedarbojamies ar čaulu, izmantojot termināli. Šajā rakstā mēs apspriedīsim Linux čaulas un čaulas skriptus, tāpēc pirms čaulas skriptu izpratnes mums ir jāiepazīstas ar šādām terminoloģijām:

  • Kodols
  • Apvalks
  • Terminālis

Satura rādītājs



Kas ir kodols?

Kodols ir datorprogramma, kas ir datora operētājsistēmas kodols un pilnībā kontrolē visu sistēmā. Tas pārvalda šādus Linux sistēmas resursus -

  • Failu pārvaldība
  • Procesu vadība
  • I/O vadība
  • Atmiņas pārvaldība
  • Ierīču pārvaldība utt.

Bieži tiek maldināts, ka Linuss Torvalds ir izstrādājis Linux OS, bet patiesībā viņš ir atbildīgs tikai par Linux kodola izstrādi.

Pilnīga Linux sistēma = Kodols + GNU sistēmas utilītas un bibliotēkas + citi pārvaldības skripti + instalēšanas skripti.



Kas ir Shell?

Apvalks ir īpaša lietotāja programma, kas nodrošina lietotājam saskarni operētājsistēmas pakalpojumu lietošanai. Shell pieņem cilvēkiem lasāmas komandas no lietotājiem un pārvērš tās kodolam saprotamā veidā. Tas ir komandu valodas tulks, kas izpilda komandas, kas nolasītas no ievades ierīcēm, piemēram, tastatūrām vai failiem. Apvalks tiek palaists, kad lietotājs piesakās vai palaiž termināli.

mysql ievieto
Linux Shell

Linux Shell

Shell ir plaši iedalīts divās kategorijās -



  • Komandrindas apvalks
  • Grafiskais apvalks

Komandrindas apvalks

Shell var piekļūt lietotāji, izmantojot komandrindas interfeisu. Tiek nodrošināta īpaša programma ar nosaukumu Terminal operētājsistēmā Linux/macOS vai Command Prompt operētājsistēmā Windows OS, lai ievadītu cilvēkiem lasāmas komandas, piemēram, cat, ls utt., un pēc tam tā tiek izpildīta. Pēc tam rezultāts lietotājam tiek parādīts terminālī. Terminālis Ubuntu 16.4 sistēmā izskatās šādi -

linux komandrinda

linux komandrinda

Iepriekš redzamajā ekrānuzņēmumā ls komanda ar -l opcija tiek izpildīta. Tas uzskaitīs visus pašreizējā darba direktorijā esošos failus garā saraksta formātā.
Darbs ar komandrindas čaulu ir nedaudz sarežģīts iesācējiem, jo ​​ir grūti iegaumēt tik daudz komandu. Tas ir ļoti spēcīgs; tas ļauj lietotājiem saglabāt komandas failā un izpildīt tās kopā. Tādā veidā jebkuru atkārtotu uzdevumu var viegli automatizēt. Šos failus parasti sauc par sērijveida failiem sistēmā Windows un Apvalks Skripti Linux/macOS sistēmās.

Grafiskie apvalki

Grafiskie apvalki nodrošina iespēju manipulēt ar programmām, kuru pamatā ir grafiskais lietotāja interfeiss (GUI), ļaujot veikt tādas darbības kā logu atvēršana, aizvēršana, pārvietošana un izmēru maiņa, kā arī fokusa pārslēgšana starp logiem. Window OS vai Ubuntu OS var uzskatīt par labu piemēru, kas nodrošina lietotājam GUI mijiedarbībai ar programmu. Lietotājiem nav jāievada komandas katrai darbībai. Tipisks GUI Ubuntu sistēmā -

GUI Shell

GUI Shell

vb un vb tīkls

Linux sistēmām ir pieejami vairāki apvalki, piemēram -

  • BASH (Bourne Again SHell) – tas ir visplašāk izmantotais apvalks Linux sistēmās. Tas tiek izmantots kā noklusējuma pieteikšanās apvalks Linux sistēmās un MacOS. To var instalēt arī operētājsistēmā Windows.
  • CSH (C SHell) – C apvalka sintakse un tās lietojums ir ļoti līdzīgs C programmēšanas valodai.
  • KSH (Korn SHell) — Korn Shell bija arī POSIX Shell standarta specifikāciju u.c. pamats.

Katrs apvalks veic vienu un to pašu darbu, taču saprot dažādas komandas un nodrošina dažādas iebūvētās funkcijas.

c programmēšanas piemēru programmas

Kas ir terminālis?

Programma, kas ir atbildīga par saskarnes nodrošināšanu lietotājam, lai viņš/viņa varētu piekļūt čaulai. Tas būtībā ļauj lietotājiem ievadīt komandas un redzēt šo komandu izvadi teksta interfeisā. Terminālī tiek izpildīti lieli skripti, kas tiek rakstīti, lai automatizētu un veiktu sarežģītus uzdevumus.


Lai piekļūtu terminālim, vienkārši meklējiet meklēšanas lodziņā termināli un veiciet dubultklikšķi uz tā.

atvērts terminālis

Šeit jūs varat redzēt, kā terminālis izskatās Red Hat Linux.

terminālis

Shell skriptēšana

Parasti čaulas ir interaktīvas, kas nozīmē, ka tās pieņem komandas kā ievadi no lietotājiem un izpilda tās. Tomēr dažreiz mēs vēlamies regulāri izpildīt vairākas komandas, tāpēc mums katru reizi terminālī ir jāievada visas komandas.

Tā kā apvalks var arī pieņemt komandas kā ievadi no faila, mēs varam ierakstīt šīs komandas failā un izpildīt tās čaulā, lai izvairītos no šī atkārtotā darba. Šos failus sauc Shell skripti vai Shell programmas . Shell skripti ir līdzīgi sērijveida failam MS-DOS. Katrs čaulas skripts tiek saglabāts ar `.sh` faila paplašinājums, piemēram, myscript.sh.

Apvalka skriptam ir sintakse tāpat kā jebkurai citai programmēšanas valodai. Ja jums ir iepriekšēja pieredze ar kādu programmēšanas valodu, piemēram, Python, C/C++ utt. Būtu ļoti viegli sākt ar to.

Apvalka skripts sastāv no šādiem elementiem:

  • Shell Keywords – if, else, break utt.
  • Shell komandas - cd, ls, echo, pwd, touch utt.
  • Funkcijas
  • Kontroles plūsma – ja..tad..cits, korpuss un čaulas cilpas utt.

Kāpēc mums ir nepieciešami čaulas skripti?

Ir daudz iemeslu čaulas skriptu rakstīšanai:

  • Lai izvairītos no atkārtota darba un automatizācijas
  • Sistēmas administratori izmanto čaulas skriptu rutīnas dublēšanai.
  • Sistēmas uzraudzība
  • Jaunas funkcionalitātes pievienošana apvalkam utt.

Dažas čaulas skriptu priekšrocības

  • Komanda un sintakse ir tieši tādas pašas kā tās, kas tieši ievadītas komandrindā, tāpēc programmētājiem nav jāpārslēdzas uz pilnīgi citu sintaksi.
  • Apvalka skriptu rakstīšana ir daudz ātrāka
  • Ātrs sākums
  • Interaktīvā atkļūdošana utt.

Daži čaulas skriptu trūkumi

  • Ir tendence uz dārgām kļūdām, viena kļūda var mainīt komandu, kas var būt kaitīga.
  • Lēns izpildes ātrums
  • Valodas sintakses vai ieviešanas dizaina nepilnības
  • Nav piemērots lieliem un sarežģītiem uzdevumiem
  • Nodrošiniet minimālu datu struktūru atšķirībā no citām skriptu valodām. utt.

Vienkārša čaulas skriptēšanas demonstrācija, izmantojot Bash Shell

Ja strādājat ar termināli, kaut ko šķērsojat direktoriju dziļumos. Tad, lai ceļā nonāktu dažiem direktorijiem, mums ir jāizpilda šāda komanda, kā parādīts zemāk, lai nokļūtu python direktorijā:

nokļūt python direktorijā:

nokļūt python direktorijā:

Tas ir diezgan nomākta, tāpēc kāpēc gan mums nevar būt utilīta, kurā mums vienkārši jāievada direktorija nosaukums, un mēs varam tieši pāriet uz to, neizpildot CD ../ komandu atkal un atkal. Saglabājiet skriptu kā jump.sh

atšķirība starp divām stīgām python
bash
# !/bin/bash # A simple bash script to move up to desired directory level directly function jump() {  # original value of Internal Field Separator  OLDIFS=$IFS  # setting field separator to '/'  IFS=/  # converting working path into array of directories in path  # eg. /my/path/is/like/this  # into [, my, path, is, like, this]  path_arr=($PWD)  # setting IFS to original value  IFS=$OLDIFS  local pos=-1  # ${path_arr[@]} gives all the values in path_arr  for dir in '${path_arr[@]}'  do  # find the number of directories to move up to  # reach at target directory  pos=$[$pos+1]  if [ '' = '$dir' ];then  # length of the path_arr  dir_in_path=${#path_arr[@]}  #current working directory  cwd=$PWD  limit=$[$dir_in_path-$pos-1]  for ((i=0; i; i++))  do  cwd=$cwd/..  done  cd $cwd  break  fi  done }>

Pagaidām mēs nevaram izpildīt čaulas skriptu, jo tam nav atļauju. Mums tas jāpadara izpildāms, ierakstot šādu komandu -

$ chmod +x ceļš/uz/our/file/jump.sh

Tagad, lai tas būtu pieejams katrā termināļa sesijā, mums tas ir jāievieto .bashrc failu.

.bashrc ir čaulas skripts, ko Bash shell palaiž ikreiz, kad tas tiek interaktīvi startēts. .bashrc faila mērķis ir nodrošināt vietu, kur varat iestatīt mainīgos, funkcijas un aizstājvārdus, definēt mūsu uzvedni un definēt citus iestatījumus, kurus mēs vēlamies izmantot ikreiz, kad atveram jaunu termināļa logu.

Tagad atveriet termināli un ierakstiet šādu komandu:

java masīvs sarakstā

$ echo avots ~/path/to/our/file/jump.sh>> ~/.bashrc

Tagad atveriet savu termināli un izmēģiniet jauno lēciena funkcionalitāti, ierakstot šādu komandu-

$ jump dir_name

tāpat kā zemāk redzamajā ekrānuzņēmumā:

lēkt dir_name

lēkt dir_name

Secinājums

Šajā rakstā mēs uzzinājām par galvenajām Linux sistēmu daļām: kodolu, kas kontrolē visu, apvalku, kas ļauj mijiedarboties ar operētājsistēmu, un termināli, mūsu saskarni komandu došanai. Mēs izpētījām komandrindas un grafiskos apvalkus, piemēram, BASH, un sapratām, ka terminālis ir vieta, kur mēs ierakstām komandas. Rakstā tika iepazīstināts ar čaulas skriptēšanu, veidu, kā automatizēt uzdevumus, izmantojot vienkāršus skriptus, un apspriestas to izmantošanas priekšrocības un trūkumi. Praktisks piemērs demonstrēja skripta izveidi ātrai direktoriju navigācijai. Visbeidzot, mēs redzējām, kā panākt, lai skripts darbotos un kļūtu pieejams katrā termināļa sesijā. Šis raksts ir iesācējiem draudzīgs ceļvedis Linux čaulu un čaulas skriptu izpratnei un lietošanai. linux ir laba valoda, tā ir rakstīta Linux valodā