Oefening: Bash proberen

Voltooid

Op uw eigen Linux-computer kunt u Bash-opdrachten lokaal uitvoeren. Als u toegang hebt tot Linux-servers, kunt u er op afstand mee werken en daar Bash-opdrachten uitvoeren. Maar niemand wil experimenteren met een live productiesysteem, vooral op hun eerste dag bij Northwind.

In deze les gebruikt u Azure Cloud Shell aan de rechterkant als uw Linux-terminal. Azure Cloud Shell is een shell die u kunt openen via Azure Portal of via https://shell.azure.com. U hoeft niets op uw pc of laptop te installeren om het te gebruiken.

Vertrouwd raken met Cloud Shell

Laten we eerst Cloud Shell eens verkennen met behulp van de Bash-opdrachten die we hebben geleerd.

  1. Gebruik de opdracht ls om alle bestanden en subdirectory's in de huidige directory weer te geven:

    ls
    
  2. De uitvoer zou er ongeveer als volgt uit moeten zien:

    yourname@Azure:~$ ls
    clouddrive
    

    clouddrive is een subdirectory van de huidige directory. Het is een gekoppelde bestandsshare die persistent is als u Cloud Shell gebruikt voor uw eigen account. Op dit moment gebruikt u deze in de Microsoft Learn-sandbox.

  3. Maar wat is de huidige directory eigenlijk? Laten we de pwd opdracht gebruiken om erachter te komen. Staat voor 'werkmap afdrukken'. pwd Hiermee wordt het lange-formulierpad afgedrukt naar de map waarin u zich nu bevindt.

    pwd
    
  4. De uitvoer ziet er als volgt uit:

    yourname@Azure:~$ pwd
    /home/yourname
    

    Deze uitvoer betekent dat u zich in de directory yourname bevindt, die een subdirectory is van de directory home in de hoofddirectory van het Linux-bestandssysteem.

  5. De huidige directory lijkt niet erg veel te bevatten. We gaan een Bash-vlag gebruiken om alle verborgen bestanden en directory's af te drukken om te controleren of dat klopt.

    ls -a
    
  6. Tjonge! Er zit heel wat meer in deze directory dan we dachten.

    yourname@Azure:~$ ls -a
    .  ..  .azure  .bash_history  .bash_logout  .bashrc  clouddrive  .profile  .tmux.conf  .viminfo
    
  7. Wat zijn al die bestanden en subdirectory's? Sommige ervan zijn bestanden die Cloud Shell achter de schermen laten werken. Laten we een paar van de andere bespreken.

    • . verwijst naar de huidige directory en .. verwijst naar de bovenliggende directory. Waar u ook bent, als u alle verborgen bestanden en directory's afdrukt, ziet u dat . en .. worden afgedrukt.
    • .bash_history is een speciaal Bash-bestand waarin alle opdrachten die u in de shell invoert, worden opgeslagen. Bash onthoudt uw opdrachtgeschiedenis, wat heel nuttig is, zoals we later zullen zien.
    • .bash_logout is een ander speciaal Bash-bestand dat telkens wanneer er een aanmeldingsshell bestaat wordt gelezen en uitgevoerd. Linux-superusers kunnen het wijzigen om uw omgeving aan te passen.
    • .bashrc is een belangrijk Bash-configuratiebestand dat telkens wanneer u een nieuwe shell start wordt uitgevoerd. Als u dit bestand opent om het te bekijken, wees dan voorzichtig met het aanbrengen van wijzigingen, want die kunnen onbedoelde gevolgen hebben.

Uw geschiedenis ophalen en opdrachten automatisch aanvullen

Wanneer u ingewikkelde opdrachten als deze invoert, is een foutje zó gemaakt:

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

Maar gelukkig heeft Bash een aantal functies om u te helpen.

Vorige opdrachten terughalen

  1. Voer deze opdracht eens in, die een typfout bevat (203? in plaats van 202?):

    ls -a .azure/commands/203?*.log
    
  2. U zou deze uitvoer moeten zien, die u laat weten dat er geen bestanden waren die overeenkwamen met dat patroon:

    ls: cannot access '.azure/commands/203?*.log': No such file or directory
    
  3. In plaats van de hele opdracht opnieuw in te voeren om uw fout te verbeteren, kunt u eerder ingevoerde opdrachten terughalen door de toetsen pijl-omhoog en pijl-omlaag te gebruiken. Gebruik de toets pijl-omhoog om de verkeerde opdracht terug te halen. Gebruik vervolgens de pijl-links-toets om de opdracht te verbeteren door de laatste 3 te vervangen door een 2. Selecteer nogmaals Enter om de verbeterde opdracht in te voeren.

    Door meerdere keren achterelkaar op pijl-omhoog te drukken kunt u meerdere opdrachten teruggaan. Gebruik de pijl-omlaag-toets om naar latere opdrachten te gaan.

  4. Nu zou u iets moeten zien als de volgende uitvoer. U ziet dat uw opdracht correct gewerkt heeft en bestanden laat zien die overeenkomen met het gegeven patroon.

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

