Hvilken Unix-skal skal jeg bruge?

Afsløring: Din support hjælper med at holde webstedet kørt! Vi tjener et henvisningsgebyr for nogle af de tjenester, vi anbefaler på denne side.


I et computeroperativsystem er en “shell” en grænseflade, der giver brugeren mulighed for at udstede kommandoer og få adgang til systemets tjenester. Teknisk set er en grafisk brugergrænseflade (GUI) som Windows Desktop en type shell.

Men når de fleste mennesker taler om en shell, betyder de en kommandolinjegrænseflade (CLI). Dette er også kendt som en “terminal” eller bare “kommandolinjen.” Men for det meste er det bare en skal.

Hvilken Unix-skal skal jeg bruge?

Du kender muligvis allerede skaller. Kommandoprompten i Windows og appen Terminal i Mac er eksempler på skaller. Unix-systemer har typisk noget, der kalder Bash, som deres standard shell. (Det er også tilgængeligt for Windows, men er ikke standard).

Hvorfor bruge en skal?

En Unix-shell er dens kommandoprocessor. I begyndelsen var det den eneste måde, brugerne havde på at interagere med computeren. Nu er der selvfølgelig andre muligheder – f.eks. Den grafiske brugergrænseflade (GUI).

Så du måske undrer dig over, om vi overhovedet har brug for en skal. Men hvis du ser en Unix-bruger, der arbejder i en GUI, vil du bemærke, at mange af disse åbne vinduer faktisk kører Unix-skaller. Hvorfor? Fordi de er supermægtige.

GUI vs Shell

Hvad kan du gøre i en grafisk brugergrænseflade? Klik på tingene.

Du kan klikke på ting for at åbne dem, starte dem, flytte dem fra en mappe eller katalog til en anden. Og det hele er ret nemt at gøre. For meget computing er de gode!

Men kan du omdøbe tusinder af filer på én gang? Kan du søge i teksten i hvert dokument efter et bestemt mønster af tal og ord, der udgør en adresse? Find alle de billeder, der blev taget med et bestemt kamera i løbet af en bestemt periode, og anvend derefter det samme farvekorrektionsfilter på dem alle?

Brug af et shell gør det muligt hurtigt at udføre både rutinemæssige og yderst specialiserede opgaver – det giver dig mulighed for at tage næsten fuld kontrol over din computer.

Desuden giver skaller dig mulighed for at skrive scripts eller små programmer, der kan interagere direkte med operativsystemet, udføre en række kommandoer og automatisere opgaver.

Men der er mange skaller at vælge imellem. (Et af deres bedste aspekter!) I denne artikel skal vi se nærmere på de tre vigtigste skaller: C, Korn og Bash.

Unix Shell-historie

I de tidlige dage af computeren indtastede du ikke kommandoer og fik output tilbage. I stedet gav du det et stykke slagkort for at indtaste oplysninger. Først fik du punchkort tilbage som output. Men meget hurtigt blev en ændret skrivemaskine tilføjet computeren til output. Spændende på det tidspunkt, men stadig langsomt og interaktivt kun på istidstider.

Men der blev gjort fremskridt. Tastaturer blev føjet til computere – generelt som en del af en teletype, så både input og output var en del af den samme enhed. Så en rudimentær slags kommandolinje blev udviklet.

Til sidst erstattede skærme printere til output. Men dette ændrede ikke ting så meget, bortset fra at output var hurtigere.

Det var først i 1964, at tingene virkelig ændrede sig med frigivelsen af ​​Multics-operativsystemet til 36-bit mainframe-computere – især GE-600-serien.

Multics var et operativsystem, der delte tid, hvilket gjorde det muligt for flere personer at bruge computeren på samme tid. Men den store ting fra vores perspektiv er, at kommandoprocessoren (de kaldte et “shell” efter computerforsker Louis Pouzin), som altid havde været en del af operativsystemkernen, nu bare var et almindeligt program.

Dette lyder måske ikke som en big deal, men det var en enorm fremgang for computerbrugere, fordi de ikke sidder fast med den eneste grænseflade, som operativsystemet var bygget med.

Da Ken Thompson og resten af ​​banden hos AT&T oprettede Unix, de fulgte Multics, inklusive at have shell som et almindeligt program.

