da.phhsnews.com


da.phhsnews.com / Begynders vejledning til Shell Scripting: Grundlæggende

Begynders vejledning til Shell Scripting: Grundlæggende


Begrebet "shell scripting" bliver ofte nævnt i Linux fora, men mange brugere er ikke bekendt med det. At lære denne nemme og kraftfulde programmeringsmetode kan hjælpe dig med at spare tid, lære kommandolinjen bedre og forbyde kedelige filhåndteringsopgaver.

Hvad er Shell Scripting?

At være en Linux-bruger betyder at du spiller rundt med kommando- linje. Ligesom det eller ej, er der kun nogle ting, der gøres meget lettere via denne grænseflade end ved at pege og klikke. Jo mere du bruger og lærer kommandolinjen, desto mere ser du dets potentiale. Nå er kommandolinjen selv et program: skallen. De fleste Linux distros i dag bruger Bash, og dette er hvad du virkelig indtaster kommandoer i.

Nu kan nogle af jer, der brugte Windows, før de brugte Linux, huske batch-filer. Disse var små tekstfiler, som du kunne udfylde med kommandoer til at udføre, og Windows ville køre dem igen. Det var en smart og pæn måde at få nogle ting gjort, som at køre spil i dit gymnasielaboratorium, da du ikke kunne åbne systemmapper eller oprette genveje. Batch-filer i Windows, mens det er nyttigt, er en billig efterligning af shell-scripts.

Shell-scripts giver os mulighed for at programmere kommandoer i kæder og få systemet til at udføre dem som en scripted event, ligesom batch-filer. De giver også mulighed for langt mere nyttige funktioner, såsom kommandosubstitution. Du kan påberåbe en kommando, som dato, og bruge den er output som en del af en filnavneordning. Du kan automatisere sikkerhedskopier, og hver kopieret fil kan have den aktuelle dato vedhæftet til slutningen af ​​navnet. Scripts er heller ikke kun påbud af kommandoer. De er programmer i sig selv. Scripting giver dig mulighed for at bruge programmeringsfunktioner - som for 'loops', hvis / da / ellers udsagn og så videre - direkte i dit operativsystems grænseflade. Og du behøver ikke at lære et andet sprog, fordi du bruger det, du allerede kender: kommandolinjen.

Det er virkelig skriptets kraft, tror jeg. Du kommer til at programmere med kommandoer, du allerede ved, mens du lærer hæfteklammer fra de fleste større programmeringssprog. Har du brug for at gøre noget gentagne og kedelige? Script det! Har du brug for en genvej til en virkelig betænkelig kommando? Script det! Vil du bygge en rigtig let at bruge kommandolinjegrind til noget? Script det!

Før du begynder

Før vi begynder vores scriptserie, lad os dække nogle grundlæggende oplysninger. Vi bruger bash shell, som de fleste Linux distributioner bruger indbygget. Bash er tilgængelig for Mac OS-brugere og Cygwin på Windows. Da det er så universelt, bør du kunne scripte uanset din platform. Desuden, så længe alle de kommandoer, der refereres til, kan scripts arbejde på flere platforme med lidt eller ingen tweaking påkrævet.

Scripting kan nemt gøre brug af "administrator" eller "superuser" privilegier, så det er bedst at teste scripts før du sætter dem i arbejde. Brug også sund fornuft som at sikre, at du har sikkerhedskopier af de filer, du er ved at køre et script på. Det er også meget vigtigt at bruge de rigtige indstillinger, som -i for kommandoen rm, så din interaktion er nødvendig. Dette kan forhindre nogle ubehagelige fejl. Læs derfor gennem scripts, du downloader og vær forsigtig med de data, du har, bare hvis tingene går galt.

I deres kerne er scripts bare almindelige tekstfiler. Du kan bruge enhver tekstredigerer til at skrive dem: gedit, emacs, vim, nano ... Denne liste fortsætter. Bare vær sikker på at gemme det som almindelig tekst, ikke som rig tekst eller et Word-dokument. Da jeg elsker den brugervenlighed, som nano giver, bruger jeg det.

Script Tilladelser og Navne

Scripter udføres som programmer, og for at dette skal ske skal de have de rette tilladelser. Du kan gøre scripts eksekverbare ved at køre følgende kommando på det:

chmod + x ~ / somecrazyfolder / script1

Dette vil give nogen mulighed for at køre det pågældende script. Hvis du vil begrænse brugen af ​​det til kun din bruger, kan du bruge dette i stedet:

chmod u + x ~ / somecrazyfolder / script1

For at kunne køre dette script skal du cd'ere i den rigtige mappe og derefter køre scriptet som dette:

cd ~ / somecrazyfolder

./ script1

For at gøre tingene lettere kan du placere scripts i en "bin" -mappe i din hjemmekatalog:

~ / bin

