Oefening: Bash proberen
- 8 minuten
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 submap van uw huidige map. 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 wacht, wat is de huidige map? 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 een map bevindt met de naam uw naam in een map met de naam Home, in de hoofdmap van het Linux-bestandssysteem.
De huidige directory lijkt niet erg veel te bevatten. Laten we een Bash-vlag gebruiken om alle verborgen bestanden en mappen af te drukken om te controleren of dat juist is.
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 het hele ding opnieuw in te voeren om uw fout te corrigeren, kunt u eerder ingevoerde opdrachten intrekken met behulp van de toetsen Pijl-omhoog en Pijl-omlaag . Gebruik de toets Pijl-omhoog om de onjuiste opdracht terug te zetten. Gebruik vervolgens de pijl-links om deze te herstellen door de laatste
3
te vervangen door een2
. Selecteer Enter opnieuw om de gecorrigeerde opdracht in te dienen.Als u de pijl-omhoog meerdere keren in een rij gebruikt, keert u meerdere opdrachten terug. Gebruik de toets Pijl-omlaag 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/
Typ het begin van woorden en gebruik tab om 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 te gebruiken om de
cat
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 wordt u teruggebracht naar uw speciale basismap in de shell, als u daar nog niet bent.
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~
ook verwijzen naar de locatie /home/uwnaam , ongeacht waar u zich in de shell bevindt.Laten we naar de directory gaan waar de logboekbestanden zich bevinden (waar we vandaan komen):
cd .azure/commands/
U kunt zelf de volledige opdracht invoeren of Tab gebruiken om 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.