Den første Unix-shell blev skrevet af Thompson og blev derfor navngivet Thompson-shell. Det havde funktioner, som Unix-brugere har elsket som rør (sætter output fra et program i input til et andet) og omdirigerer (sætter output fra en streng af programmer i en fil). Men for det meste var det meget begrænset.

Men fordi skallen bare var et andet program, var det en relativt enkel sag at skrive og bruge et andet shell. Efter et par år blev det klart, at operativsystemet havde brug for noget mere. Og så flyttede folk væk fra Thompson-skallen – først til Mashey-skallen og derefter Bourne-skallen, skrevet af Stephen Bourne.

Dette var selvfølgelig ikke slutningen. Andre skaller ville komme, mest bemærkelsesværdigt: C-skallen, KornShell og nu stort set kongen af ​​alle Unix-skaller: Bash.

C Shell

Den første store konkurrent til Bourne-skallen var C-shell eller csh, som dens program er navngivet. Det bruges stadig af mange mennesker i dag, selvom det aldrig helt levede op til sit potentiale som manussprog.

Shells vs Shell scripting

Det er vigtigt at indse forskellen mellem et shell og shell scripting. En skal er det interaktive miljø – kommandolinjen, som du skriver ting i.

Shell-scripting skriver et program, der bliver fortolket af det kommandolinjemiljø som en række kommandoer, der indtastes efter hinanden. (Bemærk dog, at du effektivt kan skrive et shell-script på kommandolinjen.)

Mange Unix-brugere kan lide C Shell-miljøet og kan ikke lide scriptingsproget.

C Shell-historie

Unix-brugere var meget tilfredse med Bourne-skallen, der blev frigivet i 1977. Men Bill Joy havde en anden idé til et shell, som han frigav året efter: C-skallen.

Tanken bag C-skallen var at skabe en syntaks, der lignede mere C-programmeringssprog, som Unix var bygget på.

Men det havde en række problemer i denne henseende. Det greb dog fast som en kommandolinjeshell, fordi det var lettere at bruge med funktioner som kommandohistorier (du kunne gentage gamle roser med bare et par tastetryk) og katalogbunke (så du nemt kunne flytte rundt i filsystemet ).

Imidlertid dominerede Bourne-skallen til administrativ scripting. I løbet af 1980’erne blev både Bourne- og C-skaller imidlertid vidt brugt.

Som vi vil se, blev Bourne-skallen opdateret. Det skete også med C-skallen i form af TENEX C Shell (tcsh). Hvis du bruger C-skallen i dag, vil det sandsynligvis være i form af tcsh.

Brug af C Shell

Der er meget at lære om C-skallen. Og meget af det er meget spændende. Så læs videre.

Adgang til C Shell

Ingen af ​​de tre største operativsystemfamilier (Windows, Mac og Linux) bruger csh som standard shell.

Mac OS X og Linux

Mac OS X og de fleste Linux-distrikter inkluderer tcsh. Du kan indtaste en C-shell-terminal ved at skrive csh eller tcsh på kommandolinjen. (Mac kalder den indbyggede tcsh-tolk csh. De fleste Linux-distros bruger tcsh, men har et symbolsk link, så det at skrive begge navne fungerer det samme.)

Hvis du ikke allerede har tcsh eller csh, skal du installere det.

Microsoft Windows

C-skallen er ikke rigtig hjemmehørende i den måde Windows fungerer på. Du holder sandsynligvis bedre med det inkluderede Power Shell.

Hvis du imidlertid er fast besluttet på at bruge csh på Windows, kan du prøve Cygwin eller Hamilton C-skallen.

C Shell-scriptfiler

Hvis du vil udføre csh-filer direkte, skal du først sikre dig, at de er eksekverbare. Derefter skal du specificere, at csh-tolken skal bruges ved at placere følgende på filens første linje:

#! / Bin / csh

Syntakseksempler

Csh-syntaks er baseret på C, hvilket gør det mere konventionelt end Bourne-kode.

Her er et simpelt Bourne-shell-script:

#! / Bin / sh
lad x = 11
hvis [$ x -gt 10]
derefter
ekko "X er større end 10."
fi

