20 Caracteres, Strings y Wildcards
Fecha: 22 de septiembre, 2026
20.1 Estructura de declaración de variables en bash
La estructura básica para declarar una variable en bash es:
nombre_variable=valor
20.1.1 Reglas importantes para nombres de variables
20.1.2 Ejemplos de declaración correcta e incorrecta
✅ Correcto:
nombre="Juan"
edad=25
_variable="valor"
mi_nombre="Carlos"❌ Incorrecto:
nombre = "Juan" # Espacios alrededor del =
2nombre="Juan" # Comienza con número
mi-nombre="Juan" # Guion en lugar de guion bajo20.2 Acceder a variables con $
Para usar o acceder al valor de una variable, debes anteponer el símbolo $ al nombre:
nombre="Juan"
echo $nombre # Output: Juan
echo "Hola $nombre" # Output: Hola Juan20.3 Tipos de comillas y su comportamiento
20.3.1 Comillas dobles "..." - Expansión de variables
Las comillas dobles permiten la expansión de variables. Esto significa que el $ se interpreta como inicio de una variable:
nombre="Juan"
echo "Hola $nombre" # Output: Hola JuanAquí, $nombre se reemplaza por su valor Juan.
20.3.2 Comillas simples '...' - Sin expansión
Las comillas simples tratan todo literalmente. El $ no se interpreta como variable:
nombre="Juan"
echo 'Hola $nombre' # Output: Hola $nombreAquí, $nombre se imprime tal cual, sin reemplazarse.
20.3.3 Sin comillas - Expansión directa
Sin comillas, también se expanden las variables:
nombre="Juan"
echo Hola $nombre # Output: Hola Juan20.4 Caracteres
Los caracteres son unidades de información que se representan con símbolos. Pueden ser de varios tipos como alfanuméricos, números enteros, signos de puntuación. Varios caracteres son interpretados por la shell de manera especial. Estos se llaman caracteres especiales, claro, y permiten desarrollar alguna lógica, dependiendo del contexto. Por ejemplo, algunos caracteres: @ # . ? ! , / \ > ~ a µ g § R |(pipe).
Cada carácter se asocia a una combinación diferente de teclas en el teclado del computador. Representa un símbolo individual que puede ser:
- Letras: a, b, c, A, B, C, etc.
- Dígitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- Símbolos especiales:
!, @, #, $, %, &, *, (, ), -, _, +, =, etc. - Espacios en blanco: espacios, tabulaciones, saltos de línea
- Caracteres de control: caracteres invisibles que controlan el comportamiento (como el salto de línea)
20.5 Metacaracteres
20.5.1 ¿Qué son los metacaracteres?
Los metacaracteres son caracteres especiales que tienen un significado especial en bash, en lugar de representar su valor literal. Bash los interpreta como instrucciones o comandos, no como texto normal.
20.6 Strings
Los strings (o cadena de texto) son arreglos de caracteres. Es decir, es una combinación de uno o más caracteres que forman un texto.
"Hola" → string de 4 caracteres
"Bash es genial" → string de 14 caracteres (incluyendo espacios)
"12345" → string de 5 caracteres
"!@#$%" → string de 5 caracteres especiales
"" → string vacío (0 caracteres)
20.6.1 Características de los strings en bash
20.6.2 Inmutabilidad en contexto de asignación
Los strings en bash son inmutables en el sentido de que no puedes modificar un carácter individual directamente. Debes reasignar todo el string:
nombre="Juan"
nombre="Carlos" # Reasignación completa del string
echo $nombre # Output: Carlos20.6.3 Sensibilidad a mayúsculas y minúsculas
Los strings distinguen entre mayúsculas y minúsculas. Dos strings con diferente capitalización se consideran diferentes:
nombre="juan"
NOMBRE="JUAN"
echo $nombre # Output: juan
echo $NOMBRE # Output: JUAN
# Son variables diferentes20.6.4 Pueden contener espacios en blanco
Los strings pueden incluir espacios, tabulaciones y saltos de línea. Para preservarlos, debes usar comillas:
# Con comillas (preserva espacios)
frase="Hola mundo desde bash"
echo "$frase" # Output: Hola mundo desde bash
# Sin comillas (los espacios se interpretan como separadores)
echo Hola mundo # Output: Hola mundo (pero se trata como 2 argumentos)20.6.8 Pueden estar vacíos
Un string puede no contener ningún carácter (string vacío):
variable=""
echo "La variable está vacía: '$variable'" # Output: La variable está vacía: ''20.6.9 Concatenación automática / Unión
Bash permite concatenar strings simplemente colocándolos uno al lado del otro:
nombre="Juan"
apellido="Pérez"
# Concatenación sin espacios
completo=$nombre$apellido
echo $completo # Output: JuanPérez
# Concatenación con espacios
completo="$nombre $apellido"
echo $completo # Output: Juan Pérez
# Concatenación con variables y texto literal
mensaje="Hola, $nombre"
echo $mensaje # Output: Hola, Juan20.6.10 Longitud de strings
Puedes obtener la longitud de un string usando ${#variable}:
Ejemplos:
nombre="Juan"
longitud=${#nombre}
echo "La longitud es: $longitud" # Output: La longitud es: 4
# Ejemplo con string más largo
frase="Bash es genial"
echo ${#frase} # Output: 14 (incluyendo espacios)20.6.11 Extracción de subcadenas
Puedes extraer una parte de un string usando ${variable:inicio:longitud}:
Ejemplos:
nombre="Juan"
# Extraer desde posición 0, 2 caracteres
echo ${nombre:0:2} # Output: Ju
# Extraer desde posición 1, 2 caracteres
echo ${nombre:1:2} # Output: ua
# Extraer desde posición 2 hasta el final
echo ${nombre:2} # Output: an20.6.12 Sustitución de patrones
Puedes reemplazar partes de un string usando ${variable/patron/reemplazo}:
frase="Hola mundo mundo"
# Reemplazar la primera ocurrencia
echo ${frase/mundo/bash} # Output: Hola bash mundo
# Reemplazar todas las ocurrencias (con //)
echo ${frase//mundo/bash} # Output: Hola bash bash20.6.13 Eliminación de patrones
Puedes eliminar partes de un string:
nombre="Juan.txt"
# Eliminar desde el final hasta el patrón
echo ${nombre%.txt} # Output: Juan
# Eliminar desde el inicio hasta el patrón
echo ${nombre#Juan.} # Output: txt20.6.14 Conversión a mayúsculas y minúsculas
Bash permite convertir strings a mayúsculas o minúsculas (en versiones 4.0+):
nombre="Juan"
# Convertir a mayúsculas
echo ${nombre^^} # Output: JUAN
# Convertir a minúsculas
echo ${nombre,,} # Output: juan
# Convertir solo el primer carácter a mayúscula
echo ${nombre^} # Output: Juan20.6.15 Comparación de strings
Puedes comparar strings usando operadores:
nombre1="Juan"
nombre2="Juan"
nombre3="Carlos"
# Igualdad
echo "$nombre1 = $nombre2" # Output: Juan = Juan
# Desigualdad
echo "$nombre1 != $nombre3" # Output: Juan != Carlos20.6.16 Expansión de variables dentro de strings
La expansión de variables ocurre dentro de comillas dobles pero no en comillas simples:
nombre="Juan"
# Con comillas dobles (expansión)
echo "Hola $nombre" # Output: Hola Juan
# Con comillas simples (sin expansión)
echo 'Hola $nombre' # Output: Hola $nombre
# Sin comillas (expansión)
echo Hola $nombre # Output: Hola Juan20.6.17 Caracteres especiales y escape
Algunos caracteres tienen significado especial en bash. Puedes escaparlos con \:
# Caracteres especiales
echo "Precio: \$100" # Output: Precio: $100
echo "Comilla: \"Hola\"" # Output: Comilla: "Hola"
echo "Barra invertida: \\" # Output: Barra invertida: \
# Saltos de línea
echo -e "Línea 1\nLínea 2" # Output: Línea 1
# Línea 2Otras secuencias de escape comunes 📌
Además de \n, existen otras secuencias de escape útiles:
# \t = tabulación (espacios)
echo -e "Nombre:\tJuan"
# Output: Nombre: Juan
# \\ = barra invertida literal
echo -e "Ruta: C:\\Users\\Juan"
# Output: Ruta: C:\Users\Juan
# \" = comilla doble literal
echo -e "Dice: \"Hola\""
# Output: Dice: "Hola"20.6.18 Strings multilínea
Puedes crear strings que abarquen múltiples líneas:
# Usando comillas dobles
texto="Primera línea
Segunda línea
Tercera línea"
echo "$texto"
# Usando $'...' (permite secuencias de escape)
texto=$'Primera línea\nSegunda línea\nTercera línea'
echo "$texto"Resumen 🎯
- Saltos de línea literales (Enter real en el código): No necesitan
-eni\n - Secuencias de escape
\n: Necesitan-eo$'...'para interpretarse
20.7 Wildcards
Los wildcards (comodines) o wild characters son símbolos utilizados para representar uno o más caracteres. Se pueden utilizar con otros comandos para facilitar el procesamiento o búsqueda de archivos, directorios y datos en general.
| Wildcard | Significa | Ejemplo | Coincide con |
|---|---|---|---|
* |
Cero o más caracteres | *.txt |
archivo.txt, doc.txt, a.txt |
? |
Exactamente 1 carácter | archivo?.txt |
archivo1.txt, archivo2.txt |
[ ] |
Un carácter del conjunto | [abc]* |
archivo.txt, buscador.log, carpeta |
[!...] |
Un carácter NO en el conjunto | [!0-9]* |
archivo.txt (NO comienza con número) |
[a-z] |
Rango de caracteres | [a-z]* |
archivo.txt (comienza con minúscula) |
[0-9] |
Rango de números | *[0-9] |
archivo1, test2 |
El wildcard más usado es * porque es muy versátil.
El wildcard * me permitiría encontrar todos los archivos en una carpeta que tengan la palabra TESIS en ellos. Primero crea la carpeta:
mkdir taller_unixDespués, debemos generar estos archivos:
cd taller_unix/
touch MI_TESIS.tex MI_TESIS_tutor2.tex TESIS.tex TESIS_YA_ACABATE.tex TESIS_finaaaaal.tex TESIS_final.tex TESIS_tutor1.tex TESIS_tutor2.tex a_reporte_01.txt b_reporte_02.txt c_reporte_03.txt z_reporte_30.txt Enlista todos los archivos que comiencen con “
TESIS”.Enlista todos los archivos que terminen con el string “
.tex”Buscar todos los archivos contengan la palabra “
TESIS"pero con 3 caracteres desconocidos antes.Buscar los archivos que terminen con el número 1 o 2 en su nombre antes de la extensión del archivo (
.tex).Encontrar los archivos que terminen en dos números del 1 al 3 y del 0 al 2 antes del formato del archivo (
.txt).Encontrar todos los archivos con este formato
?_reporte_[0-3][0-3].txtEncontrar todos los archivos que contengan por
aoz.Borramos todos estor archivos que terminen en “.txt” y “.tex”
20.8 Material suplementario
- RSG Ecuador. Scripts en Bash
- RSG Ecuador. Wildcards y Streams
- RSG Ecuador. Expresiones regulares (regex)
- Wildcard Selection in Bash
- Expresiones regulares