Övning – Prova Bash

Slutförd

På din egen Linux-dator kan du köra Bash-kommandon lokalt. Om du har åtkomst till Linux-servrar kan du fjärransluta till dem och köra Bash-kommandon där. Men ingen vill experimentera på ett levande produktionssystem, särskilt på sin första dag i Northwind.

I den här lektionen använder du Azure Cloud Shell till höger som Linux-terminal. Azure Cloud Shell är ett gränssnitt som du kan komma åt via Azure-portalen eller på https://shell.azure.com. Du behöver inte installera något på din PC eller bärbara dator för att använda det.

Bekanta dig med Cloud Shell

Först utforskar vi vad som finns i Cloud Shell genom att använda de Bash-kommandon som vi har lärt oss.

  1. Använd kommandot ls för att visa en lista över alla filer och underkataloger i den aktuella katalogen:

    ls
    
  2. Du bör se utdata som liknar det här:

    yourname@Azure:~$ ls
    clouddrive
    

    clouddrive är en underkatalog för din aktuella katalog. Det är en monterad filresurs som bevaras om du använder Cloud Shell i ditt eget konto. Just nu använder du den i sandbox-miljön för Microsoft Learn.

  3. Men vänta lite – vad är egentligen den aktuella katalogen? Vi använder kommandot för att ta reda på pwd . pwd står för "skriv ut arbetskatalog". Den skriver ut sökvägen till den katalog du befinner dig i nu.

    pwd
    
  4. Utdata bör ser ut så här:

    yourname@Azure:~$ pwd
    /home/yourname
    

    Dessa utdata innebär att du är i en katalog som heter yourname i en katalog som heter home i roten i Linux-filsystemet.

  5. Det verkar inte finnas mycket i vår aktuella katalog. Vi använder en Bash-flagga för att skriva ut alla dolda filer och kataloger för att kontrollera att det är korrekt.

    ls -a
    
  6. Oj! Dessa utdata visade många fler saker i den här katalogen än vad vi trodde från början.

    yourname@Azure:~$ ls -a
    .  ..  .azure  .bash_history  .bash_logout  .bashrc  clouddrive  .profile  .tmux.conf  .viminfo
    
  7. Vad var alla dessa filer och underkataloger? Vissa är bakomliggande filer som gör att Cloud Shell fungerar. Vi går igenom några av de andra.

    • . refererar till den aktuella katalogen, och .. refererar till den överordnade katalogen. Oavsett var du befinner dig skrivs . och .. ut om du skriver ut alla dolda filer och kataloger.
    • .bash_history är en speciell Bash-fil där alla kommandon som du anger till gränssnittet lagras. Bash kommer ihåg din kommandohistorik, vilket är användbart som vi kommer att se senare.
    • .bash_logout är en annan speciell Bash-fil som läses och körs varje gång ett inloggningsgränssnitt finns. Linux-superanvändare kan ändra den för att anpassa miljön.
    • .bashrc är en viktig Bash-konfigurationsfil som körs när du startar ett nytt gränssnitt. Om du väljer att öppna den här filen för att titta på den bör du vara försiktig med att göra ändringar eftersom de kan ha oönskade konsekvenser.

Återkalla historik och automatisk komplettering av kommandon

När du anger komplicerade kommandon som detta är det enkelt att göra ett misstag:

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

Lyckligtvis erbjuder Bash några olika funktioner som är till hjälp.

Återkalla tidigare kommandon

  1. Försök att ange det här kommandot med ett skrivfel (203? i stället för 202?):

    ls -a .azure/commands/203?*.log
    
  2. Du bör se dessa utdata som innebär att det inte finns några filer som matchade det mönstret:

    ls: cannot access '.azure/commands/203?*.log': No such file or directory
    
  3. I stället för att ange alltihop igen för att korrigera misstaget kan du återkalla tidigare angivna kommandon med hjälp av tangenterna uppåtpil och nedåtpil. Försök att använda tangenten uppåtpil för att ta fram det felaktiga kommandot igen. Använd sedan tangenten vänsterpil för att åtgärda det genom att ersätta den sista 3 med en 2. Välj Retur igen för att skicka det korrigerade kommandot.

    Om du använder uppåtpilen flera gånger i rad går du tillbaka flera kommandon. Använd tangenten nedåtpil för att gå till senare kommandon.

  4. Nu bör det visas en text som ser ut ungefär som följande utdata. Det indikerar att kommandot fungerade korrekt för att visa filer som matchade det angivna mönstret.

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