Bemærk, at sammenligningen foretages ved hjælp af -gt, der kører en separat proces i stedet for en sammenligningsoperatør i mellemsprog. If-erklæringen afsluttes også af den omvendte if-fi.

Her er den samme ting i csh:

#! / Bin / csh
sæt x = 11
if ($ x > 10) derefter
ekko "X er større end 10."
Afslut Hvis

Begge kodefragmenter er let forståelige, men for C-programmerere er csh-koden mere naturlig.

C Shell Resources

Der er et stort antal ressourcer til at lære C Shell. Vi har samlet de bedste.

Online tutorials og introduktioner

  • Grymoire C Shell-tutorial: Bruce Barnett’s grundige introduktion til C-skallen.
  • C Shell scripting: en WikiBooks introduktion til brug af C Shell.
  • Brug af Tcsh Shell: C-shell-sektionen fra Mac OS X til Unix Geeks.
  • Linux Csh Command: en anden god, detaljeret teknisk reference, lidt lettere at læse end den ovenfor.

Bøger

Der er ikke mange bøger, der er specifikke for C-skallen, men der er et par gode, hvis gamle, dem.

  • Brug af csh & tcsh (1995) af Paul DuBois: dette er en klassisk bog om at arbejde med C-skallen, og den er ikke mindre relevant i dag, end den var, da den først blev udgivet. Sørg for at tjekke onlinearkivet, hvor du kan læse dele af bogen, før du køber den. Bemærk, at forfatteren er stærkt imod at bruge csh til scripting (han foretrækker Bash eller Perl), så bogen handler virkelig om at bruge C shell-terminalen, ikke om scripting.
  • Unix C Shell Field Guide (1986) af Gail Anderson: en anden klassisk tekst. Over tre årtier senere forbliver det uundværligt for seriøse csh-brugere.

På den anden side

Som vi har bemærket ovenfor, er der mange brugere, der er meget imod C-skallen, og det er en god ide at forstå hvorfor.

Gå ikke glip af Csh-programmering betragtes som skadelig for et dybtgående kig på, hvorfor mange synes, csh er forfærdeligt og aldrig bør bruges af nogen, nogensinde, til enhver tid.

Og hvis det ikke overbeviser dig, kan du læse de ti grunde til ikke at bruge C-Shell.

Skal jeg lære C-skallen?

Hvis du er et netværk eller systemadministrator i et Unix-miljø, vil du næsten helt sikkert løbe ind i C-skallen, så det er godt at i det mindste have en vis fortrolighed med det.

Tilfældige brugere og endda de fleste udviklere vil sandsynligvis være bedre tjent med en anden skal.

KornShell

KornShell, eller bare ksh, er en Unix-skal, der blev udviklet af David Korn på Bell Labs i de tidlige 1980’ere. KornShell er baseret på Bourne-shell (sh), giver komplet bagudkompatibilitet med sh, inkluderer mange C-shell-funktioner, tilføjer yderligere funktioner, der er unikke for ksh, og kører hurtigere end enten sh eller csh.

KornShell var standardskallen, der blev brugt med IBMs AIX-operativsystem, det engang populære, men nu afviklede OpenSolaris-operativsystem. Mens ksh primært er et interaktivt kommandosprog, kan det også bruges som programmeringssprog på højt niveau og er nyttigt til at skrive automatiserede scripts.

I 1983 blev ksh frigivet som et proprietært Unix-shell til Bell Labs (og senere AT&T) brugere. Det var bagudkompatibelt med sh og omfattede mange funktioner, der var lånt fra csh efter anmodning fra Bell Labs-brugere.

KornShell forblev en proprietær AT&T shell indtil år 2000, hvor det blev frigivet som open source-software.

Da ksh var proprietær software fra 1983 til 2000, sprang flere open source-skaller baseret på ksh op, hvor det mest populære var Public Domain Korn Shell (pdksh) og MirBSD Korn Shell (mksh).

Hvad kan du gøre med KornShell?

KornShell-scripting kan bruges på to forskellige måder:

  • KornShell kan bruges interaktivt til at udføre kommandoer, der er indtastet i en kommandolinjemeddelelse.
  • KornShell kan bruges programmatisk til at oprette scripts til automatisering af en lang række operativsystem- og systemadministrationsopgaver.

