Hoe de read-opdracht in Linux te gebruiken
![Hoe de read-opdracht in Linux te gebruiken](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/read-command-feature-image-1-640x375.webp)
![Leesopdracht Functie Afbeelding Leesopdracht Functie Afbeelding](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/read-command-feature-image.webp)
Soms moet u tijdens de interactie met uw Linux-systeem gebruikers om invoer vragen of invoer van bestanden lezen, of zelfs time-outs instellen. U kunt deze taken en vele andere uitvoeren met de read
opdracht en de verschillende opties.
In dit artikel leert u de basisbeginselen van read
command en de bijbehorende opties aan de hand van talloze codevoorbeelden.
Wat is de Leesopdracht?
In Linux kunt u de read
opdracht gebruiken om gebruikersinvoer vast te leggen of een regel van de standaardinvoer (stdin) te lezen. Deze opdracht leest het totale aantal bytes van de gegeven bestandsdescriptor en slaat deze op in de buffer. Daarna retourneert het het aantal gelezen bytes, nul of een fout.
Bijvoorbeeld, als het nummer of de telling nul is, verwijst het naar het einde van het bestand. Maar bij succes retourneert het het aantal gelezen bytes. Als de read-opdracht fouten vindt, retourneert het -1.
Voordat we de opties voor de opdracht read verkennen, kijken we eerst naar de syntaxis van de opdracht read:
Hier options
specificeert de parameter verschillende vlaggen die worden gebruikt om het gedrag van de read-opdracht te wijzigen. Verder name
specificeert de parameter de naam van meerdere variabelen die worden gebruikt om de invoer op te slaan. Als er geen namen worden opgegeven, wordt de invoer bewaard in de $REPLY
bash-variabele.
Leesopdrachtopties
De Bash read-opdracht heeft veel opties om gebruikersinvoer te regelen. Sommige opties hebben geen extra parameters nodig, terwijl andere dat wel hebben.
Laten we eens kijken naar enkele opties die we kunnen gebruiken met de opdracht read:
Opties | Beschrijvingen |
---|---|
-een <array> | De invoer wordt opgeslagen als een array in plaats van als afzonderlijke variabelen. |
-S | Werkt stil, wat betekent dat de invoer niet op de terminal wordt weergegeven |
-Het is | maakt readline-bibliotheekondersteuning mogelijk, waardoor de invoerregel kan worden gelezen |
-i <voorvoegsel> | biedt een initiële invoerwaarde die bij de prompt verschijnt bij gebruik van readline |
-p <aanwijzing> | geeft de opgegeven prompt weer voordat de invoer wordt gelezen |
-u <bestandsdescriptor> | leest van een opgegeven bestandsdescriptor in plaats van de standaardinvoer (stdin) |
-d <scheidingsteken> | Hiermee kunt u een scheidingsteken voor de invoerregel opgeven in plaats van het standaard teken voor een nieuwe regel |
-t <tijd> | stelt een time-outperiode in voor invoer; als de invoer niet binnen deze tijd wordt ontvangen, retourneert read een fout |
-R | wanneer ingesteld, worden backslashes niet behandeld als escape-tekens |
-n <nummer> | leest alleen het opgegeven aantal tekens |
Typ de volgende opdracht om het helpmenu voor leesopdrachten weer te geven:
Hoe invoer te lezen met behulp van de opdracht Lezen
De eenvoudigste manier om de read-opdracht te gebruiken is om deze te gebruiken zonder argumenten of opties. Wanneer u de read-opdracht alleen uitvoert, wordt u gevraagd om de invoer te geven die u wilt lezen. Nadat u invoer hebt gegeven, wordt de opdracht afgesloten en opgeslagen in de standaardvariabele met de naam REPLY
.
Laten we dit als voorbeeld nemen:
![met behulp van de opdracht read om invoer van de gebruiker vast te leggen met behulp van de opdracht read om invoer van de gebruiker vast te leggen](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/read-command-1.webp)
Nadat u de invoer hebt ingevoerd, geven we deze weer met de echo-opdracht:
![met behulp van de echo-opdracht om de uitvoer van de REPLY-variabele weer te geven met behulp van de echo-opdracht om de uitvoer van de REPLY-variabele weer te geven](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/echo-command-1.webp)
Terwijl u de invoerwaarde leest, kunt u deze ook opslaan in andere specifieke variabelen. Om bijvoorbeeld het resultaat in een variabele op te slaan, typt u de read
opdracht gevolgd door de variabelenaam:
![het lezen van de invoerwaarde van de gebruiker en het opslaan ervan in een specifieke variabele het lezen van de invoerwaarde van de gebruiker en het opslaan ervan in een specifieke variabele](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/read-from-variable.webp)
Om het resultaat weer te geven, moet u de echo
opdracht gebruiken met de variabele waarin uw waarde is opgeslagen:
![weergave van de vastgelegde variabele waarde met behulp van de echo-opdracht weergave van de vastgelegde variabele waarde met behulp van de echo-opdracht](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/echo-display-variable.webp)
Meerdere waarden lezen
Er is geen directe manier om meerdere waarden te lezen met behulp van de read
opdracht. U kunt echter de enkele invoerzin opsplitsen in meerdere woorden en deze opslaan in verschillende variabelen.
Laten we het volgende voorbeeld eens bekijken:
![meerdere waarden lezen en opslaan in meerdere variabelen meerdere waarden lezen en opslaan in meerdere variabelen](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/read-multiple-values.webp)
Hierbij slaat u het eerste woord van de zin op in de eerste variabele, het tweede woord in de tweede variabele en alle overige woorden in de laatst opgegeven variabele.
Laten we de uitvoer retourneren met de volgende opdracht:
![meerdere waarden weergeven met behulp van de echo-opdracht meerdere waarden weergeven met behulp van de echo-opdracht](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/echo-display-multiple-values.webp)
Lezen vanuit een bestand
Hoewel read primair bedoeld is voor gebruikersinvoer, kunt u het ook gebruiken om regels uit een bestand te lezen. Om dit te doen, gebruikt u gewoon de while
loop, echo
command en read
command gevolgd door een specifieke variabelenaam:
![lezen uit bestand met behulp van de opdracht read lezen uit bestand met behulp van de opdracht read](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/read-from-file.webp)
Hier while
leest de lus elke regel van de “samplefile.txt” en registreert deze in de variabele line
. Nadat alle regels van een bestand zijn gelezen, echo
toont de opdracht de waarde van de regel.
Invoer lezen in een lus
U kunt ook gebruikersinvoer in een herhaalde reeks vastleggen door een read met een while-lus te gebruiken. Dit is handig wanneer u meerdere invoeren wilt verzamelen of wilt doorgaan totdat aan een specifieke voorwaarde is voldaan.
Laten we bijvoorbeeld meerdere invoergegevens lezen en deze ook op de terminal weergeven:
![invoerwaarde van gebruiker in continue lus lezen invoerwaarde van gebruiker in continue lus lezen](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/read-in-loop.webp)
Bovendien blijft de lus doorgaan totdat er een EOF-signaal (end-of-file) wordt ontvangen, meestal door op Ctrl+ te drukken D.
Hoe u invoer kunt vragen met behulp van de opdracht Lezen
U kunt ook interactieve prompts maken die worden weergegeven vóór de invoer van de gebruiker. U kunt dit doen door de -p
optie te gebruiken in combinatie met de opdracht read.
Laten we een aangepaste prompt weergeven en ook de invoer vastleggen:
![prompt maken voordat invoer van gebruiker wordt gelezen prompt maken voordat invoer van gebruiker wordt gelezen](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/read-with-prompt.webp)
Beperking van gebruikersinvoer tijdens het lezen
Wilt u bepalen wat gebruikers kunnen invoeren? Gebruik de -n
optie met read om de gewenste tekenlengte op te geven. Als u bijvoorbeeld de eerste 4 tekens van de gebruikersinvoer wilt vastleggen, gebruikt u de onderstaande opdracht:
![invoer lezen op basis van de opgegeven tekenwaarde invoer lezen op basis van de opgegeven tekenwaarde](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/limiting-user-input.webp)
Nadat u de bovenstaande opdracht hebt uitgevoerd, kunt u slechts negen tekens invoeren. Door de invoer van de gebruiker tijdens het lezen te beperken, vervalt de noodzaak voor een scheidingsteken en wordt de invoer ook niet in woorden gesplitst.
Uitvoervelden scheiden met IFS
U kunt de variabele Internal Field Separator (IFS) gebruiken met de opdracht read om te bepalen hoe de invoer in afzonderlijke velden moet worden gesplitst. Standaard gebruikt IFS witruimtetekens (tab, nieuwe regel en spatie) als veldscheidingstekens. U kunt IFS echter aanpassen aan uw behoeften.
U kunt bijvoorbeeld de dubbele punt (:) als scheidingsteken opgeven:
![lezen en splitsen van de waarde op basis van de opgegeven scheidingstekenwaarde lezen en splitsen van de waarde op basis van de opgegeven scheidingstekenwaarde](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/ifs-read-command.webp)
Met de variabele IFS kunt u meerdere regelinvoeren van de gebruiker vastleggen en deze scheiden op basis van de scheidingswaarde.
Time-out instellen bij lezen
U kunt ook een time-out configureren voor de read-opdracht met behulp van de -t
optie. Dit is handig als u ervoor wilt zorgen dat het script niet langdurig afhankelijk is van gebruikersinvoer.
Laten we een time-out van 10 seconden instellen met de -t
optie:
![invoerwaarde binnen de gegeven tijd lezen invoerwaarde binnen de gegeven tijd lezen](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/timeout-read-command.webp)
Als de gebruiker binnen 10 seconden niets typt, gaat het script verder met de uitvoering.
Hoe u gebruikersinvoer kunt verbergen
Soms wilt u de invoer van de gebruiker verbergen, bijvoorbeeld bij het invoeren van gevoelige informatie zoals wachtwoorden. U kunt dit bereiken met de -s
optie van de opdracht read:
![Gebruik de optie -s met de opdracht read om informatie te verbergen Gebruik de optie -s met de opdracht read om informatie te verbergen](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/hide-user-password.webp)
Nadat u het wachtwoord in de opgegeven variabele hebt opgeslagen, kunt u het in de terminal weergeven met behulp van de echo
opdracht:
![het weergeven van het vastgelegde wachtwoord met behulp van de optie -e en de opdracht echo het weergeven van het vastgelegde wachtwoord met behulp van de optie -e en de opdracht echo](https://cdn.thewindowsclub.blog/wp-content/uploads/2024/07/echo-display-password.webp)
Hier -e
staat de vlag de interpretatie van escape sequences toe en \n
escape sequence voegt een nieuwe regel toe vóór de uitvoer.
Afsluiten
Tegen de tijd dat u klaar bent met het lezen van dit artikel en het doorwerken van de voorbeelden, bent u bekend met het gebruik van de read-opdracht in de Linux-terminal. Er zijn echter nog een aantal opdrachten om te verkennen. Lees verder om de basisopdrachten voor nieuwkomers te ontdekken.
Afbeelding tegoed: Gabriel Heinzer via Unsplash . Alle screenshots door Haroon Javed.
Geef een reactie