Búsqueda de sitios web

Guía para el comando de lectura de Linux


Introducción

Mientras trabajamos con la línea de comandos de Linux, a menudo necesitamos interactuar con la entrada del usuario o de los archivos. Aquí es donde resulta útil el comando "leer". Es un comando simple pero poderoso que se puede usar de diversas formas para procesar entradas en Linux. Al aprender a usar el comando de lectura de varias maneras, podemos volvernos más competentes en el uso de este comando y automatizar tareas de manera más eficiente.

Cubramos todos los métodos y formatos del comando de lectura de Linux. Comenzaremos con lo básico, incluido cómo leer la entrada del usuario y cómo personalizar el delimitador de entrada. Luego pasaremos a temas más avanzados, como leer entradas de archivos y otros comandos.

Métodos básicos para usar el comando de lectura

El uso más básico del comando de lectura es leer la entrada del usuario. Para hacer esto, simplemente escriba "leer" seguido del nombre de una variable. Por ejemplo -

$ read name
Somdeb
$ echo "Hello $name"

Cuando se ejecuta este código, se le pedirá al usuario que ingrese su nombre. Una vez que hayan ingresado su nombre, el valor se almacenará en la variable "nombre" y el script generará "Hola" seguido del nombre.

Hello Somdeb

Métodos avanzados de uso del comando de lectura

El comando de lectura en Linux tiene opciones avanzadas que permiten una mayor flexibilidad y control sobre cómo se procesa la entrada. Exploremos estos métodos avanzados:

  • -d delim: esta opción nos permite especificar el delimitador de la línea de entrada, en lugar de utilizar el carácter de nueva línea predeterminado.

  • -u fd: de forma predeterminada, el comando de lectura lee la entrada de la entrada estándar (stdin), pero con esta opción, podemos leer la entrada de un descriptor de archivo específico.

  • -r: normalmente, el comando de lectura trata la barra invertida() como un carácter de escape, pero con esta opción, la barra invertida se trata como un carácter normal.

  • -t timeout: esta opción establece un tiempo de espera para leer la entrada, intentando leer la entrada durante un período determinado de segundos. Si se alcanza el tiempo de espera antes de recibir la entrada, el comando de lectura finaliza.

  • –p aviso: muestra un texto de aviso antes de solicitar información, lo que mejora la experiencia del usuario.

El comando de lectura tiene varios métodos avanzados que se pueden utilizar para personalizar su comportamiento. Uno de estos métodos es la opción -t", que nos permite establecer un tiempo de espera para el comando de lectura. Esto es útil cuando queremos leer la entrada del usuario, pero no queremos esperar indefinidamente a que ingrese la entrada.

$ if read -t 10 -p "Enter your name: " name; then
   echo "Hello $name"
else
   echo "Timed out!!"
fi

En este código, la opción "-t" se utiliza para establecer un tiempo de espera de 10 segundos para el comando de lectura. Si el usuario ingresa su nombre dentro de los 10 segundos, se almacenará en la variable "nombre" y el script generará "Hola" seguido del nombre del usuario. Si el usuario no ingresa su nombre dentro de los 10 segundos, el script mostrará "¡¡Se agotó el tiempo de espera!!".

Enter your name: Somdeb Nath
Hello Somdeb Nath

Otro método avanzado es la capacidad de leer múltiples valores en múltiples variables. Para hacer esto, simplemente enumere los nombres de las variables después del comando "leer", separados por espacios.

$ read firstname middlename lastname
Sk. Adil Hussain
$ echo "Hello [$firstname] [$middlename] [$lastname]"

En este código, se solicita al usuario que ingrese su nombre, segundo nombre y apellido. Una vez introducidos los valores, se almacenan en las variables “nombre”, “segundo nombre” y “apellido”, respectivamente. Y el script devolverá el siguiente resultado:

Hello [Sk.] [Adil] [Hussain]

Uso del comando read para leer entradas de archivos

Leer entradas de archivos puede resultar muy útil cuando queremos recuperar campos de datos específicos. Por ejemplo, consideremos un archivo que contiene datos para bicicletas (archivo.txt):

bike,model,year,vin
Honda,CRF450R,2022,JH2PE1030NK200013
Kawasaki,Z400,2021,JKAZR2A10MA042809
Yamaha,YZF-R6,2020,JYARJ28E8LA000081

Para leer esto, podemos usar un bucle para leer cada línea del archivo y procesarlo.

$ while read line; do
   echo $line
done < file.txt

En este código, el bucle " while " lee cada línea del archivo "file.txt" y lo almacena en la variable "line". El comando "echo" genera el valor de "línea". Este bucle continuará hasta que se hayan leído todas las líneas del archivo.

Uso del comando read para leer entradas de archivos

Cuando usamos el comando de lectura, también podemos leer la entrada de otros comandos, lo que puede resultar muy útil para procesar grandes cantidades de datos. Un caso de uso común es redirigir la salida de un comando a la entrada del comando de lectura.

A continuación se muestra un ejemplo de cómo redirigir la salida del comando ls y extraer los nombres de los archivos y sus derechos de acceso de la carpeta raíz:

$ ls -l / | while read -r line; do
   filename=$(echo $line | awk '{print $9}')
   rights=$(echo $line | awk '{print $1}')
   echo "File: $filename, Access Rights: $rights"
done

Usamos el comando ls -l/para enumerar todos los archivos en la carpeta raíz con sus derechos de acceso. La salida se canaliza a un bucle while que lee cada línea usando el comando de lectura. El comando awk extrae el nombre del archivo y los derechos de acceso de cada línea, que se imprimen mediante el comando echo.

File: , Access Rights: total
File: bin, Access Rights: lrwxrwxrwx
File: boot, Access Rights: drwxr-xr-x
File: cdrom, Access Rights: drwxrwxr-x
File: dev, Access Rights: drwxr-xr-x
File: etc, Access Rights: drwxr-xr-x

Conclusión

El comando de lectura es una herramienta poderosa para interactuar con la terminal de Linux. Se puede utilizar para leer entradas del usuario o de un archivo, y tiene varias opciones avanzadas que nos permiten personalizar su comportamiento. Al dominar el comando de lectura, podemos convertirnos en un usuario de Linux más eficaz y eficiente.