Shell-sprog bruges primært til at skrive kode, der lancerer andre programmer. Imidlertid kan hele scripts også skrives på shell-sprog som ksh og bruges til at automatisere enhver gentagen administrativ opgave. Nogle af de opgaver, der oftest håndteres med ksh eller andre shell-sprog, inkluderer:

  • Skrivning af scripts, der udføres, når et computersystem starter op
  • Skrivning af scripts, der automatiserer computervedligeholdelsesopgaver
  • Download og installation af applikationspakker.

Online KornShell tutorials og videoer

Den bedste online ressource for programmerere, der lige er kommet i gang med ksh er Korn Shell Scripting fra IBM DeveloperWorks.

Denne korte tutorial, som også findes i pdf, introducerer hurtigt Unix-skaller, variabler, loops, ksh-syntaks og meget mere. I de 15 minutter, der kræves for at gennemgå denne ressource, lærer du det grundlæggende, der hjælper dig med at forstå andre mere udfordrende tutorials.

James Maher, en erfaren Unix-programmør og systemadministrator, frigav en serie af 80 gratis instruktionsvideoer fra KornShell på YouTube. Disse videoer antager, at du har en vis fortrolighed med kommandolinjen, men ingen tidligere erfaring med ksh.

Hvis du allerede har ksh up and running på dit system, dækker disse videoer en masse jord inklusive variabler, debugging, arrays, lister, hvis udsagn, mønster matching, loops, funktioner og meget mere.

Du ønsker at supplere disse videoer med skriftlig træning, der giver større dybde, men disse videoer er en fremragende måde at forstærke emnerne præsenteret i skriftligt format i andre ressourcer.

Philip Brown, en Solaris-systemadministrator og erfaren programmør ved University of Southern California, har skrevet en gratis kursusstudie om Korn Shell (ksh). Vejledningen dækker emner som variabler, funktioner, omdirigering og meget mere.

Hvis du ønsker noget lidt mere akademisk, er Unix Shell-scripting med KornShell / Bash en detaljeret, elektronisk kursusuddeling. Det blev oprettet af Richard Brittain, en Research Systems Engineer i Information Technology Services-afdelingen på Dartmouth College.

KornShell Reference

Selv erfarne programmerere refererer regelmæssigt til referencer dokumenter. Her er en referenceressource, du kan bruge til at finde detaljerede instruktioner om specifikke ksh-funktioner, når du har brug for dem.

  • KornShell-webstedet indeholder oplysninger om ksh, links til den nyeste version af softwaren, dokumentation og mere.

Bøger

Mange programmerere lærer at bruge ksh ved at studere tekster skrevet om emnet. Hvis du følger en tekst, er det vigtigt, at du ikke prøver at bare springe ind på et punkt, der ser interessant ud.

Spring over i midten af ​​en af ​​disse tekster vil føre til forvirring, da teksten i hvert kapitel bygger på det indhold, der er præsenteret i tidligere kapitler. Læs oplysningerne, der er præsenteret i disse tekster, i den præsenterede rækkefølge for at få mest muligt ud af dem.

  • Classic Shell Scripting (2005) af Robbins og Beebe: en solid introduktion til shell-scripting. Hvis ksh er dit første shell-programmeringssprog, ville du være klog på at styrke din forståelse af shell-scripting generelt, før du går videre til ksh-specifikke tekster.
  • KornShell Programming Tutorial (1991) af Barry Rosenberg: den mest stærkt anbefalede KornShell programmeringstekst tilgængelig.
  • Learning the Korn Shell (2002) af Robbins og Rosenblatt: del af den populære O’Reilly Media-serie af computerprogrammeringsbøger. Selvom den ikke er så populær som KornShell-programmeringsvejledning, er denne tekst ikke desto mindre meget respekteret og anerkendt i Unix-programmeringsverdenen.
  • The New KornShell Command And Programming Language (1995) af Marris I Bolsky og David G Korn: dette er ikke for begyndere. Imidlertid vil erfarne programmører sætte pris på den tekniske dybde af denne tekst. Plus, hvordan kan du gå galt med at vælge en programmeringssprog tekst skrevet af skaberen af ​​sproget?

KornShell Sammendrag

