GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar el comando de lectura Bash

Introducción

El Bash read El comando es una utilidad integrada que lee el texto de la entrada estándar. La herramienta ofrece muchas funcionalidades para leer la entrada del usuario, lo que ayuda a que los scripts de Bash sean interactivos.

Esta guía explica cómo Bash read El comando funciona a través de varios ejemplos y casos de uso.

Requisitos previos

  • Acceso a la línea de comando/terminal.
  • Conceptos básicos para trabajar con variables de entorno.

Sintaxis de lectura bash

La sintaxis para Bash read el comando es:

read <options> <arguments>

El read El comando toma la entrada del usuario y divide la cadena en campos, asignando cada nueva palabra a un argumento. Si hay menos variables que palabras, read almacena los términos restantes en la variable final.

Especificar los nombres de los argumentos es opcional. El comando almacena la entrada de un usuario en $REPLY variable por defecto.

Opciones de lectura bash

El Bash read El comando viene con muchas opciones para controlar la entrada del usuario. Algunas opciones no requieren parámetros adicionales, mientras que otras tienen parámetros obligatorios.

La siguiente tabla muestra todas las opciones de comando posibles y su descripción.

Continúe leyendo para ver cómo funciona el comando de lectura funciona a través de varios ejemplos.

Bash leer ejemplos

El read funciones de comando sin argumentos ni opciones. Para probar el comando, siga los pasos a continuación:

1. Abra la terminal.

2. Escribe el comando y presiona Enter :

read

El indicador espera la entrada del usuario.

3. Escribe una oración y presiona Entrar .

El terminal vuelve a su estado normal.

4. Recupera el mensaje con el comando echo:

echo $REPLY

El $REPLY variable almacena la read mensaje de comando.

A continuación se muestran ejemplos que demuestran casos de uso más complejos para Bash read comando.

Argumentos

Guarde la entrada del usuario en una variable específica proporcionando un argumento:

read input

Recuperar el mensaje con:

echo $input

Alternativamente, divida la entrada del usuario en diferentes variables agregando múltiples argumentos.

Por ejemplo:

read var1 var2

La entrada del usuario se divide en palabras individuales. Recupéralas con:

echo $var1
echo $var2

Cuando la entrada del usuario tiene más palabras que variables, las palabras adicionales se asignan a la última variable proporcionada:

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

Si hay menos palabras que variables, las variables restantes están vacías.

Tuberías

Piping toma la salida estándar de un comando y la analiza como entrada estándar para otro proceso. Usar echo y canalice la información para read para el análisis inmediato. Por ejemplo:

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

Los paréntesis crean una subcapa con varios comandos y las variables individuales se imprimen en la consola.

Heredoc

Otra forma de ingresar texto en el read El comando está usando la notación heredoc. Por ejemplo:

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

El read El comando espera un literal de flujo de entrada y el identificador de redirección (<<< ) ingresa la cadena aquí.

Delimitadores

El read El comando define dos tipos de delimitadores:

1. El delimitador para read dominio.

De forma predeterminada, al pulsar Intro (nueva línea) finaliza el comando. Agregue el -d etiquete y proporcione un delimitador diferente entre comillas para terminar de manera diferente.

Por ejemplo:

read -d "-"

En lugar de una nueva línea, el nuevo delimitador es un guión (- ) en lugar de una nueva línea. El comando termina al llegar al delimitador, sin tener en cuenta el número de argumentos. La respuesta en $REPLY o la variable proporcionada almacena la entrada del usuario sin el guión (- ).

2. El delimitador para dividir campos.

La variable $IFS (Separador de campo interno) almacena los delimitadores de palabras. El valor predeterminado por el que se dividen las palabras es un espacio " ". Establecer el $IFS variable a un valor diferente para controlar este comportamiento.

Por ejemplo, para separar palabras con guiones, use:

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

Agregue diferentes separadores para dividir campos por diferentes valores:

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

