Bienvenidos a este capítulo del Curso de Linux para Hackers – Filtros y Pipeline. 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.

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

Conceptos que aprenderás en esta sección:

  1. Comando uniq en Linux: eliminar y contar líneas duplicadas en un archivo.
  2. Opciones de uniq: contar, mostrar solo líneas duplicadas o únicas, y personalizar la comparación de líneas.
  3. Comando tee en Linux: escribir en archivos y salida estándar simultáneamente.
  4. Opciones avanzadas en tee: agregar contenido a archivos existentes, escribir en múltiples archivos y manejar permisos de escritura.

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

                    Resumen de los puntos clave:

                    1. Comando uniq para eliminar duplicados
                      uniq elimina líneas duplicadas de un archivo o entrada, generalmente tras ordenar las líneas. Ejemplo básico:
                      • sort archivo.txt | uniq
                        • Uso con sort: se recomienda ordenar el archivo antes de usar uniq, ya que este comando solo detecta duplicados adyacentes.
                    2. Opciones de uniq
                      • -c: cuenta la frecuencia de líneas.-d: muestra solo las líneas duplicadas.-u: muestra solo las líneas únicas.-s N: ignora los primeros N caracteres en la comparación.-f N: ignora los primeros N campos en la comparación.-i: ignora mayúsculas y minúsculas en la comparación.
                      Ejemplos:
                      • sort archivo.txt | uniq -c # Muestra el recuento de ocurrencias sort archivo.txt | uniq -d # Muestra solo las líneas duplicadas sort archivo.txt | uniq -u # Muestra solo las líneas únicas
                    3. Comando tee para escribir en múltiples destinos
                      tee redirige la entrada estándar a la salida estándar y a uno o más archivos, permitiendo escribir en varios archivos a la vez. Ejemplo:
                      • comando | tee archivo1.txt archivo2.txt Este comando permite ver el resultado en pantalla y guardarlo en los archivos especificados.
                    4. Opciones de tee
                      • -a: agrega datos al final del archivo en lugar de sobrescribirlo.-i: ignora las interrupciones del usuario ./dev/null: evita que la salida se muestre en pantalla al redirigirla a /dev/null.
                      Ejemplos:
                      • echo "Texto adicional" | tee -a archivo.txt # Agrega texto a archivo.txt comando | tee archivo.txt > /dev/null # Guarda sin mostrar en pantalla
                    5. Escribir en archivos con permisos elevados
                      tee permite escribir en archivos protegidos con permisos de root:
                      • echo "Contenido privilegiado" | sudo tee -a archivo_root.txt Esto es útil para modificar archivos que requieren permisos especiales.
                    6. Usar tee en scripts para depuración y registro
                      tee se combina con tuberías y otros comandos para registrar la salida intermedia en múltiples archivos, facilitando la depuración y el monitoreo:
                      • ls ~/ | tee archivo1.txt | grep ^a | tee archivo2.txt | sort -r
                    7. Consulta de ayuda y manuales
                      Usa uniq --help, man uniq, tee --help, y man tee para ver todas las opciones y ejemplos avanzados.

                    Los comandos uniq y tee son muy valiosos en Linux, tanto para gestionar datos repetidos como para redirigir y guardar resultados en varios archivos, incluso en operaciones con permisos elevados.

                    Pon en práctica lo aprendido

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

                    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!!!