Comodín

Comodín
Cuando necesitamos buscar cualquier cosa usando comandos de shell, entonces necesitamos definir un patrón para buscar. Los caracteres comodín se usan para definir el patrón para buscar o hacer coincidir el texto en los datos de cadena en el shell bash. Otro uso común de los personajes comodín es crear expresiones regulares. En este tutorial se muestra cómo puede usar diferentes tipos de caracteres comodines para buscar archivos.

Personajes comodín

Los tres personajes principales comodines son,

  • Estrella o asterisco (*)
  • Signo de interrogación (?)
  • Corchetes ([])

El asterisco (*) se usa para buscar un (s) carácter (s) en particular por cero o más veces. Signo de interrogación (?) se usa para buscar un número fijo de caracteres donde cada signo de interrogación (?) indica cada carácter. Los soportes cuadrados se utilizan para que coincidan con los caracteres de un rango definido o un grupo de caracteres. Los usos de estos caracteres se muestran en la siguiente parte de este tutorial.

Uso de asterisco (*)

Asterisk (*) se puede usar de varias maneras con los comandos de shell para buscar archivos. Se muestra un uso diferente del asterisco (*) en los siguientes ejemplos.

Ejemplo - 1: Buscar archivo específico con nombre de archivo y '*'

'ls' El comando se utiliza para encontrar la lista de archivos y carpetas del directorio actual. 'ls a*' El comando buscará e imprimirá todos los nombres de archivo del directorio actual que comienza con el carácter, 'a'.

$ LS
$ ls a*

Producción:

Según la siguiente salida, existen 12 archivos en el directorio actual que comienza con el personaje, 'A'.

Ejemplo - 2: Buscar archivo con una extensión particular y '*'

Puede buscar cualquier archivo utilizando el asterisco (*) y la extensión del archivo. Si desea buscar todos los archivos con el '.TXT' extensión del directorio actual luego ejecute el siguiente comando desde el terminal. Aquí, el nombre de archivo puede ser cualquier personaje y cualquier número de caracteres.

$ ls *.TXT

También puede buscar archivos de diferentes extensiones utilizando el asterisco (*). El siguiente comando buscará cualquier archivo con extensión '.mierda o '.TXT'

$ ls *.mierda.TXT

Producción:

La salida muestra la lista de todos los archivos existentes del directorio actual con la extensión '.sh 'y'.TXT.

Ejemplo - 3: Eliminar archivo por coincidencia parcial y '*'

Puede usar el asterisco (*) para hacer coincidir cualquier nombre de archivo parcialmente. El siguiente comando eliminará el archivo que contiene el 'prueba' palabra en cualquier parte del nombre de archivo.

$ LS
$ rm *prueba *
$ LS

Producción:

La siguiente salida muestra que existen dos archivos en el directorio actual que contiene la palabra 'prueba' y estos archivos se han eliminado después de ejecutar el comando 'RM'.

Uso del signo de interrogación (?)

Cuando conoce los números exactos de caracteres que desea buscar, entonces el signo de interrogación (?) Se puede usar comodín. Los siguientes ejemplos muestran el uso diferente del signo de interrogación (?) comodín.

Ejemplo - 1: Buscar archivo con nombre de archivo y '?'

Supongamos, la extensión del archivo, el número total de caracteres de un archivo y algunos caracteres del archivo son conocidos, entonces puede usar este comodín para buscar el archivo. El primer comando buscará aquellos archivos que tienen la extensión '.TXT'. El segundo comando buscará aquellos archivos que tienen cuatro caracteres, el último carácter es 't' y la extensión del archivo es '.TXT'.

$ ls *.TXT
$ LS ???T.TXT

Producción:

La salida muestra que existen 7 archivos en el directorio actual con el '.Existe la extensión de txt y un archivo de texto que tiene 4 caracteres y el último carácter es 't'.

Ejemplo -2: buscar archivo con extensión y '?'

Supongamos que conoce el nombre de archivo y el número total de caracteres de la extensión del archivo, entonces puede usar el signo de interrogación (?) comodín para buscar el archivo. El siguiente comando buscará el archivo con el nombre de archivo 'Hola' y la extensión tiene tres caracteres.

$ LS
$ ls hola.???

Producción:

Según la salida, existen dos archivos en el directorio actual que tiene el nombre, 'hola' y la extensión es de tres caracteres de largo.

