Øvelse – prøv Bash

Fuldført

På din egen Linux-computer kan du køre Bash-kommandoer lokalt. Hvis du har adgang til Linux-servere, kan du fjernindgå dem og køre Bash-kommandoer der. Men ingen ønsker at eksperimentere med et live produktionssystem, især på deres første dag i Northwind.

I dette undermodul bruger du Azure Cloud Shell til højre som din Linux-terminal. Azure Cloud Shell er en shell, du kan få adgang til via Azure Portal eller på https://shell.azure.com. Du behøver ikke at installere noget på din pc eller bærbare computer for at bruge den.

Bliv fortrolig med Cloud Shell

Lad os først udforske, hvad der er i Cloud Shell, ved hjælp af de Bash-kommandoer, vi har lært.

  1. Brug kommandoen ls til at få vist alle filer og undermapper i den aktuelle mappe:

    ls
    
  2. Du bør kunne se output, der ligner dette:

    yourname@Azure:~$ ls
    clouddrive
    

    clouddrive- er en undermappe til din aktuelle mappe. Det er et tilsluttet filshare, der bevares, hvis du bruger Cloud Shell på din egen konto. Lige nu bruger du den i Microsoft Learn-sandkassen.

  3. Men vent, hvad er den aktuelle mappe? Lad os bruge kommandoen pwd til at finde ud af det. pwd står for "print working directory". Den udskriver den lange sti til den mappe, du befinder dig i nu.

    pwd
    
  4. Du bør se et output som dette:

    yourname@Azure:~$ pwd
    /home/yourname
    

    Dette output betyder, at du befinder dig i en mappe med navnet dit navn i en mappe, der kaldes home, i roden af Linux-filsystemet.

  5. Der ser ikke ud til at være meget i vores aktuelle mappe. Lad os bruge flaget Bash til at udskrive alle skjulte filer og mapper for at dobbelttjekke, at det er korrekt.

    ls -a
    
  6. Dette output viste os en masse flere ting i denne mappe, end vi oprindeligt troede.

    yourname@Azure:~$ ls -a
    .  ..  .azure  .bash_history  .bash_logout  .bashrc  clouddrive  .profile  .tmux.conf  .viminfo
    
  7. Hvad var alle de filer og undermapper? Nogle af filerne er bag kulisserne for at få Cloud Shell til at fungere. Lad os diskutere et par af de andre.

    • . henviser til den aktuelle mappe, og .. henviser til den overordnede mappe. Uanset hvor du er, kan du se . og .. udskrevet, hvis du udskriver alle skjulte filer og mapper.
    • .bash_history er en særlig Bash-fil, hvor alle de kommandoer, du angiver i shell'en, gemmes. Bash husker din kommandohistorik, hvilket, som vi kan se senere, er nyttigt.
    • .bash_logout er en anden speciel Bash-fil, der læses og køres, hver gang der findes en logonshell. Linux-superbrugere kan ændre den for at tilpasse dit miljø.
    • .bashrc er en vigtig Bash-konfigurationsfil, der kører, når du starter en ny shell. Hvis du beslutter at åbne denne fil for at se på den, skal du være forsigtig med at foretage ændringer, da de kan have utilsigtede konsekvenser.

Genkald dine historik- og autofuldførelseskommandoer

Når du indtaster komplicerede kommandoer som denne, er det nemt at lave en fejl:

ls -a .azure/commands/202?*.log

Heldigvis tilbyder Bash et par funktioner, der kan hjælpe dig.

Tilbagekaldelse af tidligere kommandoer

  1. Prøv at angive denne kommando med en stavefejl (203? i stedet for 202?):

    ls -a .azure/commands/203?*.log
    
  2. Du bør se dette output, så du ved, at der ikke var nogen filer, der svarede til det mønster:

    ls: cannot access '.azure/commands/203?*.log': No such file or directory
    
  3. I stedet for at angive det hele igen for at rette fejlen kan du huske tidligere indtastede kommandoer ved hjælp af pil op og pil ned taster. Prøv at bruge pil op for at få den forkerte kommando tilbage. Brug derefter venstre piletast til at løse problemet ved at erstatte det endelige 3 med en 2. Vælg Angiv igen for at sende den rettede kommando.

    Hvis du bruger pil op tast flere gange i træk, flyttes flere kommandoer tilbage. Brug pil ned til at flytte til senere kommandoer.

  4. Nu kan du se noget i stil med følgende output. Den giver dig besked om, at din kommando fungerede korrekt for at vise filer, der svarede til det angivne mønster.

    .azure/commands/2020-01-29.21-56-35.login.103.log
    .azure/commands/2020-01-29.21-56-38.account_set.112.log
    

