GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare il comando di lettura Bash

Introduzione

Il Bash read command è un'utilità integrata che legge il testo dall'input standard. Lo strumento offre molte funzionalità per leggere l'input dell'utente, contribuendo a rendere gli script Bash interattivi.

Questa guida spiega come read Bash comando funziona attraverso vari esempi e casi d'uso.

Prerequisiti

  • Accesso alla riga di comando/terminale.
  • Nozioni di base sull'utilizzo delle variabili di ambiente.

Sintassi di lettura Bash

La sintassi per Bash read il comando è:

read <options> <arguments>

Il read Il comando prende l'input dell'utente e divide la stringa in campi, assegnando ogni nuova parola a un argomento. Se ci sono meno variabili delle parole, read memorizza i termini rimanenti nella variabile finale.

La specifica dei nomi degli argomenti è facoltativa. Il comando memorizza l'input di un utente nel $REPLY variabile per impostazione predefinita.

Opzioni di lettura Bash

Il Bash read comando viene fornito con molte opzioni per controllare l'input dell'utente. Alcune opzioni non richiedono parametri aggiuntivi, mentre altre hanno parametri obbligatori.

La tabella seguente mostra tutte le possibili opzioni di comando e la loro descrizione.

Opzione Descrizione
-a <array> Assegna la sequenza di parole fornita a una variabile denominata <array> .
-d <delimiter> Legge una riga fino al <delimiter> fornito invece di una nuova riga.
-e Avvia una sessione di shell interattiva per ottenere la riga da leggere.
-i <prefix> Aggiunge il testo iniziale prima di leggere una riga come prefisso.
-n <number> Ritorna dopo aver letto il numero di caratteri specificato rispettando il delimitatore per terminare anticipatamente.
-N <number> Restituisce dopo aver letto il numero di caratteri specificato, ignorando il delimitatore.
-p <prompt> Emette la stringa di richiesta prima di leggere l'input dell'utente.
-r Disabilita le barre rovesciate per eseguire l'escape dei caratteri.
-s Non fa eco all'input dell'utente.
-t <time> Il comando scade dopo il tempo specificato in secondi.
-u <file descriptor> Lettura dal descrittore di file invece dello standard input.

Continua a leggere per vedere come leggere il comando funziona attraverso vari esempi.

Esempi di lettura di Bash

Il read funzioni di comando senza argomenti o opzioni. Per testare il comando, segui i passaggi seguenti:

1. Apri il terminale.

2. Scrivi il comando e premi Invio :

read

Il prompt attende l'input dell'utente.

3. Digita una frase e premi Invio .

Il terminale torna al suo stato normale.

4. Recupera il messaggio con il comando echo:

echo $REPLY

Il $REPLY la variabile memorizza il read messaggio di comando.

Di seguito sono riportati esempi che dimostrano casi d'uso più complessi per Bash read comando.

Argomenti

Salva l'input dell'utente in una variabile specificata fornendo un argomento:

read input

Recupera il messaggio con:

echo $input

In alternativa, dividi l'input dell'utente in variabili diverse aggiungendo più argomenti.

Ad esempio:

read var1 var2

L'input dell'utente si divide in singole parole. Recuperali con:

echo $var1
echo $var2

Quando l'input dell'utente ha più parole di quante siano le variabili, le parole extra vengono assegnate all'ultima variabile fornita:

read var1 var2
foo bar baz
echo $var1
echo $var2

Se ci sono meno parole rispetto alle variabili, le restanti variabili sono vuote.

Condutture

Piping prende l'output standard da un comando e lo analizza come input standard per un altro processo. Usa echo e invia le informazioni a read per un'analisi immediata. Ad esempio:

echo "Hello world!" | (read var1 var2; echo $var1; echo $var2)

Le parentesi creano una subshell con più comandi e le singole variabili vengono stampate sulla console.

Heredoc

Un altro modo per inserire il testo nel read comando sta usando la notazione heredoc. Ad esempio:

read var1 var2 <<< "Hello world!"
echo $var1
echo $var2

Il read il comando prevede un flusso di input letterale e l'identificatore di reindirizzamento (<<< ) inserisce l'erestring.

Delimitatori

Il read Il comando definisce due tipi di delimitatori:

1. Il delimitatore per il read comando.