Automatisk komplettering

Anta att du vill läsa innehållet i en av de filer som du nyss hittade. Du kan använda kommandot cat (förkortning av "catenate") för att skriva ut innehållet i en fil till skärmen.

  1. Om du vill använda det här kommandot kan du använda det fullständiga filnamnet, till exempel:

    cat .azure/commands/2020-01-29.21-56-35.login.103.log
    
  2. Men det är mycket att skriva och känsligt för fel. I stället kan du använda Bash elementära automatiska komplettering till att göra det mesta av arbetet åt dig. Försök att skriva:

    cat .a
    

    Välj sedan tangenten Tabb. Vad händer?

  3. Du bör se resten av ordet "azure/" som visas i kommandot:

    cat .azure/
    

    Fortsätt att skriva början av orden och använd Tabb för att komplettera automatiskt. Tänk på att om det finns en tvetydighet så fyller Bash inte i något. Du kan välja Tabb två gånger om du vill att Bash ska skriva ut alla filer och katalogen i en viss sökväg som matchar de bokstäver du redan har skrivit.

  4. Prova det tills du kommer till en riktig .log-fil i kommandokatalogen. Välj sedan Retur för att använda kommandot cat för att skriva ut dess innehåll på skärmen. Det kan se ut ungefär så här:

    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
    

    Tänk på att om du redan har skrivit en felaktig bokstav kan Bash inte gissa vilken bokstav du avsåg att skriva.

Använda man

Vi har precis använt kommandot cat, men du vet inte mycket om det ännu. Öva med man för att ta mer information om kommandot cat.

  1. Ange följande kommando för att förstå mer om vad cat är och hur du använder det:

    man cat
    

    Ja, du angav "man cat" i gränssnittet. Bash-kommandon kan vara både kryptiska och lustiga!

  2. Utdata bör ser ut så här:

    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. Använd uppåtpilen och nedåtpilen för att rulla genom den manuella sidan, och ange q för att avsluta.

Ändra kataloger

Vi övar med ett till grundläggande Bash-kommando: cd.

När du använder gränssnittet är du alltid i en katalog, precis som en mapp på en PC eller Mac. Om du vill ändra mapp använder du kommandot cd ("change directory", ändra katalog).

Det är enkelt, men vi tar och övar lite ändå.

  1. Börja med att ange det här kommandot för att se till att du är på rätt plats:

    cd ~
    

    Det här kommandot växlade tillbaka till din speciella hemkatalog i gränssnittet, om du inte redan var där.

  2. Dubbelkontrollera med hjälp av kommandot pwd en gång till:

    pwd
    
  3. Utdata bör ser ut så här:

    /home/yourname
    

    ~ är ett annat specialtecken i Bash som refererar till den här hemkatalogen. Du kan använda ~ för att referera till platsen /home/yourname oavsett var du befinner dig i gränssnittet.

  4. Vi ändrar till den katalog som innehåller loggfiler (där vi var tidigare):

    cd .azure/commands/
    

    Du kan antingen ange hela kommandot själv eller använda Tabb för att komplettera automatiskt.

    Nu bör du se att den rad där du anger kommandon ser annorlunda ut, vilket visar var du är i gränssnittet:

    yourname@Azure:~/.azure/commands$
    
  5. Försök att använda den speciella syntaxen .. för att gå uppåt en katalog:

    cd ..
    

    Nu bör du vara en nivå uppåt i katalogstrukturen, och kommandoraden bör se ut så här:

    yourname@Azure:~/.azure$
    

Bra jobbat! Du har tagit de första stegen mot att bli expert på Bash. Fortsätt gärna att lära dig mer.

Testa dina kunskaper

1.

Vilken katalog skulle du växla till om du angav Bash-kommandot cd .?