Co je příkaz read v Linuxu?
příkaz čtení v Linuxu je způsob, jak mohou uživatelé komunikovat se vstupem z klávesnice, který můžete vidět označovaný jako stdin (standardní vstup) nebo jiné podobné popisy.
Jinými slovy, pokud chcete, aby váš bash skript přebíral vstup od uživatele, budete muset použít příkaz read.
Napíšu několik jednoduchých bash skriptů, které vám ukážou praktické použití příkazu read.
Přečíst příklady příkazů
Příkaz read může být pro začátek matoucí, zvláště pro ty, kteří začínají se skriptováním shellu. Skripty, které zde použiji, jsou velmi jednoduché na pochopení a mělo by být snadné je sledovat, zvláště pokud cvičíte spolu s výukovým programem.
Základní koncepty programování
Téměř u každého programu nebo skriptu chcete převzít informace od uživatele (vstup) a říci počítači, co má s těmito informacemi udělat (výstup).
Když používáte čtení, komunikujete s terminálem bash, že chcete zachytit vstup od uživatele. Ve výchozím nastavení příkaz vytvoří proměnnou, do které se tento vstup uloží.
read [options] variable_name
Nyní se podívejme na několik příkladů příkazu čtení, abychom pochopili, jak jej můžete použít v různých situacích.
1. Číst příkaz bez možností
Když napíšete read bez jakýchkoliv dalších možností, budete muset stisknout Enter, abyste zahájili snímání. Systém bude zaznamenávat vstup, dokud znovu nestisknete enter.
Ve výchozím nastavení budou tyto informace uloženy v proměnné s názvem $REPLY
.
Abychom usnadnili práci v prvním příkladu, použiji ↵
symbol se zobrazí po stisknutí klávesy Enter.
read ↵
hello world ↵
echo $REPLY ↵
hello world
Další informace o proměnných
Jak jsem již zmínil, $REPLY
proměnná je zabudována do read
, takže to nemusíte deklarovat.
To by mohlo být v pořádku, pokud máte na mysli pouze jednu aplikaci, ale pravděpodobně budete chtít použít své vlastní proměnné. Když deklarujete proměnnou pomocí read, nemusíte dělat nic jiného, než zadat název proměnné.
Když chcete volat proměnnou, použijete $
před jménem. Zde je příklad, kde vytvořím proměnnou Linux_Handbook
a přiřaďte mu hodnotu vstupu.
Můžete použít příkaz echo k ověření, že příkaz read udělal své kouzlo:
read Linux_Handbook ↵
for easy to follow Linux tutorials.
echo $Linux_Handbook ↵
for easy to follow Linux tutorials.
Připomenutí:V názvech proměnných se rozlišují malá a velká písmena.
2. Možnost výzvy -p
Pokud píšete skript a chcete zachytit vstup uživatele, existuje možnost čtení pro vytvoření výzvy, která může váš kód zjednodušit. Kódování je o efektivitě, že?
Místo použití dalších řádků a příkazů echo můžete jednoduše použít -p
příznak volby. Text, který zadáte do uvozovek, se zobrazí tak, jak bylo zamýšleno, a uživatel nebude muset stisknout Enter, aby mohl začít zaznamenávat vstup.
Takže místo psaní dvou řádků kódu, jako je tento:
echo "What is your desired username? "
read username
Můžete použít -p
možnost s příkazem read takto:
read -p "What is your desired username? " username
Vstup bude uložen do proměnné $username.
3. Možnost „Tajné“/Tiché -s
Napsal jsem jednoduchý bash skript, abych demonstroval další příznak. Nejprve se podívejte na výstup.
bash secret.sh
What is your desired username? tuxy_boy
Your username will be tuxy_boy.
Please enter the password you would like to use:
You entered Pass123 for your password.
Masking what's entered does not obscure the data in anyway.
Zde je obsah secret.sh
pokud to chcete znovu vytvořit.
#!/bin/bash
read -p "What is your desired username? " username
echo "Your username will be" $username"."
read -s -p "Please enter the password you would like to use: " password
echo
echo "You entered" $password "for your password."
echo "Masking what's entered does not obscure the data in anyway."
Jak můžete vidět, -s
volba maskovala vstup při zadání hesla. Toto je však povrchní technika a nenabízí skutečné zabezpečení.
4. Použití omezení počtu znaků s možností čtení -n
Ke vstupu můžete přidat omezení a omezit jej na n počet znaků.
Použijme stejný skript jako dříve, ale upravme jej tak, aby vstupy byly omezeny na 5 znaků.
read -n 5 -p "What is your desired username? " username
Jednoduše přidejte -n N
kde N je číslo dle vašeho výběru.
Totéž jsem udělal pro naše heslo.
bash secret.sh
What is your desired username? tuxy_Your username will be tuxy_.
Please enter the password you would like to use:
You entered boy for your password.
Jak můžete vidět, program přestal shromažďovat vstup po 5 znacích pro uživatelské jméno.
Stále jsem však mohl napsat MÉNĚ než 5 znaků, pokud stisknu ↵
po zadání.
Pokud to chcete omezit, můžete použít -N
(místo -n) Díky této úpravě je vyžadováno přesně 5 znaků, ani méně, ani více.
5. Ukládání informací do pole -a
Můžete také použít příkaz read v Linuxu k vytvoření vlastních polí. To znamená, že můžeme přiřadit části vstupu prvkům v poli. Ve výchozím nastavení odděluje prvky mezerník.
[email protected]:~$ read -a array
abc def 123 x y z
[email protected]:~$ echo ${array[@]}
abc def 123 x y z
[email protected]:~$ echo ${array[@]:0:3}
abc def 123
[email protected]:~$ echo ${array[0]}
abc
[email protected]:~$ echo ${array[5]}
z
Pokud jste v polích noví nebo je poprvé vidíte v bash, rozeberu, co se děje.
- Zadejte požadované prvky oddělené mezerami.
- Pokud vložíme pouze proměnnou @, iteruje a vytiskne celý cyklus.
- Symbol @ představuje číslo prvku a pomocí dvojteček za ním můžeme rozlišit iteraci od indexu 0 do indexu 3 (jak je zde napsáno).
- Vytiskne prvek s indexem 0.
- Podobné jako výše, ale ukazuje, že prvky jsou odděleny prostorem
Bonusový tip:Přidání funkce časového limitu
K našemu čtení můžete také přidat časový limit. Pokud ve stanoveném čase nezachytíte žádný vstup, program se přesune nebo skončí.
[email protected]:~$ read -t 3
[email protected]:~$
Při pohledu na výstup to nemusí být zřejmé, ale terminál čekal tři sekundy, než vypršel časový limit a ukončil čtecí program.
Závěr
Doufám, že tento tutoriál vám pomohl začít s příkazem read v Linuxu. Jako vždy rádi slyšíme od našich čtenářů o obsahu, který je zajímá. Zanechte komentář níže a podělte se s námi o své myšlenky!