Programmering i bash - del 1

Mens vi vanligvis bruker det til administrasjons- eller filhåndteringsoperasjoner, er comfort de Linux utvider funksjonaliteten langt utover dette formålet, slik at vi kan programmere skript Denne guiden er ikke ment å være en fullstendig referanse til Bash-programmering, men snarere en introduksjon til de grunnleggende kommandoene og strukturene, som vil tillate oss å utvide kraften til vårt GNU / Linux-system.

Hva er et "skript"?

I utgangspunktet sier vi at det er en fil som inneholder kode skrevet i et bestemt programmeringsspråk som systemet bruker til en bestemt oppgave. Det trenger ikke å ha et eksternt inndata eller grafisk grensesnitt, men det må føre til at bearbeidede data sendes ut (selv om brukeren ikke ser det).

Språket som Bash bruker, er definert av sin egen tolk og kombinerer syntaksen til andre skjell, for eksempel Korn-skallet (ksh) eller C-skallet (csh). Mange av kommandoene som vanligvis brukes i konsollen, kan også brukes i skript, bortsett fra de som strengt gjelder en bestemt distribusjon.

Strukturen til et skript

For å begynne med må vi ha en tekstredigerer og et ønske om å programmere. Filene som vi lagrer med en .sh-utvidelse, kan kjøres (eller tolkes) av konsollen, så lenge den første linjen er følgende:

#! / Bin / bash

Dette forteller systemet å bruke konsollen til å kjøre filen. I tillegg lar # tegnet deg skrive kommentarer. For å lage det enkleste eksemplet legger vi til en linje til, sett i følgende bilde:

Ekkokommandoen viser en melding på skjermen, i dette tilfellet den typiske "Hello world!" Hvis vi lagrer den og utfører den med konsollen, ser vi resultatet.

Grunnleggende kommandoer

Følgende kommandoer er vanlige og veldig nyttige for alle typer programmer. Vi presiserer at det er mange flere, men foreløpig vil vi dekke følgende.

Aliaser: tillater at en streng med ord erstattes av en kortere, slik at koden kan reduseres.

# opprett et alias som heter per med adressen til mappen #Downloads alias per = '/ home / user / Downloads' # Hver gang vi ønsker å bruke det, må vi bare ringe # det nye ordet per # For å ødelegge det aliaset bruker vi unalias unalias pr.

pause: lar deg umiddelbart avslutte en for, mens, til eller velge sløyfe (vi vil studere sløyfer i detalj senere)

# Opprett en sløyfe som tildeler tallene fra 1 til 5 # for hver "sving av sløyfen" for telleren i 1 2 3 4 5 gjør # Vi skriver ut gjeldende verdi av variabelen # teller, som blir analysert av tegnet $ echo " $ counter ”#Hvis tellerverdien er lik 3 hvis [$ counter –eq 3], da # Break går ut av loop for break fi done

fortsett - ligner på å bryte, bortsett fra at den ignorerer gjeldende sløyfe og går til neste.

# Opprett en sløyfe som tildeler tallene fra 1 til 5 # for hver "sving av sløyfen" for telleren i 1 2 3 4 5 gjør # Hvis tellerverdien er lik 3 hvis [$ teller –ekv 3] så # Fortsett forhindrer at resten av den aktuelle syklusen blir analysert ved å hoppe til neste runde, det vil si at #verdi 3 ikke blir skrevet ut. fortsett fi ekko "$ counter" gjort

erklære: deklarerer variabler og tildeler dem verdier, akkurat som typesett (de fungerer på samme måte). Vi kan kombinere det med noen alternativer: -Jeg erklærer heltall; -r for skrivebeskyttede variabler, hvis verdi ikke kan endres; –A for arrays eller “arrays”; -f for funksjoner; -x for variabler som kan "eksporteres" utenfor miljøet til selve skriptet.

erklære –i num = 12 erklære –x pi = 3.14

hjelp: viser hjelp til en bestemt kommando.

jobber: viser kjørende prosesser.

#Med –c viser vi navnet på kommandoene, med –p # pid (prosess-id) for hver prosess. jobber -cp

la: evaluere et aritmetisk uttrykk

la a = 11 la a = a + 5 # Til slutt skriver vi ut verdien av a som er 16 ekko "11 + 5 = $ a"

lokal: opprett lokale variabler, som helst bør brukes i funksjonene i selve skriptet for å unngå feil. Du kan bruke de samme funksjonene som erklær kommandoen.

local v1 = "Dette er en lokal variabel"

logout: lar deg logge ut av en Shell helt; nyttig i tilfeller der vi jobber med mer enn ett skallvindu, der kommandoen exit vil bare la ett vindu avsluttes om gangen.

printf: lar deg skrive ut data og formatere dem. Det har mange alternativer, så vi vil nevne noen få.