El separador tiene una longitud de un carácter y $IFS toma cada divisor indicado individualmente.

Aviso

Use el comando de lectura para crear avisos interactivos. Agrega el -p etiquete y proporcione el texto del aviso, por ejemplo:

read -p "Enter your username: " username

El texto del mensaje se imprime y requiere la entrada del usuario. El texto se guarda en la variable $username .

echo Your username is $username.

Usa el -p opción en los scripts de Bash para trabajar con la creación de avisos.

Ocultar entrada de usuario

El read El comando ofrece el -s etiqueta para ocultar la entrada de información confidencial. Un caso de uso común es combinar -s con -p etiqueta para crear una solicitud de contraseña.

Por ejemplo:

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

La entrada del usuario es invisible. Sin embargo, hacer eco del mensaje muestra la contraseña:

echo $password

Tenga cuidado con este comportamiento cuando use read en scripts que solicitan contraseñas.

Establecer límite de caracteres

El comando de lectura ofrece dos opciones al limitar el número de caracteres para la entrada del usuario:

1. Utilice el -n y proporcione un número para establecer el límite de caracteres. Por ejemplo:

read -n 3

Pulsa Intro después de un carácter para finalizar el comando antes de alcanzar el límite de caracteres. Sin pulsar Intro , el comando sale automáticamente después de tres caracteres.

2. Usa el -N y proporcione un número para establecer el límite de caracteres mientras ignora el delimitador. Por ejemplo:

read -N 3

Pulsando Intro no finaliza el comando. Sin embargo, la pulsación de tecla cuenta como un carácter.

Establecer tiempo de espera

Establecer un tiempo de espera en read para limitar el tiempo necesario para introducir texto:

read -t 5

El comando finaliza automáticamente después del límite de tiempo proporcionado.

Arreglos

En lugar de usar variables individuales para almacenar una cadena, agregue el -a opción para guardar la entrada en una matriz. Por ejemplo:

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

Recupere los elementos de la matriz con:

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

Alternativamente, use un bucle for para iterar a través de la matriz.

Caracteres de escape y barras invertidas

El read El comando permite dividir entradas largas en varias líneas usando barras invertidas. Por ejemplo:

read password prompt terminal output
Hello \
world\
!

Pulsando Intro después de la barra invertida no finaliza el comando y espera más información en la siguiente línea.

Para ignorar la interpretación de la barra invertida, agregue -r opción:

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

Use esta opción cuando analice rutas de archivos y cualquier texto donde la barra invertida tenga significado.


Linux
  1. Cómo usar el comando sed de Linux

  2. Cómo usar el comando grep de Linux

  3. Cómo usar el comando de historial en Linux

  4. Cómo usar el comando id en Linux

  5. Cómo usar el comando "pantalla" en Linux

Cómo usar el comando nmap

Cómo usar el comando fd en el sistema Linux

¿Cómo usar el comando wget en Linux?

¿Cómo usar el comando xargs en Linux?

Cómo usar el comando RPM en Linux

Cómo usar el comando which en Linux

    Opción Descripción
    -a <array> Asigna la secuencia de palabras proporcionada a una variable llamada <array> .
    -d <delimiter> Lee una línea hasta el <delimiter> proporcionado en lugar de una nueva línea.
    -e Inicia una sesión de shell interactiva para obtener la línea a leer.
    -i <prefix> Agrega texto inicial antes de leer una línea como prefijo.
    -n <number> Regresa después de leer el número especificado de caracteres respetando el delimitador para terminar antes.
    -N <number> Regresa después de leer el número especificado de caracteres, ignorando el delimitador.
    -p <prompt> Envía la cadena de mensaje antes de leer la entrada del usuario.
    -r Deshabilitar barras diagonales inversas para caracteres de escape.
    -s No repite la entrada del usuario.
    -t <time> El comando expira después del tiempo especificado en segundos.
    -u <file descriptor> Leer del descriptor de archivo en lugar de la entrada estándar.