Bash

Programvare Bash
Skjermbilde av en enkel BASH-økt på Gentoo GNU / Linux
SjangerShell
UtviklerChet Ramey
Dato for første versjon8. juni 1989
Siste versjon5.1.16 (5. januar 2022)
Siste  alfa5,2-alfa (20. januar 2022)
OperativsystemMultiplattform
SpråkC.
TillatelseGNU GPL v3 +
( gratis lisens )
Nettstedwww.gnu.org/software/bash/
Bash
programmeringsspråk
ForfatterChet Ramey , Brian Fox
Opprinnelsesdato1989
Siste versjon5.1.16 (5. januar 2022) og 5.2-alfa (20. januar 2022)
Bruksystemskripting
Paradigmerprosedyreprogrammering
Skrivingsvak
Påvirket avALGOL 68, Bourne-skall , C-skall og Korn-skall
Referanseimplementering
TillatelseGNU GPL v3 +
Nettstedwww.gnu.org/software/bash/

Bash ( akronym for b ourne a gain shell ) er et tekstlig skall av GNU - prosjektet som brukes i Unix og Unix-lignende operativsystemer , som GNU/Linux . I macOS var det standardskallet opp til macOS Mojave , mens det fra macOS Catalina og utover fortsatt er til stede, men ikke lenger som standard [1] . Bash er også tilgjengelig for Microsoft Windows -systemer (se for eksempel Cygwin og msys / msys2 bash).

Også kalt Bourne-skall etter den opprinnelige forfatteren Stephen Bourne , utvidelsen av akronymet bash , Bourne again shell , betyr bokstavelig talt et annet Bourne-skall , men Bourne har igjen samme uttale som født på nytt , dvs. gjenfødt og skaper den endelige definisjonen skallet gjenfødt .

Beskrivelse

Funksjoner

Teknisk sett er bash en avansert klone av standard Unix-skallet ( /bin/sh ). Andre alternative og populære skjell å bash er Korn-skallet , C-skallet , Zsh og tcsh .

Det er en kommandotolk som lar brukeren kommunisere med operativsystemet gjennom en rekke forhåndsdefinerte funksjoner , eller å kjøre programmer og skript.

Bash er i stand til å utføre kommandoene som sendes til den, ved å bruke input- og output- omdirigering for å kjøre flere programmer i kaskade i en programvarepipeline , og sende utdataene fra den forrige kommandoen som inngangen til neste kommando.

I tillegg til dette gir det et enkelt innfødt skriptspråk som lar deg utføre mer komplekse oppgaver, ikke bare ved å samle en rekke kommandoer i et skript , men også ved å bruke variabler , funksjoner og flytkontrollstrukturer .

Bash og POSIX-standarden

Bashs standardoppførsel er forskjellig fra POSIX -standarden , men den kan oppnås på fire måter:

Filer lest ved oppstart

Ved oppstart prøver bash automatisk å laste en serie filer:

Når du går ut av et interaktivt påloggingsskall, laster bash inn filen som .bash_logoutligger i brukerens hjem (hvis tilgjengelig).

Brukeren kan endre filene i hjemmekatalogen for å tilpasse arbeidsmiljøet.

Når bash startes ikke-interaktivt (for eksempel for å kjøre et shell - skript ) sjekker den om miljøvariabelen BASH_ENV eksisterer, eller ENVi så fall laster den filen spesifisert av verdien til variabelen (hvis bash startes i POSIX -modus sjekker den bare ENV). Den fortsetter deretter med å utføre resten (skript eller annet).

Forklarende eksempler

Følgende skript lar deg opprette et arkiv i " /tmp/my-backup.tar.gz" som inneholder hele din personlige mappe (med tanke på at " ~" representerer " "): /home/proprionomeutente

#! / bin / bash tar -vzcf /tmp/home.tgz ~

Et annet eksempel for Debian -baserte systemer er å kunne oppdatere og rydde opp i systemet med følgende skript:

#! / bin / bash sudo apt-get oppdatering sudo apt-get oppgradering sudo apt-get dist-upgrade sudo apt-get autoclean sudo apt-get clean

Ved å lage en fil med innholdet ovenfor i en av katalogene oppført av miljøvariabelen og tildele den utførelsestillatelsene, kan du få et praktisk og enkelt verktøy som kan brukes akkurat som alle andre kjørbare filer . $PATH

Betingede strukturer

Den sammenligner om filene " file_a" og " " er identiske ved å bruke cmpfile_b - kommandoen ( omdirigerer standardutgangen og standardfeilen til / dev / null for å skjule meldingene), og skriver resultatet :

#! / bin / bash if cmp file_a file_b & > / dev / null ; deretter ekko "Filene a og b er identiske." else echo "Filene a og b er forskjellige." fi

Sjekk om filen " prova.txt" eksisterer og skriv en melding om den:

#! / bin / bash if [ -f test.txt ] ; ekko deretter "Proof.txt-filen eksisterer." else echo "Test.txt-filen eksisterer ikke eller er ikke en fil" fi

Den ber om en inndatalinje og viser en melding basert på innholdet:

#! / bin / bash echo "Skriv noe og trykk Enter:" lese linjen case " $ line " in one ) echo "Du skrev 'uno'" ;; to | three ) echo "Du skrev 'to' eller 'tre'" ;; q * ) echo "Du skrev noe som begynner med 'q'" ;; * ) echo "Du skrev noe du ikke vet" ;; heksac

Merknader

  1. ^ Bruk zsh som standard skall på Mac , på Apple Support . Hentet 7. mai 2021 .
  2. ^ Bash Variables , på Bash Reference Manual . Hentet 4. januar 2009 .
  3. ^ The Set Builtin , Bash Reference Manual . Hentet 2. januar 2009 .

Bibliografi

Relaterte elementer

Andre prosjekter

Eksterne lenker