Autofuldførelse

Lad os sige, at du vil læse indholdet af en af de filer, du lige har fundet. Du kan bruge kommandoen cat (kort for "catenate") til at udskrive indholdet af en fil på skærmen.

  1. Hvis du vil bruge denne kommando, kan du bruge det fulde filnavn, f.eks.:

    cat .azure/commands/2020-01-29.21-56-35.login.103.log
    
  2. Men det er meget at skrive, og meget fejl tilbøjelige. I stedet kan du bruge Bashs rudimentære autofuldførelse til at udføre det meste af arbejdet for dig. Prøv at skrive:

    cat .a
    

    Vælg derefter tabuleringstasten. Hvad sker der?

  3. Resten af ordet "azure/" vises i kommandoen:

    cat .azure/
    

    Fortsæt med at skrive begyndelsen af ord, og brug tabulering til autofuldførelse. Vær opmærksom på, at hvis der er en flertydighed, udfylder Bash ikke noget. Du kan vælge tabulator to gange for at få Bash til at udskrive alle de filer og mapper i en given sti, der svarer til de bogstaver, du allerede har skrevet.

  4. Leg rundt, indtil du får adgang til en ægte .log fil i kommandomappen. Vælg derefter Angiv for at bruge kommandoen cat til at udskrive indholdet på skærmen. Det kan se nogenlunde sådan ud:

    CMD-LOG-LINE-BEGIN 103 | 2020-01-29 21:56:35,426 | INFO | az_command_data_logger | command args: login --identity
    CMD-LOG-LINE-BEGIN 103 | 2020-01-29 21:56:37,604 | INFO | az_command_data_logger | exit code: 0
    

    Husk, at hvis du allerede har skrevet et forkert bogstav, kan Bash ikke gætte, hvilket bogstav du vil skrive korrekt.

Brug man

Vi har lige brugt kommandoen cat, men du ved ikke meget om det endnu. Øv dig man for at få flere oplysninger om kommandoen cat.

  1. Angiv følgende kommando for at få mere at vide om, hvad cat er, og hvordan du bruger den:

    man cat
    

    Ja, du indtastede "mankat" i din skal. Bash-kommandoer kan være både kryptiske og underholdende!

  2. Du bør se et output som dette:

    CAT(1)                                       User Commands                                       CAT(1)
    
    NAME
           cat - concatenate files and print on the standard output
    
    SYNOPSIS
           cat [OPTION]... [FILE]...
    
    DESCRIPTION
           Concatenate FILE(s) to standard output.
    
           With no FILE, or when FILE is -, read standard input.
    
           -A, --show-all
                  equivalent to -vET
    
           -b, --number-nonblank
                  number nonempty output lines, overrides -n
    
           -e     equivalent to -vE
    
    ...
    
  3. Brug pil op og ned til at rulle gennem den manuelle side, og angiv q for at afslutte.

Skift mapper

Lad os øve en mere grundlæggende Bash-kommando: cd.

Når du bruger shellen, sidder du altid i en mappe – på samme måde som en mappe på din pc eller Mac. Hvis du vil ændre mapper, skal du bruge kommandoen cd (skift mappe).

Det er simpelt, men lad os øve os.

  1. Først skal du angive denne kommando for at sikre, at du er på det rigtige sted:

    cd ~
    

    Denne kommando flyttede dig tilbage til din særlige hjem mappe i shellen, hvis du ikke allerede var der.

  2. Dobbeltkontrol ved hjælp af kommandoen pwd én gang mere:

    pwd
    
  3. Du bør se et output som dette:

    /home/yourname
    

    ~ er et andet specialtegn i Bash, der refererer til denne hjemmemappe. Du kan bruge ~ til at henvise til placeringen /home/yourname uanset hvor du befinder dig i shell'en.

  4. Lad os skifte til den mappe, der indeholder logfiler (hvor vi var tidligere):

    cd .azure/commands/
    

    Du kan enten selv angive den fulde kommando eller bruge Tabulator til autofuldførelse.

    Nu kan du se, at den linje, hvor du angiver kommandoer, ser anderledes ud, så du kan se, hvor du befinder dig i shell'en:

    yourname@Azure:~/.azure/commands$
    
  5. Prøv at bruge den særlige .. syntaks til at flytte én mappe op:

    cd ..
    

    Nu skal du være ét niveau op i mappestrukturen, og kommandolinjen bør se sådan ud:

    yourname@Azure:~/.azure$
    

Fantastisk arbejde! Du har taget dine første skridt til at være Bash-ekspert. Lad os fortsætte med at lære.

Tjek din viden

1.

Hvilken mappe ville du skifte til, hvis du indtastede cd . som en Bash-kommando?