Korn (ikke at KoRN) Shell er et Unix shell-programmeringssprog, som du kan bruge interaktivt til at udføre kommandoer fra kommandolinjen eller programmatisk til at oprette scripts, der kan automatisere mange computervedligeholdelses- og systemadministrationsopgaver.

Bash

Bash er den mest almindeligt anvendte kommandolinjegrænseflade i Unix verden. Det er den standardtekstbaserede grænseflade til både Linux og Mac OS X. Og den bruges meget næsten overalt ellers.

Dens popularitet skyldes det faktum, at det kombinerer to forskellige tendenser i Unix-tekstgrænseflader: stærk scriptingsevne og brugervenlighed.

I dette afsnit giver vi dig en grundlæggende introduktion til brug af Bash på begge disse måder. Derudover vil vi give ressourcer, så du kan blive Bash-master.

Bash historie

Som vi har diskuteret, var Bourne-skallen den første virkelig vigtige Unix-shell. Men det havde slags en klodselig brugergrænseflade.

På den anden side havde det et fantastisk scriptingsprog med en kraftig, men alligevel enkel syntaks. På det tidspunkt var Unix primært et programmeringsmiljø, så man antog, at brugere bare ville oprette deres egne scripts for at gøre noget kompliceret.

Efterhånden som Unix blev mere udbredt, ønskede folk skaller, der var lettere at bruge interaktivt. Således udviklingen af ​​ting som C Shell og KornShell, som inkluderede meget bedre brugergrænsefladefunktioner.

I 1989 skrev Brian Fox Bash for Free Software Foundation (FSF). Selvom det ikke ligner det, er navnet faktisk et humoristisk forkortelse: Bourne Again SHell.

Som sådan er det en erstatning for Bourne-skallen. Men det tilføjede alle de interaktive funktioner, som folk var blevet elsket i de andre skaller.

Interaktiv Bash

I Bourne-skallen var der ikke meget, du kunne gøre som bruger undtagen at indtaste kommandoer. Bash ændrede alt det. Her er de store ændringer.

  • Historie: dette giver dig mulighed for at finde og redigere tidligere kommandoer. Dette inkluderer brugen af ​​udråbstegnoperatøren (kaldet “bang”) fra csh.

    Derudover kan du foretage ændringer i tidligere kommandoer. Det giver også brugeren mulighed for at rulle tilbage gennem tidligere kommandoer og redigere dem direkte på kommandolinjen.

  • aliasser: dette er en slags rudimentær programmering, hvor du kan give en kompliceret kommando (eller flere dem) til et simpelt alias.

  • Katalogstabel: dette giver dig mulighed for at “skubbe” dit nuværende bibliotek på stakken, mens du går til et andet bibliotek. Når du er færdig med det bibliotek, kan du “pop” fra det og gå tilbage tilbage til det sted, hvor du oprindeligt arbejdede.

Der er selvfølgelig meget mere at bruge Bash. Følgende ressourcer skal flytte dig på din vej.

Interaktive Bash Online-ressourcer

Enhver Bash-kommando er teknisk set et script. Så der er ikke en så klar linje, som vi måske kunne lide mellem at bruge Bash interaktivt og bruge det til scripting.

For eksempel kan det være meget nyttigt at bruge katalogstakken i et Bash-script. Som et resultat skelner ikke altid tutorials mellem disse to aspekter af Bash. Men disse ressourcer fokuserer på direkte interaktion med kommandolinjen Bash.

  • Bash Guide: dette er en rigtig god introduktion til alle de grundlæggende elementer i at bruge Bash og få tingene gjort. Det handler ikke kun om de mere avancerede ting. Det inkluderer for eksempel en god diskussion af filtre og rør og omdirigeringer.

  • Fremskridt i Bash Shell: dette er en fantastisk måde at lære detaljerne om brug af historie, færdiggørelse af filnavn, aliaser og meget mere.

  • Ofte stillede spørgsmål til Bash: dette er en generel FAQ om Bash med masser af oplysninger om interaktive spørgsmål og scripting.

Bash-scripting

Bash er designet til at være et supersæt af Bourne-skallen. Så i teorien kan Bash køre ethvert Bourne-shell-script (og efter ca. fire årtier er der mange af dem). Selvom det ikke altid er sandt, er det i langt de fleste tilfælde.

