Bienvenidos a esta Guía Rápida de Linux para Hackers #17 Uso de Filtros, Pipeline y Globbing. Comparte este articulo y síguenos para recibir más capítulos y cursos gratis.

Esta guía es parte de un curso mucho más grande en donde te enseñamos a convertirte en hacker de 0 a 100. Desde los conocimientos más básicos hasta conseguir empleo.

En esta guía veremos desde cero un tema tan amplio como es Linux y lo haremos desde el punto de vista del hacking y la ciberseguridad.

Para saber más comente a continuación, respondemos todos y cada uno de los comentarios.

Índice

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Lista de lo que aprenderás en este artículo

  1. Uso de filtros en Linux y cómo funcionan con entrada/salida estándar.
  2. Comandos como cat, gzip, y gunzip para gestionar archivos de texto y compresión.
  3. El concepto de tuberías (pipeline) y su aplicación en Linux.
  4. Uso del comando comm para comparar archivos y analizar diferencias.
  5. Comandos avanzados como od, wc, cut, y uniq para manipular y analizar datos.
  6. Utilización del comando tee para redirigir la salida a archivos y terminal simultáneamente.
  7. Uso del comando tr para transformar texto y eliminar caracteres no deseados.
  8. Ordenamiento de datos con el comando sort, incluyendo orden numérico y por columnas.
  9. Filtrado avanzado de texto con el comando grep y expresiones regulares básicas/avanzadas.
  10. Globbing en Linux para manipulación de archivos usando comodines.
  11. Manejo de caracteres especiales y combinaciones lógicas en la línea de comandos.

Filtros de Linux

Los comandos de filtro de Linux aceptan datos de entrada de stdin (entrada estándar) y producen una salida en stdout (salida estándar). Transforman datos de texto sin formato en una forma significativa y se pueden usar con tuberías para realizar operaciones superiores.

Estos filtros son programas muy pequeños que están diseñados para una función específica y que pueden usarse como bloques de construcción.

Filtros Cat de Linux

Cuando se usa el comando cat dentro de las tuberías, no hace nada excepto mover stdin a stout.

Sintaxis:

cat <Nombre del archivo> | cat o tac | cat o tac |. . .  

Ejemplo:

 cat carlos.txt | tac | cat | cat | tac  

Mire la instantánea de arriba, la salida de un comando ‘cat’ o ‘tac’ pasa a otro como entrada.

 cat --help

También  te recomendamos consultar las páginas man:

 man cat

Gzip de Linux

Gzip (GNU zip) es una herramienta de compresión que se utiliza para truncar el tamaño de un archivo. De forma predeterminada, el archivo original se reemplazará por el archivo comprimido que termina con la extensión (.gz).

Para descomprimir un archivo puedes usar el comando gunzip y tu archivo original volverá.

Sintaxis:

gzip <archivo1> <archivo2> <archivo3>. . .   
gunzip <archivo1> <archivo2> <archivo3>. . .   

Ejemplo:

gzip archivo1.txt archivo2.txt  
gunzip archivo1.txt archivo2.txt  

Observa la captura de pantalla anterior: el comando gzip ha comprimido los archivos ‘file1.txt’ y ‘file2.txt’ . Los archivos comprimidos se muestran con la extensión (.gz). Mientras que el comando gunzip ha descomprimido los mismos archivos y se ha eliminado la extensión (.gz).

Opciones de gzip

Comprimir varios archivos juntos

Si desea comprimir más de un archivo junto, puede usar ‘cat’ y el comando gzip con el comando pipe.

Sintaxis:

cat <archivo1> <archivo2>. . | comprimir > <nuevoArchivo.gz>   

Ejemplo:

cat archivo1.txt archivo2.txt | gzip > final.gz   

Observa la instantánea de arriba, ambos archivos ‘file1.txt’ y ‘file2.txt’ están comprimidos como ‘final.gz’ .

Gzip -l

El comando ‘gzip -l’ informa sobre la relación de compresión o cuánto se ha comprimido el archivo original.

Sintaxis:

gzip-l <archivo1> <archivo2>. .   

Ejemplo:

gzip -l final.gz jtp.txt.gz    

Mire la instantánea de arriba, el comando «gzip -l final.gz jtp.txt.gz» muestra la proporción de ambos archivos.

El comando gzip tiene más opciones que puedes explorar

 gzip --help

También  te recomendamos consultar las páginas man:

 man gzip

Cómo comprimir un directorio

El comando gzip no podrá comprimir un directorio porque solo puede comprimir un único archivo. Para comprimir un directorio, debe utilizar el comando ‘tar’ .

El guión (-) no es obligatorio en el comando ‘tar’.

‘c’ es crear ,

‘v’ es para verbose, para mostrar la salida,

‘f’ para mencionar el destino de su archivo de salida,

‘z’ para especificar comprimir con gzip.

Sintaxis:

tar cf - <directorio> |comprimir > <nombreDirectorio>  

Ejemplo:

tar cf - hacker | gzip > hacker.tar.gz  

Mire la instantánea de arriba, el directorio ‘office’ está comprimido con el comando ‘tar’.

El comando tar tiene más opciones que puedes explorar

También  te recomendamos consultar las páginas man:

El comando comm

El comando ‘comm’ compara dos archivos o secuencias. De forma predeterminada, ‘comm’ siempre mostrará tres columnas . La primera columna indica los elementos no coincidentes del primer archivo, la segunda columna indica los elementos no coincidentes del segundo archivo y la tercera columna indica los elementos coincidentes de ambos archivos. Ambos archivos deben estar en orden para que se ejecute el comando ‘comm’.

Sintaxis:

comm <archivo1> <archivo2>  

Ejemplo:

comm archivo1.txt archivo2.txt  

Mira la instantánea de arriba,

La primera columna muestra los elementos no coincidentes del primer archivo ‘lista.txt’

La segunda columna muestra los elementos no coincidentes del segundo archivo ‘lista2.txt’

La tercera columna indica los elementos coincidentes de ambos archivos

Para mostrar una sola columna

Si desea mostrar una sola columna, deberá especificar el número de columnas que no se mostrarán.

Sintaxis:

comm -23 (Para mostrar la primera columna)
comm -13 (Para mostrar la segunda columna)
comm -12 (Para mostrar la tercera columna)

Ejemplo:

comm -23 lista.txt lista2.txt
comm -13 lista.txt lista2.txt
comm -12 lista.txt lista2.txt

Mire la instantánea de arriba, el número de columna que debe mostrarse no se menciona en el comando ‘comm’.

El comando comm tiene más opciones que puedes explorar

 comm --help

También  te recomendamos consultar las páginas man:

 man comm

El Comando od

El término “od” significa volcado octal. Muestra el contenido de un archivo en diferentes formatos legibles para humanos, como caracteres hexadecimales, octales y ASCII.

Sintaxis:

  1. od -b <Nombre del archivo>      (mostrar archivos en formato octal)  
  2. od -t x1 <Nombre del archivo>       (mostrar archivos en formato de bytes hexadecimales)  
  3. od -c <Nombre del archivo>      (mostrar archivos en formato de caracteres ASCII (con barra invertida))  

Ejemplo:

od -b lista.txt                            
od -t x1 lista.txt
od -c lista.txt 

Mire la instantánea anterior, el comando “od -b format.txt” se muestra en formato octal, el comando “od -t x1 format.txt” se muestra en formato hexadecimal, el comando “od -c format.txt” se muestra en caracteres ASCII donde una nueva línea se marcará con ‘\n’

También  te recomendamos consultar las páginas man:

 man od