Automatisch aanvullen

Stel dat u de inhoud wilt lezen van een van de bestanden die u zojuist hebt gevonden. U kunt de opdracht cat (kort voor 'catenate' (aaneenschakelen)) gebruiken om de inhoud van een bestand af te drukken op het scherm.

  1. Als u deze opdracht wilt gebruiken, zou u de volledige naam kunnen gebruiken, zoals:

    cat .azure/commands/2020-01-29.21-56-35.login.103.log
    
  2. Maar dat is veel om te typen, en erg foutgevoelig. In plaats daarvan kunt u de elementaire automatische aanvulling van Bash het meeste werk laten doen. Probeer het volgende te typen:

    cat .a
    

    Selecteer vervolgens de Tab-toets. Wat gebeurt er dan?

  3. U zou moeten zien dat de rest van het woord 'azure/' wordt weergegeven in uw opdracht:

    cat .azure/
    

    Ga door met het typen van het begin van woorden en gebruik Tab om ze automatisch aan te vullen. Denk eraan dat als de invoer dubbelzinnig is, Bash niets aanvult. U kunt twee keer Tab selecteren om Bash alle bestanden en directory's in een gegeven pad af te laten drukken die overeenkomen met de letters die u al hebt getypt.

  4. Speel hier wat mee totdat u een echt .log-bestand in de opdrachtdirectory hebt. Selecteer vervolgens Enter om de opdracht cat te gebruiken om de inhoud ervan af te drukken op het scherm. Die zou er ongeveer als volgt uit kunnen zien:

    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
    

    Denk eraan dat als u al een onjuiste letter hebt getypt, Bash niet kan raden welke letter u bedoelde.

man gebruiken

We hebben daarnet de opdracht cat gebruikt, maar u kent deze nog niet goed. Oefen met man om meer informatie weer te geven over de opdracht cat.

  1. Voer de volgende opdracht uit om meer te weten te komen over wat cat is en hoe u deze opdracht kunt gebruiken:

    man cat
    

    Ja, u hebt 'man cat' (Engels voor menskat) ingevoerd in uw shell. Bash-opdrachten kunnen cryptisch en amusant zijn!

  2. De uitvoer ziet er als volgt uit:

    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. Gebruik de pijltoetsen omhoog en omlaag om door de man-pagina te bladeren, en voer q in om af te sluiten.

Van directory wisselen

Laten we nog een basisopdracht van Bash oefenen: cd.

Wanneer u de shell gebruikt, bevindt u zich altijd in een directory, net als een map op uw pc of Mac. Om van directory te wisselen, gebruikt u de opdracht cd (change directory).

Het is niet moeilijk, maar laten we het even oefenen.

  1. Voer eerst deze opdracht in om te controleren of u op de juiste plaats bent:

    cd ~
    

    Met deze opdracht bent u teruggegaan naar uw speciale basisdirectory in de shell, als u daar nog niet was.

  2. Controleer dit door de opdracht pwd nog een keer te gebruiken:

    pwd
    
  3. De uitvoer ziet er als volgt uit:

    /home/yourname
    

    ~ is nog een speciaal teken in Bash, dat naar deze basisdirectory verwijst. U kunt ~ gebruiken om naar de locatie /home/uwnaam te verwijzen, waar u zich ook in de shell bevindt.

  4. Laten we naar de directory gaan waar de logboekbestanden zich bevinden (waar we vandaan komen):

    cd .azure/commands/
    

    U kunt de hele opdracht zelf invoeren, of Tab gebruiken om de opdracht automatisch aan te vullen.

    Nu zou u moeten zien dat de regel waar u opdrachten invoert er anders uitziet, zodat u kunt zien waar u zich in de shell bevindt:

    yourname@Azure:~/.azure/commands$
    
  5. Gebruik de speciale ..-syntaxis om een directory omhoog te gaan:

    cd ..
    

    Nu zou u één niveau hoger in de directorystructuur moeten zijn, en uw opdrachtregel zou er zo uit moeten zien:

    yourname@Azure:~/.azure$
    

Goed gedaan. U hebt de eerste stappen gezet om een Bash-expert te worden. Maar blijf doorleren.

Kennis testen

1.

Naar welke map zou u overschakelen als u een Bash-opdracht hebt ingevoerd cd . ?