Per impostazione predefinita, premendo Invio (nuova riga) termina il comando. Aggiungi il -d tag e fornire un delimitatore diverso tra virgolette per terminare in modo diverso.

Ad esempio:

read -d "-"

Invece di una nuova riga, il nuovo delimitatore è un trattino (- ) invece di una nuova riga. Il comando termina al raggiungimento del delimitatore, ignorando il numero di argomenti. La risposta in $REPLY oppure la variabile fornita memorizza l'input dell'utente senza il trattino (- ).

2. Il delimitatore per dividere i campi.

La variabile $IFS (Internal Field Separator) memorizza i delimitatori di parole. Il valore predefinito per cui le parole vengono divise è uno spazio " ". Imposta il $IFS variabile a un valore diverso per controllare questo comportamento.

Ad esempio, per separare le parole con dei trattini, usa:

IFS="-"
echo "Hello-world!" | (read var1 var2; echo $var1; echo $var2)

Aggiungi separatori diversi per dividere i campi in base a valori diversi:

IFS="-_"
echo "Hello_world-!" | (read var1 var2 var3; echo $var1; echo $var2; echo $var3)

Il separatore è lungo un carattere e $IFS prende ogni divisore indicato individualmente.

Richiesta

Utilizzare il comando di lettura per creare prompt interattivi. Aggiungi il -p tag e fornisci il testo del prompt, ad esempio:

read -p "Enter your username: " username

Il testo del prompt viene stampato e richiede l'input dell'utente. Il testo viene salvato nella variabile $username .

echo Your username is $username.

Usa il -p opzione negli script Bash per lavorare con la creazione di prompt.

Nascondi input utente

Il read comando offre il -s tag per nascondere l'input di informazioni sensibili. Un caso d'uso comune consiste nel combinare -s con il -p tag per creare una richiesta di password.

Ad esempio:

read -p "Enter your password: "$'\n' -s password

L'input dell'utente è invisibile. Tuttavia, facendo eco al messaggio viene visualizzata la password:

echo $password

Fai attenzione a questo comportamento quando usi read negli script che richiedono le password.

Imposta limite caratteri

Il comando di lettura offre due opzioni quando si limita il numero di caratteri per l'immissione dell'utente:

1. Usa il -n opzione e fornire un numero per impostare il limite di caratteri. Ad esempio:

read -n 3

Premi Invio dopo un carattere per terminare il comando prima di raggiungere il limite di caratteri. Senza premere Invio , il comando esce automaticamente dopo tre caratteri.

2. Usa il -N opzione e fornire un numero per impostare il limite di caratteri ignorando il delimitatore. Ad esempio:

read -N 3

Premendo Invio non termina il comando. Tuttavia, la sequenza di tasti conta come un carattere.

Imposta timeout

Imposta un timeout su read per limitare il tempo impiegato per inserire il testo:

read -t 5

Il comando termina automaticamente dopo il limite di tempo previsto.

Array

Invece di utilizzare singole variabili per memorizzare una stringa, aggiungi il -a opzione per salvare l'input in un array. Ad esempio:

read -a array <<< "Hello world!"

Recupera gli elementi dell'array con:

echo ${array[0]}
echo ${array[1]}

In alternativa, usa un ciclo for per scorrere l'array.

Caratteri di escape e barre rovesciate

Il read il comando consente di dividere input lunghi in più righe utilizzando barre inverse. Ad esempio:

read password prompt terminal output
Hello \
world\
!

Premendo Invio dopo che la barra rovesciata non termina il comando e si aspetta un ulteriore input nella riga successiva.

Per ignorare l'interpretazione della barra rovesciata, aggiungi -r opzione:

read -r <<< "Hello\world!"; echo $REPLY

Utilizzare questa opzione durante l'analisi dei percorsi dei file e di qualsiasi testo in cui la barra rovesciata ha un significato.


Linux
  1. Come usare il comando sed di Linux

  2. Come usare il comando Linux grep

  3. Come usare il comando cronologia in Linux

  4. Come utilizzare il comando basename?

  5. Come utilizzare il comando "schermo" in Linux

Come usare il comando nmap

Come utilizzare il comando fd sul sistema Linux

Come utilizzare il comando wget in Linux?

Come usare il comando xargs in Linux?

Come utilizzare il comando RPM in Linux

Come utilizzare il comando which in Linux