Comando wc de Linux

El comando wc de Linux ayuda a contar las líneas, palabras y caracteres de un archivo. Muestra la cantidad de líneas, caracteres y palabras de un archivo. Generalmente se utiliza con barras verticales para realizar operaciones de conteo.

wc es la abreviatura de word count (conteo de palabras) . Es un comando que se utiliza principalmente para contar. Muestra un resultado de cuatro columnas de forma predeterminada. La primera columna muestra la cantidad de líneas disponibles en el archivo especificado, la segunda columna muestra la cantidad de palabras disponibles en el archivo, la tercera columna muestra la cantidad de caracteres disponibles en el archivo y la cuarta columna es el nombre del archivo en sí, que se proporciona como argumento.

El comando wc muestra una línea de recuentos para todos los archivos y, si el archivo se proporcionó como argumento, muestra el nombre del archivo que sigue a los recuentos. El comando wc muestra la línea final que tiene los recuentos acumulados junto con el nombre de archivo “total” si se proporciona más de un ARCHIVO. Los recuentos se muestran en orden, es decir, nuevas líneas, palabras, caracteres, bytes y longitud máxima de línea.

En un campo, todos los recuentos se muestran justificados a la derecha con al menos un espacio entre los campos; por lo tanto, los nombres de archivo y los números generalmente se alinean en las columnas correctamente. El ancho del campo de recuento varía según las entradas, por lo que no debemos confiar en un ancho de campo específico.

Sintaxis:

wc [OPCION]... [ARCHIVO]...  
wc [OPCION]... --archivos0-desde=F  

Opciones:

Algunas opciones de línea de comandos útiles compatibles con el comando wc son las siguientes:

  • -c, –bytes: Se utiliza para imprimir el número de bytes.
  • -m, –chars: se utiliza para imprimir el número de caracteres.
  • -l, –lines: Se utiliza para imprimir el recuento de nuevas líneas.
  • –files0-from=F: Se utiliza para leer la entrada de archivos especificados.
  • -L, –max-line-length: Se utiliza para imprimir el ancho máximo de visualización.
  • -w, –words: se utiliza para imprimir el recuento de palabras.
  • –help: Se utiliza para mostrar el manual de ayuda.
  • –version: Se utiliza para mostrar la información de la versión.

WC

Para mostrar la información completa de recuento de un archivo, ejecute el comando sin ningún argumento. Mostrará la cantidad de líneas, palabras y bytes del archivo. Ejecute el comando de la siguiente manera:

WC <archivo nombre>  

Considere el siguiente comando:

wc lista.txt  

El comando anterior mostrará la cantidad de líneas, palabras, bytes y el nombre del archivo “lista.txt”. Considere el siguiente resultado:

Mostrar información de recuento de varios archivos

Para visualizar la información completa de recuento de varios archivos a la vez, especifique los nombres de los archivos después del espacio (‘ ‘). Se ejecuta de la siguiente manera:

WC <archivo1> <archivo2>  

Considere el siguiente ejemplo:

wc lista.txt ls.txt  

El comando anterior mostrará la cantidad de palabras, la cantidad de caracteres y la cantidad de bytes de los archivos ‘exm.txt’ y ‘marks.txt’. Considere el siguiente resultado:

Mostrar el número de líneas en un archivo

La opción ‘-l’ se utiliza para mostrar el número de líneas de un archivo. Se ejecuta de la siguiente manera:

wc - l <archivo nombre>  

Considere el siguiente ejemplo:

wc -l exm.txt  

El comando anterior mostrará la cantidad de líneas de ‘exm.txt’. Considere el siguiente resultado:

Mostrar el número de caracteres en un archivo

La opción ‘-m’ se utiliza para mostrar la cantidad de caracteres de un archivo. Se ejecuta de la siguiente manera:

wc -m <archivo nombre>  

Considere el siguiente ejemplo:

wc -m lista.txt  

El comando anterior mostrará la cantidad de palabras del archivo ‘lista’. Considere el siguiente resultado:

Mostrar el número de bytes en un archivo

La opción ‘-c’ se utiliza para mostrar la cantidad de bytes de un archivo. Se ejecuta de la siguiente manera:

wc -c <archivo nombre>  

Considere el siguiente ejemplo:

wc -c list.txt  

El comando anterior mostrará la cantidad de bytes de un archivo. Considere el siguiente resultado:

Mostrar el número de palabras en un archivo

La opción ‘-w’ se utiliza para mostrar el número total de palabras de un archivo. Se ejecuta de la siguiente manera:

wc -w <archivo nombre>  

Considere el siguiente ejemplo:

wc -w list.txt  

El comando anterior mostrará la cantidad total de palabras del archivo ‘lista.txt’. Considere el siguiente resultado:

Contar el número de archivos en un directorio

Para contar la cantidad de archivos y carpetas de un directorio, combine el comando wc con el comando ls . Ejecútelo de la siguiente manera:

ls | wc -l  

El comando anterior mostrará el recuento de archivos del directorio de trabajo actual. Considere el siguiente resultado:

Muestra la longitud de la línea más larga

La opción ‘-L’ se utiliza para mostrar la longitud de la línea más larga de un archivo. Se ejecuta de la siguiente manera:

wc -L <archivo nombre>  

Considere el siguiente ejemplo:

wc -L lista.txt  

El comando anterior mostrará la longitud de la línea más larga del archivo ‘exm.txt’. Considere el siguiente resultado:

El comando wc tiene más opciones que puedes explorar

 wc --help

También  te recomendamos consultar las páginas man:

 wc comm

Comando de exit de Linux

Si bien el comando exit de Linux se utiliza para salir del shell actual y si bien no se usa como filtro es util conocerlo. Toma un parámetro como un número y sale del shell con un retorno de número de estado. Si no proporcionamos ningún parámetro, devolvería el estado del último comando ejecutado. El comando exit cierra un script y sale del shell.

Si tenemos más de una pestaña de shell, el comando de salida cerrará la pestaña en la que se ejecuta. Este es un comando integrado y no podemos encontrar una página de manual dedicada a esto.

Sintaxis:

 exit

Desde el comando anterior, después de presionar la tecla ENTER , se cerrará el terminal y finalizarán todos los procesos normales de ejecución del terminal.

El comando de salida es el más común y útil en Linux . Podemos utilizarlo muchas veces. Utiliza la función exit() para finalizar el proceso normal. Algunos puntos sobre el comando de salida son los siguientes:

  • Se utiliza para salir del script de shell con un estado de salida N.
  • Se puede utilizar para verificar si el script de shell se finalizó correctamente o no.
  • El estado de salida puede ser utilizado por otros comandos para realizar sus acciones.
  • Si no se especifica el valor de N, el estado de salida será el último comando ejecutado.
  • El valor de N se establece en 0 y representa la salida normal del shell.

Opciones:

El comando de salida no ofrece muchas opciones, pero admite las siguientes:

Salir sin ningún parámetro:

Si lo ejecutamos sin ningún parámetro simplemente cierra la terminal. Ejecútalo de la siguiente manera:

 exit

El comando anterior simplemente cerrará la terminal.

Salir con estado de salida:

Si pasamos un parámetro, se cerrará y devolverá el mismo estado de salida. Por ejemplo, si lo ejecutamos con un estado de salida 10, devolverá un estado de 10. Considere el siguiente comando:

exit 10  

El comando anterior cerrará la terminal y devolverá un estado de 10. Los estados de retorno son útiles ya que algunas veces se pueden rastrear para indicar un error. Por ejemplo, el estado de retorno ‘ 0′ significa que el programa se ejecutó correctamente y ‘ 1′ significa que el programa tiene errores menores.