Da Bash praktisk talt ikke har nogen problemer med noget Bourne-shell-script, gælder stort set al information om Bourne-shell-scripting til Bash-scripting.

Eksempel på Bash-script

Bash-scriptingsprog er ret intuitivt. Vi starter med et lille eksempel, og giver derefter nogle ressourcer til dig for at lære mere. Dette er et simpelt eksempel, der rapporterer, om scriptet blev kørt med et kommandolinjeargument eller ej.

#! / Bin / bash
hvis [$ # -gt 0]
derefter
ekko "Første argument: $ 1"
andet
ekko "Der var ingen argumenter"
fi

Den skarpe eller hashtag-karakter (#) bruges generelt til at starte kommentarer. Men i den første linje i et script, efterfulgt af et udråbstegn, fortæller det shell, hvilket program der skal køre scriptet.

Tingene efter udråbstegn er den komplette sti til programmet. I tilfælde af bash er den altid i / bin.

Bemærk, at et ældre script muligvis starter med #! / Bin / sh, men på de fleste systemer peger / bin / sh og / bin / bash på det samme program. (På nogle erstattes / bin / sh med det forenklede Bash-program kaldet Dash in / bin / dash.)

Variabler i sh starter altid med et dollartegn. Den specielle variabel $ # indeholder antallet af kommandolinjeargumenter. Selve kommandolinjeargumenterne er numre: $ 1 for det første, $ 2 for det andet osv.

Variablen $ 0 indeholder selve programnavnet. Så den anden kodelinje kontrollerer for at se, om der er nogen kommandolinjeargumenter. (Det kan også bare kontrollere, om det første kommandolinjeargument, $ 1, findes).

Hvis der er nogen kommandolinjeargumenter, bruger scriptet ekko-kommandoen til at udsende det første argument. Hvis ikke, udskriver scriptet, at der ikke var nogen argumenter.

Læring Bash scripting

Bourne-skallen har været i brug i cirka fire årtier. Bash selv har eksisteret i over 25 år. Som et resultat er der en masse ressourcer til at hjælpe dig med at lære det.

  • Steve’s Bash Shell scriptingvejledning: dette er en fremragende tutorial, der indeholder masser af eksempler. Det er en fantastisk måde at komme i gang med Bash-scripting.

  • Bash-programmering – Introduktion HVORDAN: dette er en detaljeret introduktion til Bash nedenfra og op.

  • Linux Shell scripting-tutorial: dette giver ikke kun en introduktion til Bash-scripting, men også til andre værktøjer som sed (mønster matching) og AWK (dataekstraktion).

  • Skrivning af shell-scripts: dette er Linux-kommandotutorialen om scripting, der hævder at være sjov.

  • Unix Shell Scripting-tutorial: en ti-dels videotutorial, der starter helt i begyndelsen.

Andre Bash-ressourcer

Der er en hel masse at Bash. Her er nogle andre ressourcer, som du finder nyttige.

  • Bash Reference Manual: dette er den officielle GNU referencemanual til Bash. Det har alle de oplysninger, du har brug for, men det kan være skræmmende, hvis du bare prøver at komme i gang.

  • The Grymoire – Home for UNIX Wizards: dette er Bruce Barnett’s samling af tutorials til Unix-værktøjer. Tjek især hans introduktioner til sed og AWK.

  • The Bash Hackers Wiki: en omfattende ressource til alle ting Bash.

  • Stack Overflow: dette er webstedets Bash-mærkede tråde. Det er ekstremt aktivt og befolket af en masse meget kyndige mennesker.

  • Reddit: dette er Bash subreddit. Tjek også kommandolinjen subreddit.

Bash Sammendrag

Bash er alt for stort emne til at blive dækket fuldstændigt på en enkel webside. Men ved hjælp af de ressourcer, der findes her, får du bevægelse med Bash som en brugergrænseflade og som scriptingsprog.

Unix Shells

Der er mange Unix-skaller at vælge imellem. Vi er gået over de tre mest populære. Hvis du ikke kan bestemme, er Bash næsten helt sikkert den der skal vælges.

Men nogle mennesker vil have noget andet. Med oplysningerne i denne artikel skal du være i stand til at træffe det rigtige valg.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map