I mange moderne distroer er denne mappe ikke længere lavet som standard, men du kan oprette det. Dette er normalt, hvor eksekverbare filer gemmes, der tilhører din bruger og ikke til andre brugere. Ved at placere scripts her kan du bare køre dem ved at skrive deres navn, ligesom andre kommandoer, i stedet for at skulle bruge cd'en og bruge prefixet ./.

Før du navngiver et script, skal du dog kommando for at kontrollere, om du har et program installeret, der bruger det navn:

som [kommando]

Mange mennesker navngiver deres tidlige scripts "test", og når de forsøger at køre det i kommandolinjen, er intet sker. Dette skyldes, at det er i konflikt med testkommandoen, hvilket ikke gør noget uden argumenter. Vær altid sikker på, at dine scriptnavne ikke er i konflikt med kommandoer, ellers kan du finde dig selv at gøre ting, du ikke har til hensigt at gøre!

Scripting Guidelines

Som jeg nævnte tidligere, er alle script-filer i det væsentlige almindelig tekst. Det betyder ikke, at du kan skrive, hvad du vil have alt, hvad du vil. Når en tekstfil forsøges udført, skal skallene analysere dem for at få spor om, om de er scripts eller ej, og hvordan man håndterer alt korrekt. På grund af dette er der et par retningslinjer, du skal vide.

  1. Hvert script skal være med "#! / Bin / bash"
  2. Hver ny linje er en ny kommando
  3. Kommentar linjer starter med en #
  4. Kommandoer er omgivet af ()

Hash-Bang Hack

Når en skal analyserer gennem en tekstfil, er den mest direkte måde at identificere filen som et script ved at lave din første linje:

# ! / bin / bash