Mostrar el último estado de devolución:

Para mostrar el estado de salida del último comando ejecutado, ejecute el comando “echo $?” de la siguiente manera:

echo $?  

El comando anterior mostrará el último estado devuelto. Considere el siguiente resultado:

Estado de salida de un script de shell

Vamos a crear un script, ‘carlos.sh’. Para crearlo, ejecute el siguiente comando:

cat > carlos.sh  
echo "Hola Mundo!!!"  
exit 0

Guarde el script anterior presionando las teclas CTRL+D. Ahora, ejecute el script ejecutando los siguientes comandos:

chmod +x carlos.sh  

El comando anterior ejecutará el script. Ahora, verifique el estado de salida del script ejecutando el siguiente comando:

echo $?  

Considere el siguiente resultado:

A partir del resultado anterior, podemos ver que el estado de salida del script dado es 0, lo que significa que se ejecutó correctamente.

También  te recomendamos consultar las páginas man para este comando:

 man exit

El comando cut

El comando cut de Linux es útil para seleccionar una columna específica de un archivo. Se utiliza para cortar secciones específicas por posición de byte, carácter y campo y escribirlas en la salida estándar. Corta una línea y extrae los datos de texto. Es necesario pasar un argumento con él; de lo contrario, arrojará un mensaje de error.

Para cortar una sección específica, es necesario especificar el delimitador. Un delimitador decidirá cómo se separan las secciones en un archivo de texto. Los delimitadores pueden ser un espacio (‘ ‘), un guion (-), una barra (/) o cualquier otra cosa. Después de la opción ‘-f’, se menciona el número de columna.

Sintaxis:

 cut OPCION... [ARCHIVO]...  

Opciones:

El comando cut utiliza las siguientes opciones de línea de comando para hacerlo más específico:

-b, –bytes=LISTA: Se utiliza para cortar una sección específica por bytes.

-c, –characters=LISTA: Se utiliza para seleccionar los caracteres especificados.

-d, –delimiter=DELIM: Se utiliza para cortar una sección específica mediante un delimitador.

-f, –fields=LIST: Se utiliza para seleccionar los campos específicos. También imprime cualquier línea que no contenga ningún carácter delimitador, a menos que se especifique la opción -s.

-n: Se utiliza para ignorar cualquier opción.

–complement: Se utiliza para complementar el conjunto de bytes, caracteres o campos seleccionados

-s, –only-delimited: Se utiliza para no imprimir líneas que no tengan delimitadores.

–output-delimiter=CADENA: Esta opción se especifica para utilizar una CADENA como delimitador de salida; el valor predeterminado es utilizar «delimitador de entrada».

-z, –zero-terminated: se utiliza si el delimitador de línea es NUL, no nueva línea.

–help: Se utiliza para mostrar el manual de ayuda.

–version: Se utiliza para mostrar la información de la versión.

Uso del guión (-) como delimitador

Para cortar utilizando el guión (-) como delimitador, ejecute el siguiente comando:

cut -d- -f (columnaNumero) <Nombre del archivo>    

Considere los siguientes comandos:

cut -d- -f2 lista.txt    
cut -d- -f1 lista.txt    

De los comandos anteriores, la salida se eliminará del guión (-). Considere la salida siguiente:

Como podemos ver en el resultado anterior, nuestro delimitador es el guión (-); por lo tanto, hemos utilizado (-) después de (-d). El comando «cut -d- -f1 lista.txt» muestra la columna 1 y el comando «cut -d- -f2 lista.txt» muestra la columna 2.

Usando el espacio como delimitador

Si queremos utilizar el espacio como delimitador, entonces tenemos que entrecomillar el espacio (‘ ‘) con el comando cut. Para cortar la salida utilizando el espacio como delimitador, ejecute el comando de la siguiente manera:

 cut -d ' ' -f(columnaNumber) <Nombre del archivo>    

Considere los siguientes comandos:

 cut -d ' ' -f1 lista.txt 
 cut -d ' ' -f2 lista.txt  
 cut -d ' ' -f3 lista.txt  

A partir de los comandos anteriores, se recortará la salida después del espacio para la columna especificada. Los comandos anteriores producirán la salida de la siguiente manera:

De la salida anterior, nuestro delimitador es el espacio; por lo tanto, hemos utilizado (‘ ‘) después de (-d). El comando «cut -d ‘ ‘ -f2 lista.txt» muestra la columna 2, el comando «cut -d ‘ ‘ -f3 lista.txt» muestra la columna 3.

Cortar por byte

La opción ‘-b’ se utiliza para cortar una sección de línea por byte. Para cortar un archivo por su posición de byte, ejecute el comando de la siguiente manera:

cut -b <byte número> <archivo nombre>  

Considere el siguiente comando:

  1. cut -b 2 lista.txt  

El comando anterior cortará la línea en una posición de byte específica. Considere el siguiente resultado:

Cortar por carácter

La opción ‘-c’ se utiliza para cortar una sección específica por carácter. Sin embargo, estos argumentos de caracteres pueden ser un número o un rango de números, una lista de números separados por comas o cualquier otro carácter.

Para cortar por carácter específico, ejecute el comando de la siguiente manera:

  1. cut -c < personajes> <archivo nombre>  

Considere los siguientes comandos:

  1. cut -c 1,6 lista.txt  
  2. cut -c 1-3 lista. txt  

Los comandos anteriores cortarán la línea según los caracteres especificados. Considere el siguiente resultado:

De la salida anterior, podemos ver que el primer comando corta el primer y el sexto carácter de cada línea, y el segundo comando corta del primero al tercer carácter de cada línea.

Corte por patrón complementario

La opción ‘–complement’ se utiliza para cortar según el complemento. Esta opción es compatible con la versión BSD del corte. Para cortar según el patrón de complemento, ejecute el comando de la siguiente manera:

  1. cut –complemento < complementar patrón> <archivo nombre>  

El patrón de complemento puede ser una lista de bytes, caracteres o campos.

Considere el siguiente comando:

