Formación informática

Java | Joomla | MySQL

Debian - Tema 8.1: caracteres comodín

Hasta ahora hemos aprendido comandos sencillos de Linux y los hemos aplicado de forma única, sin encadenar varios.

En este tema vamos a aprender a usar una serie de herramientas de Linux que todo usuario linuxero tiene que conocer para administrar de una forma eficiente el sistema. A menudo basta con una línea de comandos adecuada para efectuar las mismas operaciones que unos cuantos clics de ratón a través de un administrador de archivos gráfico. Por lo tanto, podemos ahorrar bastante tiempo en la administración del sistema.

Entre otros temas, aprenderemos a:

  • Buscar archivos en el árbol de Linux, aplicando toda clase de filtros y tratamientos.
  • Filtraremos el contenido de archivos y las salidas de comandos con expresiones regulares.
  • Ordenaremos y separaremos los datos.
  • Veremos parcialmente el contenido de los archivos.
  • Concatenaremos comandos para usar toda su potencia de forma conjunta.

Todas estas herramientas son aplicables a archivos de texto plano, separados por comas o al propio directorio de Linux para la búsqueda de archivos. Vamos a empezar por un tema común a todos como son los caracteres comodín.

COMODIN ORDENADOR 3

8.1. Uso de caracteres comodines o genéricos

 

8.1.1. ¿Qué son?

Son caracteres especiales dedicados a la escritura de motivos en los nombres de archivos o comandos de un terminal. A menudo se necesitan consultar varios archivos que tengan alguna coincidencia en su nombre o en su contenido, es lo que se conoce como patrón de búsqueda. Aquí es donde más nos ayudan los caracteres comodín; por ejemplo que empiecen por la letra jota y terminen por la ce o que tengan una longitud determinada que concuerde con una estructura predeterminada. O cualquier otra cosa que se nos ocurra. Sólo hace falta un poco de soltura para poder conseguir solucionar casi cualquier problema que se nos plantee.

Los caracteres comodines pueden ser usados tanto de forma solitaria como conjunta entre ellos, potenciando todavía más su fuerza. Es decir, pueden usarse a la vez sin problema. Además, pueden usarse tantas veces como sea necesario para representar correctamente el patrón que necesitamos.

8.1.2. ¿Cúales son y cúal es su función?

8.1.2.1. Comillas dobles

Sirven para introducir cadenas que queremos se interpreten literalmente, es decir, tal y cómo lo hemos escrito. Tanto para comandos como para fijar valores de variables. Se escriben mediante la combinación de teclas Mayúsculas y 2.

Así por ejemplo si queremos devolver el mensaje Bienvenidos al curso tenemos que escribir:

josemariatc@debian:~$ echo "Bienvenidos al curso"

Bienvenidos al curso

Si queremos fijar una variable con una cadena de texto:

josemariatc@debian:~$ prueba="Esto es una prueba"

josemariatc@debian:~$ echo $prueba

Esto es una prueba

8.1.2.2. Comillas simples

Sirven para indicar al terminal que interpreta caracteres comodín como normales. Siguiendo el último ejemplo:

josemariatc@debian:~$ echo '$prueba'

$prueba

8.1.2.3. Acento grave