Uso de soportes cuadrados ([[])

Se pueden usar diferentes rangos de caracteres o grupo de caracteres dentro de los soportes cuadrados ([]) para buscar archivos basados ​​en el rango.

Ejemplo -1: Buscar archivos de cualquier extensión con dos valores de rangos

El siguiente comando buscará cualquier archivo cuyo nombre contenga cualquier carácter dentro de 'A-P'y cualquier dígito dentro'0-5'Y la extensión del archivo puede ser cualquier personaje.

$ LS
$ LS [A-P0-5]*.*

Producción:

La siguiente salida muestra la lista de todos los archivos que coinciden con el patrón utilizado en el comando.

Ejemplo-2: el archivo de búsqueda comienza con un personaje en particular y es seguido por otro personaje

En este ejemplo, el segundo comando buscará los nombres de archivo que comienzan con cualquiera de estos caracteres [AFGH] seguido del personaje 'O' con cualquier extensión.

$ LS
$ ls [afgh]*o*

Producción:

La siguiente salida muestra la lista de todos los archivos que coinciden con el patrón utilizado en el comando.

Ejemplo-3: Busque los nombres de archivo con el valor de prefijo

El siguiente comando coincidirá con aquellos archivos cuyo nombre comienza con 'fn' y es seguido por un número dentro de 0 a 5.

$ ls fn [0-5]

El siguiente comando coincidirá con los archivos que contienen el nombre, 'Hola' y la extensión contiene cualquier carácter de T a Z.

$ ls hola.[T-Z]*

Producción:

La siguiente salida muestra la lista de todos los archivos que coinciden con el patrón utilizado en los comandos.

La clase de caracteres se puede usar en el tercer paréntesis para que coincidan con el nombre de archivo o la cadena particular en el script. Diferentes clases que se pueden usar en el patrón han descrito a continuación.

Nombre de la clase Objetivo
[:alfa:] Se utiliza para igualar con cualquier letra en mayúsculas y minúsculas y equivalente a [A-ZA-Z].
[:dígito:] Se usa para coincidir con cualquier dígito y es equivalente a [0-9].
[: Alnum:] Se usa para que coincida con cualquier alfabeto y dígito. Es equivalente a [A-ZA-Z].
[:superior:] Se usa para coincidir con solo el último y equivalente a [A-Z]
[:más bajo:] Se usa para coincidir con solo el último y equivalente a [A-Z]
[:blanco:] Se usa para que coincida con el espacio y la pestaña.
[:imprimir:] Se usa para combinar con caracteres imprimibles.
[: cntrl:] Se usa para que coincida con caracteres no impresionables.
[:espacio:] Se usa para coincidir con un espacio while.
[: xdigit:] Se usa para coincidir con dígitos hexadecimales.
[: ASCII:] Se usa para combinar con los caracteres ASCII.
[:palabra:] Se usa para caracteres alfanuméricos, incluido el bajo (_).

Los usos de cuatro clases en su mayoría usadas se han explicado en los siguientes cuatro ejemplos.

Ejemplo-1: uso de [: alfa:] en script bash

El siguiente script verificará que la entrada tomada del usuario contenga caracteres alfabéticos solamente.

#!/bin/bash
echo -n "¿Cuál es tu nombre?? "
# Asignar valor de entrada a la variable
nombre de lectura
# Verifique el valor de entrada contiene solo el alfabeto
if [["$ name" = ~ ^[[: alfa:]]]]; entonces
echo "tu nombre es $ nombre."
demás
Echo "Ingrese solo el carácter alfabético."
FI

Producción:
La siguiente salida muestra el mensaje para una entrada no válida y válida.

Ejemplo-2: uso de [: dígito:] en script bash

El siguiente script verificará que la entrada tomada del usuario contenga caracteres numéricos solamente.

#!/bin/bash
echo -n "Ingrese su identificación:"
# Asignar valor de entrada a la variable
Leer identificación
# Establecer el valor de identificación
Id = "id- $ id"
# Establezca el patrón usando [[: digit:]] clase
regex = "id-[[: digit:]]+"
# Verifique el valor de entrada contiene solo el número
if [[$ id = ~ $ regex]]; entonces
echo "$ id es válido."
demás
echo "$ id no es válido."
FI

Producción:

La siguiente salida muestra el mensaje para una entrada no válida y válida.

Ejemplo-3: Uso de [: Alnum:] en script bash

El siguiente script verificará que la entrada tomada del usuario contenga caracteres alfanuméricos solamente.

#!/bin/bash
echo -n "Ingrese su dirección:"
# Asignar valor de entrada a la variable
Leer ADDR
# Verifique el valor de entrada contiene el alfabeto y el número solo
if [[$ addr = ~ ^[[: alnum:]]]]; entonces
echo "La dirección es válida."
demás
Echo "La dirección no es válida."
FI

Producción:

La siguiente salida muestra el mensaje para una entrada no válida y válida.

Ejemplo-4: uso de [: superior:] en script bash

El siguiente script verificará que la entrada tomada del usuario contenga solo letras mayúsculas.

#!/bin/bash
echo -n "Ingrese su código en la carta de mayúsculas:"
# Asignar valor de entrada a la variable
código de lectura
# Verifique el valor de entrada contiene todos los últimos mayores
if [[$ code = ~ ^[[: superior:]]]]; entonces
El código de eco "es correcto."
demás
El código de echo "solo puede contener mayúsculas."
FI

Producción:

La siguiente salida muestra el mensaje para una entrada no válida y válida.

Conclusión

Los usos básicos de los caracteres comodines para buscar archivos en la terminal y validar datos utilizando script bash se han mostrado en este tutorial. Espero que los ejemplos que se muestran aquí ayuden a los usuarios de Linux a escribir patrones de expresión regulares correctamente para que coincidan con cualquier contenido para diferentes fines.