Oefening: Bash proberen
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 eenheid 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.
Gebruik de opdracht
ls
om alle bestanden en subdirectory's in de huidige directory weer te geven:ls
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.
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
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.
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
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
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 mappen afdrukt, ziet.
en..
afgedrukt..bash_history
is een speciaal Bash-bestand waarin alle opdrachten die u in de shell invoert, worden opgeslagen. Bash onthoudt uw opdrachtgeschiedenis, die, zoals we later zien, nuttig is..bash_logout
is een ander speciaal Bash-bestand dat wordt gelezen en uitgevoerd telkens wanneer er een aanmeldingsshell bestaat. 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
Voer deze opdracht eens in, die een typfout bevat (
203?
in plaats van202?
):ls -a .azure/commands/203?*.log
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
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 een2
. Selecteer nogmaals Enter om de verbeterde opdracht in te voeren.Als u de pijl-omhoog meerdere keren in een rij gebruikt, keert u meerdere opdrachten terug. Gebruik de pijl-omlaag-toets om naar latere opdrachten te gaan.
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.
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
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?
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. Houd er rekening mee dat als er sprake is van dubbelzinnigheid, Bash niets invult. U kunt Tab twee keer selecteren om Bash alle bestanden en mappen in een bepaald pad af te drukken dat overeenkomt met de letters die u al hebt getypt.
Speel rond totdat u bij een echt .log bestand in de opdrachtmap komt. 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
Houd er rekening mee dat als u al een onjuiste letter hebt getypt, Bash niet goed kan raden welke letter u wilde typen.
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
.
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!
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 ...
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.
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.
Controleer dit door de opdracht
pwd
nog een keer te gebruiken:pwd
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.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$
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.