Hvis du bruger en anden skal, skal du erstatte dens vej her. Kommentar linjer starter med hashes (#), men tilføjer bang (!) Og shell stien, efter at det er en slags hack, der vil omgå denne kommentare regel og vil tvinge scriptet til at udføre med den skal, som denne linje peger på.

Ny linje = Ny kommando

Hver ny linje skal betragtes som en ny kommando eller en komponent i et større system. Hvis / da / ellers vil udsagn tage over flere linjer, men hver komponent i det pågældende system er i en ny linje. Lad ikke en kommando bløde over i den næste linje, da dette kan afkorte den foregående kommando og give dig en fejl på den næste linje. Hvis din tekstredigerer gør det, skal du slukke for tekstindpakning for at være på den sikre side. Du kan slukke for tekstindpakning i nano bit, der rammer ALT + L.

Kommentar Ofte med #s

Hvis du starter en linje med en #, ignoreres linjen. Dette gør det til en kommentarlinje, hvor du kan minde dig om, hvad udgangen af ​​den foregående kommando var, eller hvad den næste kommando vil gøre. Igen skal du slukke for tekstindpakning eller bryde dig om kommentarer til flere linjer, som alle begynder med en hash. Brug af masser af kommentarer er en god praksis at holde, da det lader dig og andre mennesker nemt tilpasse dine scripts. Den eneste undtagelse er den førnævnte Hash-Bang hack, så følg ikke #s med! S. ; -)

Kommandoer er omgivet af parenteser

I ældre dage blev kommandosubstitutioner udført med enkelt tick markeringer (', deler ~ -tasten). Vi kommer ikke til at røre ved dette endnu, men da de fleste mennesker går ud og udforsker efter at have lært det grundlæggende, er det nok en god idé at nævne, at du skal bruge parenteser i stedet. Dette skyldes hovedsageligt, at når du reden - sæt kommandoer i andre kommandoer - fungerer parenteser bedre.

Dit første script

Lad os starte med et enkelt script, der giver dig mulighed for at kopiere filer og tilføje datoer til slutningen af ​​filnavnet. Lad os kalde det "datecp". Lad os først se om dette navn er i konflikt med noget:

Du kan se, at der ikke er nogen output af den kommando, så vi er alle indstillet til at bruge dette navn.

Lad os oprette en tom fil i ~ / bin mappe:

touch ~ / bin / datecp

Og lad os ændre tilladelsen nu, inden vi glemmer:

Lad os begynde at bygge vores script derefter. Åbn den fil i din valgte tekstredaktør. Som jeg sagde, kan jeg godt lide nano'ens enkelhed.

nano ~ / bin / datecp

Og lad os gå videre og sætte forudsætningen for første linje og en kommentar om, hvad dette script gør.

Næste, lad os erklære en variabel. Hvis du nogensinde har taget algebra, ved du sikkert hvad det er. En variabel giver os mulighed for at gemme oplysninger og gøre ting med det. Variabler kan "udvide", når de refereres andetsteds. Det vil sige, i stedet for at vise deres navn, vil de vise deres lagrede indhold. Du kan senere fortælle den samme variabel for at gemme forskellige oplysninger, og enhver instruktion, der opstår efter det, vil bruge de nye oplysninger. Det er en rigtig fancy pladsholder.

Hvad skal vi sætte ind variabel? Nå, lad os gemme dato og klokkeslæt! For at gøre dette, kalder vi på datakommandoen.

Se på skærmbilledet nedenfor for at opbygge output fra datakommandoen:

Du kan se det ved at tilføje forskellige variabler, der starter med% Du kan ændre kommandoens output til det ønskede. For yderligere oplysninger kan du se på den manuelle side for datakommandoen.

Lad os bruge den sidste iteration af datakommandoen "dato +% m_% d_% y-% H.% M.% S" og Brug det i vores script.

Hvis vi skulle gemme dette script lige nu, kunne vi køre det, og det ville give os output fra datakommandoen som vi ville forvente:

Men lad os gøre noget anderledes. Lad os give et variabelt navn, som date_formatted til denne kommando. Den korrekte syntaks for dette er som følger:

variable = $ (kommandooptioner argumenter)

Og for os ville vi bygge det som sådan:

date_formatted = $ (dato +% m_% d_% y-% H.% M.% S)

Dette kaldes kommandosubstitution. Vi fortæller i det væsentlige, at når variablen "date_formatted" vises, skal du køre kommandoen inden for parenteserne. Så skal uanset output, som kommandoer giver, vises i stedet for variablenes navn, "date_formatted".

Her er et eksempel script og dets output:

Bemærk at der er to mellemrum i udgangen. Rummet i citerne af ekkokommandoen og rummet foran variablen vises begge. Brug ikke mellemrum, hvis du ikke vil have dem til at dukke op. Bemærk også, at uden denne tilføjede "echo" -linje ville scriptet give absolut ingen output.

Lad os komme tilbage til vores script. Lad os næste tilføje i den kopierende del af kommandoen.

cp -iv $ 1 $ 2. $ date_formatted

Dette vil påberåbe kopikommandoen med -i og -v mulighederne. Den førstnævnte vil bede dig om bekræftelse, før du overskriver en fil, og sidstnævnte vil vise, hvad der kommer ned på kommandolinjen.

Næste kan du se, at jeg har tilføjet "$ 1" -alternativet. Ved scripting vil et dollar tegn ($) efterfulgt af et tal angive det nummererede argument af scriptet, når det blev påkaldt. For eksempel i den følgende kommando:

cp -iv Trogdor2.mp3 ringtone.mp3

Det første argument er "Trogdor2.mp3" og det andet argument er "ringtone.mp3".

Ser tilbage på vores script, kan vi se, at vi refererer til to argumenter:

Dette betyder, at når vi kører scriptet, skal vi give to argumenter for at scriptet skal køre korrekt. Det første argument, $ 1, er den fil, der vil blive kopieret, og er erstattet som "cp -iv" kommandos første argument.

Det andet argument, $ 2, vil fungere som outputfilen for den samme kommando. Men du kan også se, at det er anderledes. Vi har tilføjet en periode, og vi har henvist til variablen "date_formatted" ovenfra. Nysgerrig om hvad dette gør?

Her er hvad der sker, når scriptet køres:

Du kan se, at outputfilen er angivet som hvad jeg skrev for $ 2, efterfulgt af en periode, så udgangen af ​​datakommandoen ! Fornuftigt, right?

Nu når jeg kører kommandoen datecp, vil den køre dette script og tillade mig at kopiere enhver fil til en ny placering og automatisk tilføje dato og klokkeslæt til slutningen af ​​filnavnet. Nyttig til arkivering af ting!


Shell scripting er kernen i at gøre dit OS arbejde for dig. Du behøver ikke at lære et nyt programmeringssprog for at få det til at ske. Prøv scripting med nogle grundlæggende kommandoer derhjemme og begynd at tænke på, hvad du kan bruge dette til.

Skriver du? Har du råd til nybegyndere? Del dine tanker i kommentarerne! Der er mere at komme i denne serie!


Se din Google Maps Search History

Se din Google Maps Search History

Jeg har for nylig opdaget noget koldt om Google Maps, som jeg ikke vidste, eksisterede. Et par uger tilbage havde jeg søgt efter en lokal restaurant, som en ven fortalte mig om, og nu hvor jeg havde lidt fritid til at tjekke det, kunne jeg ikke huske navnet på stedet! Da jeg ikke søgte det på Google, blev det ikke vist i min Google-webhistorik, hvilket er det første sted, jeg kontrollerede.Så d

(How-to)

Sådan samarbejder du om noter i iOS 10

Sådan samarbejder du om noter i iOS 10

IOS 'Notes-appen er en bekvem måde at huske de gode ideer, du oplever, og alle de ting, du skal gøre. Appen er udviklet gennem årene, og iOS 10 tilføjer endnu flere funktioner - herunder samarbejde. Samarbejde i Notes er ikke så udførligt som i Google Docs, det er mere passivt samarbejde. Det er dog nyttigt for simpel deling af købmandslister, festplanlægningslister og rejseplaner med venner og familie.

(how-to)