Beginnersgids tot BASH - Deel 1 - Hello World

Daar is baie gidse op die internet wat wys hoe om Shell-skripte te skep deur gebruik te maak van BASH. Hierdie gids is daarop gemik om 'n effens ander spin te gee omdat dit geskryf is deur iemand wat baie min skulpskripservaring het.

Nou kan jy dink dat dit 'n dom idee is, maar ek vind dat sommige gidse met jou praat, asof jy alreeds 'n kenner is en ander gidse te lank neem om te jaag.

Terwyl my LINUX / UNIX skulp skripservaring beperk is, is ek 'n sagteware-ontwikkelaar deur handel en ek is 'n dab hand by scripting tale soos PERL, PHP en VBScript.

Die punt van hierdie gids is dat jy sal leer soos ek leer en enige inligting wat ek ophaal, sal ek aan jou oorhandig.

Aan die gang kom

Daar is natuurlik baie teorie wat ek dadelik aan jou kan oordra, soos om die verskillende tipes skulp te beskryf en die voordele van die gebruik van BASH oor KSH en CSH.

Die meeste mense wanneer hulle iets nuuts leer, wil binnekort spring en eers met 'n paar praktiese lesse begin en met die oog daarop gaan ek jou nie met trivia boor wat nie nou belangrik is nie.

Al wat jy nodig het om hierdie gids te volg, is 'n teksredakteur en 'n terminale hardloop BASH (die standaarddop op die meeste Linux-verspreidings).

Teksredakteurs

Ander gidse wat ek gelees het, het voorgestel dat u 'n teksredakteur benodig wat kleurkodering van opdragte bevat en die aanbevole redakteurs is óf VIM of EMACS .

Kleurkodering is lekker, aangesien dit die opdragte beklemtoon terwyl jy dit tik, maar vir die absolute beginner kan jy die eerste paar weke die VIM en EMACS leer sonder om 'n enkele kode te skryf.

Uit die twee verkies ek EMACS, maar om eerlik te wees, verkies ek om 'n eenvoudige redakteur soos nano , gedit of blaarband te gebruik.

As jy op jou eie rekenaar skrifte skryf en jy weet dat jy altyd toegang tot 'n grafiese omgewing het, dan kan jy die redakteur kies wat die beste vir jou werk en dit kan grafies wees soos GEdit of 'n redakteur wat direk in die terminale loop. soos nano of vim.

Vir die doeleindes van hierdie gids gebruik ek nano, aangesien dit natief op die meeste Linux-verspreidings geïnstalleer is en dit is dus waarskynlik dat u toegang sal hê.

Die opening van 'n terminaal venster

As jy 'n Linux-verspreiding met grafiese lessenaar soos Linux Mint of Ubuntu gebruik, kan jy 'n terminaal venster oopmaak deur Ctrl + ALT + T te druk.

Waar om jou skrifte te plaas

Vir die doeleindes van hierdie tutoriaal kan u u skrifte in 'n gids onder u tuisblad plaas.

Binne 'n terminale venster maak seker dat jy in jou huismap is deur die volgende opdrag te tik:

CD ~

Die cd-opdrag staan ​​vir die veranderingsgids en die tilde (~) is 'n kortpad vir u tuisgids.

U kan seker maak dat u op die korrekte plek is deur die volgende opdrag te tik:

PWD

Die pwd-opdrag sal jou jou huidige werkkaart vertel (waar jy in die gidsboom is). In my geval het dit teruggekeer / huis / gary.

Nou sal jy natuurlik nie jou skrifte reguit in die tuisgids wil plaas nie, so skep 'n gids genaamd skrifte deur die volgende opdrag te tik.

mkdir skrifte

Verander in die nuwe skrifmap deur die volgende opdrag te tik:

CD scripts

Jou eerste skrif

Dit is gebruikelik wanneer jy leer hoe om te program om die eerste program te maak, bloot die woorde "Hello World" uit te voer.

Voer die volgende opdrag in van jou skripkieslys:

nano helloworld.sh

Voer nou die volgende kode in die nano-venster in.

#! / bin / bash echo "hello world"

Druk Ctrl + O om die lêer te stoor en CTRL + X om nano te verlaat.

Die skrif self is soos volg saamgestel:

Die #! / Bin / bash moet ingesluit word bo aan al die skrifte wat jy skryf, aangesien dit die tolk en die bedryfstelsel kan weet hoe om die lêer te hanteer. Eintlik onthou net om dit in te skryf en vergeet hoekom jy dit doen.

Die tweede reël het 'n enkele opdrag genaamd echo wat die teks wat dadelik volg, uitstuur.

Let daarop dat as jy meer as een woord wil vertoon, jy dubbele aanhalings (") rondom die woorde moet gebruik.

U kan nou die script hardloop deur die volgende opdrag te tik:

Sh helloworld.sh

Die woorde "hallo wêreld" moet verskyn.

'N Ander manier om skrifte uit te voer is soos volg:

./helloworld.sh

Die kanse is dat as jy dadelik daardie bevel in jou terminale uitvoer, sal jy 'n toestemmingsfout kry.

Om toestemmings toe te staan ​​om die skrif op hierdie manier uit te voer, tik die volgende:

sudo chmod + x helloworld.sh

So, wat het eintlik daar gebeur? Hoekom was jy in staat om sh helloworld.sh te hardloop sonder om toestemmings te verander, maar hardloop ./helloworld.sh het 'n probleem veroorsaak?

Die eerste metode laai die bash-tolk wat die helloworld.sh as 'n inset gebruik en werk uit wat daaraan gedoen moet word. Die bash tolk het reeds toestemming om te hardloop en moet net die opdragte in die skrip uitvoer.

Die tweede metode laat die bedryfstelsel uitwerk wat met die script te doen het en daarom vereis dit 'n uitvoerbare bietjie om uit te voer.

Bogenoemde skrip was ok, maar wat gebeur as jy die aanhalingstekens wil vertoon?

Daar is verskillende maniere om dit te bereik. Byvoorbeeld, jy kan 'n terugslag gee voor die aanhalingstekens soos volg:

eggo \ "hallo wêreld \"

Dit sal die uitset "hallo wêreld" produseer.

Wag maar 'n oomblik, wat as jy wil hê \ "hallo wêreld \" te vertoon?

Wel, jy kan ook die ontsnapping karakters ontsnap

echo \\ "\" hello world \\ "\"

Dit sal die uitset \ "hallo wêreld \" produseer.

Nou weet ek wat jy dink. Maar ek wil regtig \\ "\" hallo wêreld \\ "\" vertoon

Die gebruik van eggo met al hierdie ontsnapping karakters kan nogal dom. Daar is 'n alternatiewe opdrag wat u genoem printf kan gebruik.

Byvoorbeeld:

printf '% s \ n' '\\ "\" hallo wêreld \\ "\"'

Let daarop dat die teks wat ons wil vertoon, tussen enkel-aanhalings is. Die printf-opdrag gee teks uit u skrif uit. Die% s beteken dat dit 'n string sal vertoon, die \ n lewer 'n nuwe reël uit.

opsomming

Ons het nie regtig baie grond in deel een gedek nie, maar hopelik het u u eerste skrif werk.

In die volgende gedeelte sal ons kyk na die verbetering van die hello wêreld script om teks in verskillende kleure te vertoon, insetparameters, veranderlikes te aanvaar en te hanteer en u kode te reageer.