cut --complement -c 1 lista.txt  

    El comando anterior cortará el archivo por el primer carácter. Considere el resultado siguiente:

    El comando cut tiene más opciones que puedes explorar

     cut --help

    También  te recomendamos consultar las páginas man:

     man cut

    Comando uniq de Linux

    El comando uniq de Linux se utiliza para eliminar todas las líneas repetidas de un archivo. También se puede utilizar para mostrar un recuento de cualquier palabra, solo líneas repetidas, ignorar caracteres y comparar campos específicos. Es uno de los comandos más utilizados en el sistema Linux . A menudo se utiliza con el comando sort porque compara caracteres adyacentes. Descarta todas las líneas idénticas y escribe el resultado.

    Sintaxis:

    uniq [OPCIÓN]... [ENTRADA [SALIDA]]  

    Opciones:

    Algunas opciones útiles de la línea de comandos del comando uniq son las siguientes:

    -c, –count: antepone las líneas con el número de ocurrencias.

    -d, –repeated: se utiliza para imprimir líneas duplicadas, una para cada grupo.

    -D: Se utiliza para imprimir todas las líneas duplicadas.

    –all-repeated[=MÉTODO]: Es bastante similar a la opción ‘-D’, la diferencia entre ambas opciones es que permite la separación de grupos con una línea vacía.

    -f, –skip-fields=N: Se utiliza para evitar la comparación de los primeros N campos.

    –group[=MÉTODO]: Se utiliza para mostrar todos los elementos y separa los grupos con una línea vacía.

    -i, –ignore-case: se utiliza para ignorar las diferencias al comparar.

    -s, –skip-chars=N: Se utiliza para evitar la comparación de los primeros N caracteres.

    -u, –unique: se utiliza para imprimir líneas únicas.

    -z, –zero-terminated: Se utiliza para que el delimitador de línea sea NUL y no en modo nueva línea.

    -w, –check-chars=N: Se utiliza para comparar no más de N caracteres en líneas.

    –help: Se utiliza para mostrar la documentación de ayuda.

    –version: Se utiliza para mostrar la información de la versión.

    Eliminar líneas repetidas

    Para eliminar líneas repetidas de un archivo, ejecute el comando básico uniq de la siguiente manera:

    sort laprovittera | uniq  

    El comando anterior eliminará las líneas duplicadas del archivo ‘dupli.txt’. Observe el resultado que se muestra a continuación:

    Del resultado anterior, se ignoran las palabras repetidas.

    Contar el número de ocurrencias de una palabra

    Podemos contar la cantidad de veces que aparece una palabra utilizando el comando uniq. La opción ‘-c’ se utiliza para contar la palabra. Ejecútelo de la siguiente manera:

    sort laprovittera | uniq -c  

    El comando anterior contará las palabras que se incluyen en ‘dupli.txt’. Considere el siguiente resultado:

    A partir del resultado anterior, el comando “sort dupli.txt | uniq -c” cuenta la cantidad de veces que se repite una palabra.

    Mostrar las líneas repetidas

    La opción ‘-d’ se utiliza para mostrar solo las líneas repetidas. Solo mostrará las líneas que estarán más de una vez en un archivo y escribirá la salida en la salida estándar. Considere el siguiente comando:

    sort laprovittera | uniq -d  

    El comando anterior mostrará solo las líneas repetidas. Considere el siguiente resultado:

    Muestra las líneas únicas

    La opción ‘-u’ se utiliza para mostrar solo las líneas únicas (que no se repiten). Solo mostrará las líneas que aparecen una sola vez y escribirá el resultado en la salida estándar. Considere el siguiente comando:

    sort laprovittera | uniq -u  

    El comando anterior mostrará únicamente las líneas únicas del archivo ‘dupli.txt’. Considere el siguiente resultado:

    Ignorar caracteres en la comparación

    La opción ‘-s’ se utiliza para ignorar los caracteres en la comparación. Ignorará la cantidad especificada de caracteres y mostrará el resultado en la salida estándar. Considere el siguiente comando:

    uniq laprovittera | uniq -s 2  

    El comando anterior ignorará los dos primeros caracteres en comparación con el archivo ‘dupli.txt’. Considere el siguiente resultado:

    Ignorar campos en la comparación

    La opción ‘-f’ se utiliza para ignorar los campos. Considere el siguiente comando:

    uniq -f 2 laprovittera

    El comando anterior no comparará los dos primeros campos del archivo ‘dupli2.txt’. Considere el siguiente resultado:

    De la salida anterior, se omiten los dos primeros campos y el resto de los campos se comparan desde el archivo ‘dupli2.txt’.

    Comando tee de Linux

    El comando tee de Linux es bastante similar al comando ‘cat’, con una única diferencia. Pone la entrada estándar en la salida estándar y también las coloca en un archivo. Es uno de los comandos más utilizados junto con otros comandos a través de la canalización. Nos permite escribir lo que se nos proporcione desde la entrada estándar a la salida estándar. Opcionalmente, permite escribir en uno o más archivos. El nombre del comando tee proviene del divisor T que se utiliza en plomería.

    Sintaxis:

    tee <Opciones> <archivo nombre>  

    Opciones:

    Las siguientes son algunas opciones útiles que se pueden utilizar con el comando tee para hacerlo más específico:

    -a, –append: Se utiliza para agregar los datos a los archivos dados, no sobrescribe los datos.

    -i, –ignore-interrupts: Se utiliza para ignorar las señales de interrupción.

    -p: Se utiliza para diagnosticar errores al escribir en canales que no son tuberías.

    –output-error[=MODE]: Se utiliza para establecer el comportamiento en el modo de error de escritura.

    –help: Se utiliza para mostrar la documentación de ayuda.

    –version: se utiliza para mostrar la información de la versión.

    Cómo utilizar el comando tee

    El comando tee se utiliza para escribir una entrada estándar en una salida estándar y un archivo. Se utiliza después de una barra vertical. Para escribir en la salida estándar y en un archivo, especifique el comando tee después de una barra vertical y proporcione el nombre del archivo o los archivos. Considere el siguiente comando:

    cat lista2.txt | tee nuevalista.txt  

    El comando anterior escribirá la entrada de ‘lista2.txt’ en ‘nuevalista.txt ‘. Considere el resultado siguiente:

    A partir de la salida anterior, se crea un archivo ‘nuevalista.txt  ‘ utilizando el comando tee.

    Escribe un archivo y añade la salida

    La opción ‘-a’ se utiliza con el comando tee para agregar la salida y escribirla en un archivo. Considere el siguiente comando:

    echo 'El mundo necesita mas hackers' | tee -a nuevalista.txt  

    El comando anterior agregará la entrada especificada al archivo ‘nuevalista.txt  ‘. Considere el siguiente resultado:

    A partir del resultado anterior, la entrada especificada se agrega a ‘nuevalista.txt ‘.

    Escribir el estado de los datos en un archivo

    Escribir el estado de los datos es muy útil para realizar copias de seguridad o crear una instantánea de los datos con fines de depuración. Se puede hacer fácilmente con el comando tee.

    Para escribir el estado de los datos en un archivo, ejecute el siguiente comando:

    ls | tee ls.txt | grep ^b | tee ls2.txt | sort -r  

    El comando anterior escribirá los datos en el archivo lista.txt. Observe el resultado que se muestra a continuación:

    A partir del resultado anterior, la copia de los datos del directorio de trabajo actual se almacena en ‘newfile.txt’.

    Escribir en varios archivos

    El comando tee nos permite escribir en varios archivos. Para escribir en varios archivos, especifique los nombres de los archivos después del comando tee de la siguiente manera:

    echo "agregar texto" | tee archivo1.txt archivo2.txt archivo3.txt  

    El comando anterior creará todos los archivos especificados. Observe el resultado siguiente:

    Escribir en un archivo privilegiado

    El comando tee nos permite escribir en un archivo que tenga privilegios sudo. Si intentamos escribir en un archivo que pertenece al usuario root, nos aparecerá un error de permisos. Sin embargo, podemos elevar los permisos sudo ejecutando el comando tee de la siguiente manera:

    echo "Hack the Planet" | sudo tee -a <archivo nombre>  

    Ignorar las interrupciones

    La opción ‘-i’ se utiliza para ignorar las interrupciones. Esto es útil si queremos detener y salir del comando sin problemas durante la ejecución. Se utiliza de la siguiente manera:

    command | tee -i <Nombre del archivo>  

    Ocultar la salida

    Para evitar que el comando tee escriba en la salida estándar, rediríjalo a “/dev/null”. Ejecute el comando de la siguiente manera:

    echo "Hack the Planet" | tee hack.txt >/dev/null  

    Considere el siguiente resultado:

    El comando tee tiene más opciones que puedes explorar

     tee --help

    También  te recomendamos consultar las páginas man:

     man cat

    Traducción de Linux

    El comando «tr» significa «traducir» . Se utiliza para traducir, por ejemplo, de minúsculas a mayúsculas y viceversa, o para cambiar líneas por espacios.

    Sintaxis:

    comando | tr <‘viejo’> <‘nuevo’>  

    Cambiar mayúsculas y minúsculas

    El comando ‘tr’ puede cambiar entre mayúsculas y minúsculas.

    Sintaxis:

    comando | tr <'viejo'> <'nuevo'>  

    Ejemplo:

    cat lista2.txt | tr 'carlos' 'CARLOS'  

    Mire la instantánea de arriba, todos los p,r,c,u se convierten en P,R,C,U en mayúsculas.

    Eliminar nuevas líneas

    Para escribir todas las líneas en una sola línea tenemos que traducir todas las nuevas líneas a espacios.

    Sintaxis:

    comando | tr <'\n'> <' '>  

    Ejemplo:

    cat lista2.txt | tr '\n' ' '  

    Opciones tr

    tr -s : El comando ‘tr -s’ comprime la aparición de varios caracteres en uno.

    Ejemplo:

    cat carlos.txt | tr 'aeiou' '0'  

    Encripta el texto. Distingue entre mayúsculas y minúsculas.

    Ejemplo:

    cat lista.txt | tr 'az' 'qwertyuiopasdfghjklzxcvbnm'  

    Observa la captura de pantalla anterior. Todas las letras están cifradas según el comando.

    tr -d : El comando ‘tr -d’ se utiliza para eliminar caracteres.

    Sintaxis:

    comando | tr -d <letra>  

    Ejemplo:

     cat lista2.txt | tr -d o   

    Observa la instantánea de arriba, todas las letras «o» se eliminan del archivo «lista2.txt» .

    Ordenamiento de Linux

    El comando ‘sort’ ordena el contenido del archivo en orden alfabético.

    Sintaxis:

    sort <Nombre del archivo>  

    Ejemplo:

    sort lista.txt  

    Mire la instantánea de arriba, el comando ‘sort’ ha ordenado el archivo ‘lista2.txt’ en orden alfabético.

    Para ordenar una columna

    Si un archivo tiene más de una columna, se utiliza el número de columna para ordenar una columna específica.

    Sintaxis:

    sort -k <ColumnaNumber> <Nombre del archivo>   

    Ejemplo:

    sort -k1 lista2.txt  
    sort -k2 lista2.txt  

    Mire la instantánea de arriba, hemos ordenado las columnas 1 y 2.

    Ordenamiento numérico

    La ordenación numérica es diferente a la ordenación alfabética. En la ordenación numérica se utiliza la opción ‘n’ junto con el número de columna, si es necesario.

    Sintaxis:

    sort -n -k <ColumnaNumber> <Nombre del archivo>   

    Ejemplo:

    sort -n -k2 lista2.txt   

    El comando Grep

    ‘Grep’ significa «impresión de expresión regular global» . El comando grep filtra el contenido de un archivo, lo que facilita nuestra búsqueda.

    Es una utilidad de línea de comandos para buscar grupos de datos de texto sin formato en busca de líneas que sean iguales a una expresión regular. El nombre «grep» proviene del comando, es decir, ed, que contiene el mismo efecto. Originalmente, grep fue diseñado para el sistema operativo Unix, pero luego estuvo disponible para todos los sistemas similares a Unix.

    El filtro grep encuentra un archivo para un patrón de caracteres específico y muestra todas las líneas que incluyen ese patrón. Los caracteres deben estar entre comillas si aparecen en el parámetro de patrón con un significado especial para el shell. Por lo general, debemos encerrar todo el patrón entre comillas si el parámetro de patrón no es una cadena común.

    En una expresión como [az], el signo menos (-) cml describe un rango basado en el orden de intercalación actual. Un orden de intercalación puede especificar clases equivalentes en rangos de caracteres para su uso. El comando grep asume la entrada estándar cuando no se mencionan archivos.

    El patrón se denomina expresión regular que se encuentra dentro del archivo. El patrón está restringido a expresiones regulares en el formato del comando egrep o ed. El comando grep aplica un algoritmo sólido no determinista. Resulta útil cuando necesitamos filtrar archivos de registro de gran tamaño.

    Implementaciones de grep

    Existen varias implementaciones de grep en varios entornos de desarrollo de software y sistemas operativos. Las primeras versiones incluían fgrep y egrep, introducidas en la versión 7 de Unix. La versión egrep admite la sintaxis de una expresión regular extendida incluida por Alfred Aho después de la implementación original de la expresión regular de Ken Thompson. La versión fgrep encuentra cualquier lista de cadenas fijas con el algoritmo de coincidencia de cadenas Aho-Corasick . Estos binarios de versión están disponibles en sistemas modernos, conectándose a grep o llamando a grep como un script de shell utilizando el indicador correcto agregado mientras se implementa generalmente en los sistemas POSIX.

    Otros comandos incluyen la palabra «grep» para indicar que están buscando herramientas, generalmente aquellas que dependen de coincidencias con expresiones regulares. Por ejemplo, la utilidad «pgrep» muestra los procesos cuyos títulos son los mismos que los de la expresión regular proporcionada.

    • Grep es el título de la función incorporada que busca los elementos dentro de una lista que cumplen una determinada propiedad en el lenguaje de programación Perl .
    • Normalmente, esta función de orden superior se llama «filtro» o «donde» en otro idioma.
    • El comando, pcregrep , es una implementación de grep que utiliza la sintaxis de expresiones regulares de Perl. La misma funcionalidad se puede agregar a la versión de grep GNU utilizando el indicador -P.
    • Además, los puertos grep (por ejemplo, en GnuWin32 y Cygwin ) se ejecutan en Microsoft Windows. Algunas versiones de Windows proporcionan el mismo comando findstr o qgrep.
    • Además, el comando grep es parte de las herramientas MSX-DOS2 de ASCII para la versión 2 de MSX-DOS.
    • Los comandos fgrep, egrep y grep se han incorporado al sistema operativo IBM i.
      El software Adobe InDesign tiene funciones GREP (a partir de la edición CS3) en el cuadro de diálogo de la pestaña «GREP» para cambiar o buscar y se especifican mediante CS4 en los estilos de párrafo «Estilos GREP» .

    ¿Cómo instalar grep en Linux?

    Grep viene preinstalado en casi todas las distribuciones de Linux. Sin embargo, en caso de que no esté en nuestro sistema, podemos instalarlo con el siguiente comando en la ventana de terminal:

    sudo apt-get install grep  

    grep con tubería

    El comando ‘grep’ generalmente se utiliza con barra vertical (|) .

    Sintaxis:

    comando | grep <palabra de búsqueda>  

    Ejemplo:

    cat carlos.txt | grep a

    Mire la instantánea de arriba, el comando grep filtra todos los datos que contienen ‘a’.

    grep sin tubería

    También se puede utilizar sin tubería.

    Sintaxis:

    grep <palabra de búsqueda> <archivo nombre>  

    Ejemplo:

    grep a carlos.txt  

    Mire la instantánea de arriba, el comando grep hace el mismo trabajo que el ejemplo anterior pero sin tubería.

    opciones de grep

    grep -vM : el comando ‘grep -v’ muestra líneas que no coinciden con la palabra especificada.

    Sintaxis:

    grep -v <palabra de búsqueda> <Nombre del archivo>  

    Ejemplo:

    grep -v a carlos.txt  

    Mire la instantánea de arriba, el comando «grep -v a marks.txt» muestra líneas que no contienen nuestra palabra de búsqueda ‘a’.

    grep -i : el comando ‘grep -i’ filtra la salida sin distinguir entre mayúsculas y minúsculas.

    Sintaxis:

    grep-i <palabra de búsqueda> <Nombre del archivo>  

    Ejemplo:

    grep -i carlos.txt hack

    Mire la instantánea de arriba, el comando «grep -i red exm.txt» muestra todas las líneas que contienen «rojo», ya sea en mayúsculas o minúsculas.

    grep -A/ grep -B/ grep -C

    • El comando grep -A se utiliza para mostrar la línea después del resultado .
    • El comando grep -B se utiliza para mostrar la línea antes del resultado .
    • El comando grep -C se utiliza para mostrar la línea después y la línea antes del resultado.
    • Puede utilizar (A1, A2, A3…..)(B1, B2, B3….)(C1, C2, C3….) para mostrar cualquier número de líneas.

    Sintaxis:

    • grep-A<Número de línea> <palabra de búsqueda> <Nombre del archivo>  
    • grep-B<Número de línea> <palabra de búsqueda> <Nombre del archivo>  
    • grep-C<Número de línea> <palabra de búsqueda> <Nombre del archivo>  

    Ejemplo:

    • grep -A1 exm.txt amarillo  
    • grep -B1 exm.txt amarillo  
    • grep -C1 amarillo exm.txt  

    Mire la instantánea de arriba, el comando «grep -A1 yellow exm.txt» muestra la línea buscada con la siguiente línea sucesiva, el comando «grep -B1 yellow exm.txt» muestra la línea buscada con una línea precedente y el comando «grep -C1 yellow exm.txt» muestra la línea buscada con una línea precedente y una sucesiva.

    ¿Qué son las expresiones regulares de Linux?

    Las expresiones regulares de Linux son caracteres especiales que ayudan a buscar datos y a encontrar patrones complejos. Las expresiones regulares se abrevian como “regexp” o “regex”. Se utilizan en muchos programas de Linux como grep, bash, rename, sed, etc.

    Expresiones regulares básicas

    Algunos de los comandos más utilizados con expresiones regulares son tr, sed, vi y grep . A continuación, se enumeran algunas expresiones regulares básicas.

    SímboloDescripciones
    .reemplaza cualquier caracter
    ^coincide con el inicio de la cadena
    $coincide con el final de la cadena
    *coincide cero o más veces con el carácter anterior
    \Representar caracteres especiales
    ()Expresiones regulares de grupos
    ?Coincide exactamente con un personaje

    Expresiones regulares extendidas

    Estas expresiones regulares contienen combinaciones de más de una expresión. Algunas de ellas son:

    ExpresiónDescripción
    \+Coincide con una o más ocurrencias del carácter anterior
    \?Coincide con cero o una ocurrencia del carácter anterior

    Expresiones regulares de intervalo

    Estas expresiones nos indican la cantidad de veces que aparece un carácter en una cadena. Son

    ExpresiónDescripción
    {m}Coincide exactamente con el carácter anterior que aparece ‘n’ veces
    {n,m}Coincide con el carácter anterior que aparece ‘n’ veces, pero no más de m
    {n, }Coincide con el carácter anterior solo cuando aparece ‘n’ veces o más

    Globbing

    Los caracteres de globbing se denominan a menudo como “comodines”. Estos son símbolos que tienen un significado especial para el shell. A diferencia de los comandos que ejecutará el shell, u opciones y argumentos que el shell pasará a los comandos, los comodines son interpretados por el mismo shell antes de que intente ejecutar cualquier comando. Esto significa que los comodines pueden utilizarse con cualquier comando.

    Los comodines son poderosos porque permiten especificar patrones que coinciden con los nombres de archivo en un directorio, así que en lugar de manipular un solo archivo a la vez, puedes fácilmente ejecutar comandos que afectarán a muchos archivos. Utilizando comodines es posible manipular todos los archivos con una cierta extensión o con una longitud de nombre de archivo determinado. Ten en cuenta que estos comodines pueden utilizarse con cualquier comando, ya que es el shell, no el comando que se expande con los comodines a la coincidencia de nombres de archivo.

    Asterisco (*)

    El asterisco se utiliza para representar cero o más de cualquier carácter en un nombre de archivo. Si quieres visualizar todos los archivos en el directorio /etc que empiecen con la letra t:

    echo /etc/t* 

    El patrón t* significa “cualquier archivo que comienza con el carácter t y tiene cero o más de cualquier carácter después de la letra t“.

    Puedes usar el asterisco en cualquier lugar dentro del patrón del nombre de archivo. El siguiente ejemplo coincidirá con cualquier nombre de archivo en el directorio /etc que termina con extencion .d:

    echo /etc/*.d         

    El siguiente ejemplo coincidirá con cualquier nombre en el directorio /etc que termina con a:

    echo /etc/*a    

    En el ejemplo siguiente se mostrarán todos los archivos en el directorio /etc que comienzan con la letra r y terminan con .conf:

    echo /etc/r*.conf

    Signo de Interrogación (?)

    El signo de interrogación representa cualquier carácter único. Cada carácter de signo de interrogación coincide con exactamente un carácter. Si quieres visualizar todos los archivos en el directorio /etc que comienzan con la letra t y que tienen exactamente 7 caracteres después del carácter de t:

    echo /etc/t???????   

    Los comodines pueden utilizarse juntos para encontrar patrones más complejos. El comando 

    echo /etc/*???????????????????? 

    imprimirá sólo los archivos del directorio /etc con veinte o más caracteres en el nombre del archivo:

    El asterisco y el signo de interrogación también podrían usarse juntos para buscar archivos con extensiones de tres letras ejecutando el comando 

    echo /etc/*.???:

    Corchetes [ ] y Exclamación (!)

    Los corchetes se utilizan para coincidir con un carácter único representando un intervalo de caracteres. Por ejemplo, echo /etc/[gu]* imprimirá cualquier archivo que comienza con el carácter g o u y contiene cero o más caracteres adicionales:

    echo /etc/[gu]*

    Los corchetes también pueden ser utilizados para representar un intervalo de caracteres. Por ejemplo, el comando echo /etc/[a-d]* mostrará todos los archivos que comiencen con cualquier letra entre e incluyendo a y d:

    echo /etc/[a-d]*  

    El comando echo /etc/*[0-9]* mostrará todos los archivos que contienen al menos un número:

    echo /etc/*[0-9]*

    El intervalo se basa en el cuadro de texto de ASCII. Esta tabla define una lista de caracteres disponiéndolos en un orden estándar específico. Si proporcionas un orden inválido, no se registrará ninguna coincidencia:

    echo /etc/*[9-0]* 

    El signo de exclamación se utiliza en conjunto con los corchetes para negar un intervalo. Por ejemplo, el comando echo [!DP]* mostrará cualquier archivo que no comienza con D o P.

    Las Comillas (“)

    Hay tres tipos de comillas que tienen significado especial para el shell Bash: comillas dobles “, comillas simples ‘ y comilla invertida `. Cada conjunto de comillas indica al shell que debe tratar el texto dentro de las comillas de una manera distinta a la normal.

    Las comillas dobles 

    Detendrán al shell de la interpretación de algunos metacaracteres, incluyendo los comodines. Dentro de las comillas dobles, el asterisco es sólo un asterisco, un signo de interrogación es sólo un signo de interrogación y así sucesivamente. Esto significa que cuando se utiliza el segundo comando echo más abajo, el shell BASH no convierte el patrón de globbing en nombres de archivos que coinciden con el patrón:

    echo /etc/ [DP]*
    echo "/etc/[DP]*"

    Esto es útil cuando quieres mostrar algo en la pantalla, lo que suele ser un carácter especial para el shell:

    Las comillas dobles todavía permiten la sustitución de comando, sustitución de variable y permiten algunos metacaracteres de shell. Por ejemplo, en la siguiente demostración, notarás que el valor de la variable PATH es desplegada:

    Las comillas simples

    Evitan que el shell interprete algunos caracteres especiales. Esto incluye comodines, variables, sustitución de comando y otro metacarácter que aún no hemos visto. Si quieres que el carácter $ simplemente signifique un $, en lugar de actuar como un indicador del shell para buscar el valor de una variable, puedes ejecutar el segundo comando que se muestra a continuación:

    Las comillas invertidas

    Se utilizan para especificar un comando dentro de un comando, un proceso de sustitución del comando. Aunque puede sonar confuso, un ejemplo debe hacer las cosas más claras. Para empezar, fíjate en la salida del comando date:

    date

    Ahora fíjate en la salida de la línea de comandos echo Hoy es date:

    echo Hoy es date

    En el comando anterior la palabra date es tratada como texto normal y el shell simplemente pasa date al comando echo. Pero, probablemente quieras ejecutar el comando date y tener la salida de ese comando enviado al comando echo. Para lograr esto, deberás ejecutar la línea de comandos echo Today is `date`:

    echo Hoy es `date`

    Puedes utilizar una técnica alternativa para citar un carácter con comillas simples. Si que quieres imprimir lo siguiente: “Esto cuesta $100 y path es $PATH“. Si pones esto entre las comillas dobles, $1 y $PATH se consideran variables. Si pones esto entre las comillas simples, $1 y $PATH no son variables. Pero ¿qué pasa si quieres tener $PATH tratado como una variable y no a $1?

    La diagonal Inversa (\)

    Si colocas una barra diagonal invertida \ antes del otro carácter, tratará al otro carácter como un carácter de “comillas simples”. El tercer comando más abajo muestra cómo utilizar el carácter \, mientras que los otros dos muestran cómo las variables serían tratadas si las pones entre las comillas dobles y simples:

    echo "Esto cuesta $100 y path es $PATH"
    echo 'Esto cuesta $100 y path es $PATH'
    echo Esto cuesta \$100 y path es $PATH

    Instrucciones de Control

    Las instrucciones de control te permiten utilizar varios comandos a la vez o ejecutar comandos adicionales, dependiendo del éxito de un comando anterior. Normalmente estas instrucciones de control se utilizan en scripts o secuencias de comandos, pero también pueden ser utilizadas en la Shell.

    El punto y coma puede utilizarse para ejecutar varios comandos, uno tras otro. Cada comando se ejecuta de forma independiente y consecutiva; no importa el resultado del primer comando, el segundo comando se ejecutará una vez que el primero haya terminado, luego el tercero y así sucesivamente.

    Si quieres imprimir los meses de enero, febrero y marzo de 2025, puedes ejecutar cal 1 2025; cal 2 2025; cal 3 2025 en la línea de comandos.

    El símbolo de ampersand doble && 

    Actúa como un operador “y” lógico. Si el primer comando tiene éxito, entonces el segundo comando también se ejecutará. Si el primer comando falla, entonces el segundo comando no se ejecutará. Los comandos tienen éxito cuando algo funciona bien y fallan cuando algo sale mal. Por ejemplo, considera la línea de comandos ls /etc/xml. El comando tendrá éxito si el directorio     /etc/xml es accesible y fallará cuando no es accesible. El primer comando tendrá éxito porque el directorio /etc/xml existe y es accesible mientras que el segundo comando fallará porque no hay un directorio /junk:

    ls /etc/xml
    ls /etc/junk

    La manera en que usarías el éxito o fracaso del comando ls junto con && sería ejecutando una línea de comandos como la siguiente:

    ls /etc/xml && echo success  
    ls /etc/junk && echo success 

    En el primer ejemplo el comando echo fue ejecutado, porque tuvo éxito el comando ls. En el segundo ejemplo, el comando echo no fue ejecutado debido a que el comando ls falló.

    La línea vertical doble || 

    Es un operador lógico “o”. Funciona de manera similar a &&; dependiendo del resultado del primer comando, el segundo comando se ejecutará o será omitido. Si el primer comando se ejecuta con éxito, el segundo comando es omitido. Si el primer comando falla, entonces se ejecutará el segundo comando. Le estás diciendo al shell, “O bien ejecuta este primer comando o bien el segundo”. En el ejemplo el comando echo se ejecutará sólo si falla el comando ls:

    ls /etc/xml || echo failed 
    ls /etc/junk || echo failed   

    Puntos clave del artículo y su explicación

    1. Filtros de Linux
      Los filtros procesan datos de entrada estándar (stdin) y generan salida estándar (stdout). Se usan en tuberías para realizar tareas complejas combinando comandos pequeños.
    2. Comando cat y Tuberías
      Mueve texto de entrada a salida sin modificarlo. Utilizado con tuberías para encadenar comandos: cat archivo.txt | tac | cat
    3. Compresión con gzip y gunzip
      • gzip: Comprime archivos, reemplazándolos por versiones .gz.
      • gunzip: Descomprime archivos .gz.
      • Comprimir múltiples archivos con tuberías: cat archivo1 archivo2 | gzip > combinado.gz
    4. Comparación de Archivos con comm
      Muestra diferencias y similitudes entre dos archivos organizados en columnas. Ejemplo para ver solo elementos únicos del primer archivo: comm -23 archivo1 archivo2
    5. Manipulación de Datos con od, wc, cut, y uniq
      • od: Muestra contenido en formatos legibles como octal o hexadecimal.
      • wc: Cuenta líneas, palabras, y caracteres.
      • cut: Extrae columnas específicas de texto con delimitadores.
      • uniq: Elimina o cuenta líneas repetidas en un archivo.
    6. Redirección y Creación de Archivos con tee
      Permite guardar la salida de un comando en un archivo mientras la muestra en pantalla: ls | tee archivo.txt
    7. Transformaciones de Texto con tr
      • Cambia caracteres o elimina los no deseados: echo "texto" | tr 'a' 'A'
      • Elimina saltos de línea: cat archivo.txt | tr '\n' ' '
    8. Ordenamiento de Datos con sort
      • Orden alfabético: sort archivo.txt
      • Orden numérico por columnas: sort -n -k2 archivo.txt
    9. Búsqueda y Filtrado con grep
      • Encuentra patrones en texto: grep "patrón" archivo.txt
      • Muestra líneas adyacentes al patrón encontrado: grep -C1 "patrón" archivo.txt
    10. Expresiones Regulares y grep
      Permiten buscar patrones avanzados. Ejemplo de coincidencia con múltiples caracteres: grep "[A-Za-z]" archivo.txt
    11. Globbing en Linux
      Utiliza comodines para encontrar archivos:
      • *: Cero o más caracteres. ls /etc/*.conf
      • ?: Representa un único carácter. ls /etc/t?????
    12. Combinaciones Lógicas y Control de Comandos
      • Ejecuta comandos en secuencia: comando1 && comando2 || comando3
      • El comando 2 se ejecutará solo si el comando 1 tiene éxito, y el comando 3 si el primero falla.

    Este artículo proporciona una base práctica para manipular y analizar datos en Linux utilizando comandos esenciales. Estas herramientas son fundamentales para tareas de hacking, administración de sistemas y manejo de grandes cantidades de datos.

    Pon en práctica lo aprendido

    Ahora pon a prueba lo aprendido con estas preguntas y ejercicios.

    Preguntas sobre el artículo

    1. ¿Qué son los filtros en Linux y cómo funcionan con las tuberías?
    2. Explica el propósito del comando gzip y menciona un ejemplo de su uso.
    3. ¿Cómo se puede comprimir un directorio completo usando gzip?
    4. ¿Qué hace el comando comm y qué información muestra en sus tres columnas?
    5. ¿Cuál es el propósito del comando wc y qué tipos de conteo puede realizar?
    6. ¿Qué es el comando uniq y cuándo es útil usarlo?
    7. Describe el uso del comando tee y da un ejemplo práctico.
    8. Explica el concepto de globbing en Linux y cómo se usa el asterisco (*) como comodín.
    9. ¿Qué diferencias existen entre el uso de comillas simples (‘ ‘), comillas dobles (» «) y comillas invertidas () en Bash?
    10. ¿Qué son las expresiones regulares y en qué situaciones se pueden usar en Linux?

    Ejercicios prácticos sobre el contenido

    1. Usa el comando gzip para comprimir dos archivos de texto en un solo archivo .gz utilizando tuberías.
    2. Compara dos archivos de texto con el comando comm y muestra solo los elementos comunes.
    3. Cuenta cuántas palabras y líneas hay en un archivo de texto utilizando el comando wc.
    4. Filtra un archivo para mostrar solo las líneas únicas utilizando el comando uniq.
    5. Ordena un archivo de texto alfabéticamente y guarda la salida en un nuevo archivo con el comando sort.
    6. Cambia todas las letras minúsculas de un archivo a mayúsculas usando el comando tr.
    7. Escribe un comando que liste todos los archivos en /etc que comiencen con la letra s y terminen con .conf.
    8. Crea un archivo de texto con líneas repetidas, usa uniq para eliminar las repeticiones y guarda el resultado en un nuevo archivo.
    9. Usa el comando grep para buscar todas las líneas que contengan la palabra «error» en un archivo de registro y muestra también la línea siguiente a cada coincidencia.
    10. Escribe un comando para combinar la salida de ls en un archivo y, al mismo tiempo, mostrarla en la terminal utilizando tee.

    Respuestas a las preguntas

    1. Filtros en Linux: Son comandos que procesan datos recibidos de la entrada estándar (stdin) y producen resultados en la salida estándar (stdout). Funcionan con tuberías (|) para realizar operaciones encadenadas, como ordenar, buscar, o transformar datos.
    2. Propósito de gzip: Es una herramienta de compresión que reduce el tamaño de archivos, reemplazándolos con versiones comprimidas que tienen la extensión .gz. Ejemplo: gzip archivo.txt
    3. Comprimir un directorio con gzip: Como gzip no puede comprimir directorios directamente, se usa junto con tar: tar cf - directorio | gzip > directorio.tar.gz
    4. Comando comm: Compara dos archivos línea por línea. Las tres columnas indican:
      • Primera columna: líneas exclusivas del primer archivo.
      • Segunda columna: líneas exclusivas del segundo archivo.
      • Tercera columna: líneas comunes a ambos.
    5. Propósito de wc: Realiza conteos de:
      • Líneas (-l).
      • Palabras (-w).
      • Caracteres (-m).
      • Bytes (-c).
    6. Comando uniq: Elimina líneas duplicadas en un archivo (después de ordenarlo). Es útil para identificar datos únicos o contar ocurrencias con -c.
    7. Comando tee: Redirige la entrada estándar a la salida estándar y a un archivo. Ejemplo: echo "Texto" | tee archivo.txt
    8. Globbing y el asterisco (*): El asterisco representa cero o más caracteres en nombres de archivo. Ejemplo: ls /etc/*.conf
    9. Tipos de comillas en Bash:
      • Simples (‘ ‘): Todo dentro se trata como texto literal.
      • Dobles (» «): Permiten la expansión de variables y comandos.
      • Invertidas (): Ejecutan comandos y sustituyen la salida.
    10. Expresiones regulares: Son patrones usados para buscar o manipular texto. Se aplican en comandos como grep, sed y awk para filtrar datos o validar estructuras.

    Respuestas a los ejercicios

    1. Comprimir dos archivos con gzip: cat archivo1.txt archivo2.txt | gzip > combinados.gz
    2. Comparar archivos y mostrar elementos comunes: comm -12 archivo1.txt archivo2.txt
    3. Contar palabras y líneas en un archivo: wc -l -w archivo.txt
    4. Filtrar líneas únicas con uniq: sort archivo.txt | uniq > unico.txt
    5. Ordenar archivo alfabéticamente y guardar la salida: sort archivo.txt > ordenado.txt
    6. Convertir minúsculas a mayúsculas: cat archivo.txt | tr 'a-z' 'A-Z'
    7. Listar archivos en /etc que empiecen con s y terminen con .conf: ls /etc/s*.conf
    8. Eliminar repeticiones en un archivo: sort archivo.txt | uniq > sin_repeticiones.txt
    9. Buscar «error» y mostrar línea siguiente: grep -A1 "error" archivo.log
    10. Combinar salida de ls con tee: ls | tee lista_archivos.txt
    
    
    
    
    

    No te detengas, sigue avanzando

    Aquí tienes un propósito que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…

    ¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

    Sobre los autores

    Álvaro Chirou

    Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes seguirme en mis redes:

    Laprovittera Carlos

    Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:

    Hacker de 0 a 100 desde las bases hasta conseguir empleo

    ¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/hacker-de-0-a-100-desde-las-bases-hasta-conseguir-empleo/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.

    Hemos creado una ruta de 0 a 100. Un plan de desarrollo que va desde las bases: cómo aprender hacking, qué aprender, en qué orden; pasando por las areas técnicas necesarias como Linux, Redes, Programación y los conocimientos necesarios en ciber seguridad, hacking, pentesting hasta la práctica y el inicio laboral: Crear tu propio laboratorio, certificaciones, adquirir experiencia e iniciarse laboralmente.

    Este es un mega post. Una guía con más de 250 artículos que te llevaran por el camino del hacker. Esta guía es gratuita y esta creada gracias al esfuerzo y al trabajo combinado de Alvaro Chirou y mío (Laprovittera Carlos).

    Creamos esta guía (futuro curso) para que puedas iniciarte en este mundo. Puedes arrancar ahora, GRATIS, solo necesitas un PC, conexión a internet y paciencia (Ser hacker NO ES un camino de la noche a la mañana).

    El Hacking y la ciberseguridad es una carrera divertida, emocionante y gratificante que te recompensará y desafiará por igual. Sin embargo, para quienes buscan adentrarse en este campo en auge y en constante evolución, puede resultar difícil saber por dónde empezar. ¡Ahí es donde entra en juego nuestra guía en ciberseguridad!

    Esta es la hoja de ruta hacia el trabajo de ciberseguridad de tus sueños. Te ayudará a entender qué conocimientos, habilidades y certificados son necesarios para alcanzar tus metas profesionales y tener una carrera próspera. Si quieres ser consultor de ciberseguridad, analista de malware, evaluador de penetración, analista de SOC o cualquier otro puesto de ciberseguridad, esta guía es lo que necesitas.

    SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS

    Aprende con nuestros más de 100 cursos que tenemos disponibles para vos

    Compartimos estos recursos para ayudar a la comunidad de hacking y ciberseguridad. COMPARTE y Siéntete libre de agregar más sugerencias en los comentarios a continuación, respondemos todos y cada uno de los comentarios.

    Saludos amigos y happy hacking!!!