Sirven para introducir comandos dentro de cadenas literales. Se escriben con la tecla `Así si queremos mostrar un mensaje que nos diga el número de usuarios conectados tendríamos que escribir:

josemariatc@debian:~$ echo "El número de usuarios conectados es `who | wc -l`"

El número de usuarios conectados es 2

8.1.2.4. El asterisco

El asterisco (*) reemplaza una cadena de caracteres de cualquier longitud, incluso nula y los espacios. Puede estar situado en cualquier posición de una palabra: principio, mitad o final. Nunca sustituye al punto que indica que un archivo es oculto. Veamos algunos ejemplos explicativos:

  • Palabras que empiezan por jota de cualquier longitud: j*
  • Palabras que empiezan por jota, terminan por ele y tienen cualquier longitud: j*l
  • Palabras que termina por la letra ele, de cualquier longitud: *lPalabras con una e al menos en su nombre sin importar la posición que ocupe: *e*.

8.1.2.5. El signo de cerrar interrogación

El signo de cerrar interrogación (?) nos sirve para reemplazar cualquier carácter, excepto el punto al principio del archivo, pero solo reemplaza a un solo carácter.

Puede combinarse con el asterisco. Veamos algunos ejemplos aclaratorios:

  • Nombre con cuatro letras con una o en segunda posición: ?o??
  • Nombre que presenta una e en penúltima posición: *e?.
  • Nombre que presenta una ese en tercera posición y una a en penúltima, con cualquier longitud intermedia: ??s*a?
JOKER 2

8.1.2.6. Los corchetes

Los caracteres introducidos sin espacios, al menos que el espacio sea una posibilidad, entre corchetes ([]) forma una lista de posibles caracteres.

Si los caracteres son consecutivos según el orden de la tabla del código ASCII[1] se puede simplificar la orden separando el primero y el último carácter de la lista mediante un guion medio: A-Z. Esto nos obliga a colocarlo al principio o al final de nuestra lista si quisiésemos introducir el guion medio como una opción más. Hay que recordar que Unix distingue entre mayúsculas y minúsculas. Además, existen en el Shell ciertas clases de caracteres predefinidos para búsquedas muy usadas. Son las siguientes:

[:alnum:]      Corresponde a los caracteres alfanuméricos, es decir, equivale a [A-Za-z0-9].

[:alpha:]       Muestra caracteres alfabéticos, es decir, equivale a [A-Za-z].

[:digit:]         Corresponde a las cifras, es decir, equivale a [0-9].

[:graph:]       Corresponde a los caracteres comprendidos entre ASCII 33 y ASCII 126.

[:lower:]        Corresponde a las letras minúsculas, es decir, equivale a [a-z].

[:space:]       Corresponde a cualquier espacio en blanco.

[:upper:]       Corresponde a las letras mayúsculas, es decir, equivale a [A-Z].

[:xdigit:]        Corresponde a las cifras hexadecimales, es decir, equivale a [0-9A-Fa-f].

Veamos algunos ejemplos:

  • Para listar los archivos cuyo nombre contiene una letra be o una letra hache en segunda posición y tienen cualquier longitud, el patrón sería ?[bh]*.
  • Si en la orden anterior, quisiésemos añadir todos los archivos que en segunda posición tienen una b,c,d,e,f,g o h, entonces tendríamos que escribir ?[b-h]*. ¡Ojo que este patrón incluye sólo minúsculas!
  • Sustituye a las letras a y be en primer y segunda posición: [ab-] o [-ab].

8.1.2.7. Las llaves

Las llaves ({}) permiten especificar listas de motivos separadas por una coma. Así, la sintaxis {abc,def} se reemplaza por la cadena abc o la cadena def ubicada en la posición que indiquemos. Dentro de las llaves puede ir cualquier operador. La coma se puede interpretar como una condición de tipo o.

Veamos algunos ejemplos:

  • Nombres de archivo que empiezan por la cadena az o la cadena ro: {az,ro} .
  • Palabras de cualquier longitud con la letra erre en segunda posición, la o en tercera y la ese o la jota en cuarta; o con una a en segunda posición y de cualquier longitud: {*ro[sj]*,?a*}

8.1.2.8. El símbolo del dólar

El símbolo del dólar ($) sirve para indicar la última posición de un patrón. Así si queremos buscar palabras que terminen por la letra e: e$. Puede usarse solamente con algunos comandos o dentro de los corchetes.

8.1.2.9. Carácter de negación

Si queremos conseguir el efecto contrario al que buscamos, entonces tendremos que hacer uso de los caracteres de negación del patrón. En Linux podemos usar el signo de cerrar exclamación (!) o un acento circunflejo (^) colocado en la primera posición de todo el patrón. Es una negación de lo que viene detrás. Así por ejemplo el patrón ^A* nos permitirá buscar palabras que no empiecen por la letra a.

8.1.2.10. La barra vertical o pipe

Se escribe mediante la combinación de teclas AltGr+1 (|). Sirve para encadenar varios comandos de Linux que el Shell ejecutará en el orden que escribamos. Así se pueden usar dos o más comandos que ejecuten tareas complementarias. 

8.1.2.11. Et

El símbolo et (&), conocido en inglés como ampersand, nos permite ejecutar dos o más comandos a la vez. Uno a continuación de otro. Se muestran tantas salidas cómo comandos se ejecuten y un mensaje de los comandos ejecutados.

En el siguiente ejemplo mostramos el número de usuarios conectados a Linux seguido de un mensaje informativo:

josemariatc@debian:~$ who & echo "El número de usuarios conectados es `who|wc -l`"

[1] 2029

josemariatc :0           2019-06-10 10:08 (:0)

josemariatc pts/0        2019-06-10 10:13 (:0)

El número de usuarios conectados es 2

[1]+  Hecho                   who

8.1.2.12. Doble Et

El doble símbolo et (&&), conocido en inglés como ampersand, nos permite ejecutar dos o más comandos a la vez. Uno a continuación de otro. Se muestran tantas salidas cómo comandos se ejecuten y no se muestra un mensaje de los comandos ejecutados.

En el siguiente ejemplo mostramos el número de usuarios conectados a Linux seguido de un mensaje informativo:

josemariatc@debian:~$ who && echo "El número de usuarios conectados es `who|wc -l`"

josemariatc :0           2019-06-10 10:08 (:0)

josemariatc pts/0        2019-06-10 10:13 (:0)

El número de usuarios conectados es 2

[1] http://es.wikipedia.org/wiki/ASCII

 Debian - Tema 7.11: ejercicios propuestos <- | ->  Debian - Tema 8.2: búsqueda en el árbol de directorios 
   GNU/Linux - Temario

Escribir un comentario

Aunque los comentarios no expresan la opinión del administrador del sitio web, éste si que tiene una responsabilidad legal sobre lo que aparece. Por lo tanto, habrá una labor de moderación de los mensajes. No se permitirán mensajes ofensivos ni publicidad


Código de seguridad
Refescar

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-Ley 13/2012, de 30 de marzo. Si continúa navegando consideramos que acepta el uso de cookies. . Más información