#% f skrives ut som et flytende tall, n for ny # linje printf "% fn" 5 5.000000 # & d lar passere desimaltall som argumenter printf "Det er% d ordrer verdsatt i% d dollar. n" 20 500 Det er 20 ordrer verdt 500 Dollar.

les: les en linje fra standardinngang (modul som brukes for å laste inn data via tastaturet for eksempel). Vi kan passere alternativer som: -t for å gi en lesegrense tid; -a slik at hvert ord tildeles en posisjon i aname-arrayet; -d å bruke en avgrenser som vil bli skrevet på slutten av linjen; blant andre.

ekko "Skriv inn navnet ditt og trykk ENTER" #Les variabelnavnet lese navn ekko "Ditt navn er $ name"

type: beskriver en kommando og dens oppførsel. Det kan være nyttig å finne ut datadefinisjonene for hver kommando.

type –a '[' #type forteller oss at [er en Shell innebygd kommando [er en Shell innebygd # -a lar deg finne katalogene som inneholder # en kjørbar med det skrevne navnet. [er / usr / bin / [

ulimit: begrenser tilgangen og bruken av visse systemressurser til prosesser, ideell for programmer som tillater administrative endringer eller som er rettet mot forskjellige typer brukere. Når vi setter en grense, skriver vi et tall som representerer kilobyte av grensen.

#Vi ser våre nåværende grenser ulimit –a # -f gjør det mulig å begrense brukere til å ikke kunne # opprette filer større enn 512000 Kb (500 #Mb) ulimit –f 512000 # -v begrenser det virtuelle minnet i prosessen. ulimit –v 512000

vent: vent på at en bestemt prosess eller jobb skal utføres for å fortsette.

# Skriptet venter på at prosessen med pid # 2585 skal utføres

vent 2585

Andre nyttige kommandoer som vi kan legge til i skript, er representert med symboler.

!!: kjør den siste kommandoen igjen

! wer: utfører den siste kommandoen som startet med uttrykket “wer”.

'==', '! =', '>', '<', '> =' og '<=': relasjonsoperatorer.

|: OR-operatøren pleide generelt å bli med i to regulære uttrykk.

: escape-kommando som lar deg formatere uttrykk. For eksempel: a for et lydvarsel, n for ny linje, b for tilbaketast osv.

Takk Juan Carlos Ortiz!

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   Middels vanskelig sa

    Flott! Uansett 2 kommentarer: Ubuntu-taggen er halvparten for mange, da den generaliserer noe som er generisk. Og hvis disse opplæringene fortsetter å gå videre, ville det være bra hvis de er knyttet til hverandre ....
    Annet enn det, er dette trekket interessant!

  2.   La oss bruke Linux sa

    Godt bidrag! Flott!

  3.   Giovanni escobar sosa sa

    Bare manglende referanser for de som ønsker å komme mer inn i saken. Noen gode, men ikke så lette å finne i våre land
    - En praktisk guide til Linux-kommandoer, redaktører og shell-programmering, Mark Sobell (kapittel 8)
    - Pro Bash Programming, Chris FA Johnson (selv om dette er for de som har andre referanser eller litt mer kunnskap).

    God artikkel.

  4.   La oss bruke Linux sa

    God dato! Takk skal du ha!

  5.   Patricio Dorantes Jamarne sa

    : @ "Logg inn som" -funksjonen slettet min forrige kommentar, så jeg oppsummerer den videre:
    jobber -cp
    bash: jobber: -c: ugyldig alternativ
    jobber: bruk: jobber [-lnprs] [jobspec ...] eller jobber -x kommando [args]

    -eq -gt -lt aksepterer ikke desimaltegnvariabler, mellom forum og forum oppdaget jeg at bc er en god alliert:
    hvis [`ekko 9.999> 10 | bc` -eq 1]; deretter
    ekko "9.999 er større enn 10, sørg for at prosessoren din fortsatt fungerer"
    ellers
    ekko «9.999 er ikke større enn 10, alt fungerer normalt
    fi

  6.   Ikke fra Brooklyn sa

    Dette innlegget oppsummerer godt alle generellene med bash scripting:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    På dette nettstedet finner du mange spørsmål og svar om bash-særegenheter:
    http://unix.stackexchange.com/questions/tagged/bash

    Her er noen kule skript, og hei, du kan lære dem ved å lese andres skript:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   Ikke fra Brooklyn sa

    Du har rett i det du sier, bortsett fra bash. Hvert system jeg har sett har bash in / bin / bash.

    Men for python, perl, rubin, etc, er det greit å bruke det. jeg gjør

  8.   Guille sa

    Tilfeldigvis, på college bruker vi bash scripting, så dataene er 10, veldig bra!

  9.   alex jeg så sa

    en pdf-versjon å laste ned ville være bra !! 😀

  10.   Marco Antonio De Fuentes sa

    Veldig bra side. Jeg fant endelig noe nyttig. Takk skal du ha.