Ir al contenido principal

La terminal de GNU/Linux y algunos de sus comandos (III)

Esta entrada continúa con la serie dedicada a la consola y los comandos del GNU/Linux. Será el penúltimo de la serie, para no cansar a los lectores ya que el mundo de los comandos de la consola es muy amplio y se necesitaría un blog prácticamente para ellos.



Y ahora vamos a empezar con las explicaciones de los comandos de hoy.

  • ln (del inglés link): utilizando este comando se pueden crear enlaces entre archivos. Los enlaces son un tipo especial de archivo, más concretamente son archivos que apuntan a otro archivo. Existen dos tipos de enlaces:
    • Enlaces duros: es un nuevo nombre (referencia) para un mismo archivo, a los datos físicos. Un archivo puede tener varios enlaces duros, cuando se elimina el último enlace duro se elimina el fichero.
    • Enlaces simbólicos: indica un acceso a un archivo o directorio que se encuentra en otro sitio del sistema de archivos. La eliminación del enlace simbólico no implica que se elimine el archivo físico.
    La sintaxis que tiene este archivo es:
    $ln [OPCIONES] [OBJETIVO] [NOMBRE DEL ENLACE]

    Las opciones principales que admite este comando son:
    • -d, -F, --directory: permite al superusuario hacer un enlace duro a directorios.
    • -f, --force: elimina los ficheros de destino existentes.
    • -s: hace un enlace simbólico en vez de un enlace duro.
    Veamos ahora unos ejemplos:
    $ln archivo.txt nuevo_archivo.txt
    Con esta orden creamos un nuevo nombre para el archivo archivo.txt. Ahora veríamos que en la salida del comando ls -l aparece un 2 en la columna correspondiente a los enlaces. Si eliminamos el fichero archivo.txt con el comando rm lo que haremos será eliminar uno de los enlaces, pero el fichero físico continuará existiendo hasta que eliminemos el último de los enlaces duros.
    $ln -s /var/log/syslog registro_sistema.log
    Con este otro comando creamos un enlace simbólico llamado registro_sistema.log al archivo de registro del sistema syslog que se encuentra en el directorio /var/log.

  • mount: monta un sistema de ficheros, generalmente nos referimos a un disco, CD, disquete, memoria USB, etc.
    La sintaxis de este comando es la siguiente:
    mount [OPCIONES] [DISPOSITIVO] [DIRECTORIO]
    Generalmente será el superusuario el que pueda montar sistemas de ficheros. Sin embargo, hay excepciones. Por ejemplo, un usuario puede montar el CDROM. Una cosa a tener en cuenta es que el directorio de montaje debe estar vacío para poder ejecutar esta orden. Veamos alguna de las opciones de este comando:
    • -a: monta todos los sistemas de ficheros especificados en el fichero de sistema fstab. Cuando se utiliza esta opción no se especifica ni el dispositivo ni el punto de montaje.
    • -t: sirve para especificar el tipo de sistema de ficheros que se va a montar. Existen muchos tipos, pero los principales son: fat, sistema de ficheros utilizado por Windows conocido como FAT16; vfat, sistema de fichero utilizado por Windows también conocido como FAT32; ntfs, sistema utilizado a partir de Windows XP; ext[2,3,4], sistemas de ficheros utilizados por Unix y sus derivados como el GNU/Linux; reiserfs, sistema utilizado también en GNU/Linux; etc.
    • -l: muestra todos los sistemas de ficheros montados.
    • -r: monta el sistema de fichero en modo sólo lectura.

  • umount: desmonta un sistema de ficheros. Puede especificarse indistintamente el dispositivo o directorio de montaje a la hora de ejecutar esta orden. Su sintaxis es:
    umount [OPCIONES] [DISPOSITIVO|DIRECTORIO]
    Algunas de sus opciones son:
    • -a: desmonta todos los sistemas de ficheros especificados en el archivo de sistema mtab.
    • -r: si la orden de desmontaje falla, trata de volver a montar el sistema de ficheros en modo sólo lectura.
    • -t [tipo]: indica que acciones se deberían tomar sólo en los sistemas de ficheros indicados.

  • df (del inglés disk free): muestra del espacio en disco utilizado y disponible por el sistema de archivos, todos los discos que se encuentren montados en ese momento. Por defecto, el espacio en disco se muestra en bloques de 1K.
    Su sintaxis es la siguiente:
    df [OPCIONES]
    Las opciones principales disponibles para este comando son:
    • -a, --all: incluye en la lista todos los sistemas de ficheros virtuales montados en el sistema.
    • --total: produce una línea adicional con la suma total de las cantidades ocupadas y disponibles.
    • -h, --human-readable: muestra las cantidades en un formato legible por los humanos, es decir, en K, M, G...
    • -H: igual que el anterior pero usando potencias de 1000 en vez de 1024.

  • du (del inglés disk usage): muestra el espacio utilizado estimado. Suma el espacio ocupado para cada archivo y, recursivamente, para los directorios. Algunas de sus opciones son:
    • -a: cuenta el espacio ocupado para todos los archivos, no sólo los directorios.
    • -h: muestra el resultado en formato legible por los humanos.
    • --si: igual que -h, pero utilizando potencias de 1000 en vez de 1024.
    • -s: muestra sólo el total para cada uno de los argumentos.

  • mv (del inglés move): mueve o renombra archivos. Su sintaxis es:
    mv [OPCIONES] [ORIGEN] [DESTINO]
    Algunas de sus opciones son:
    • -f: no pregunta antes de sobreescribir el archivo de destino.
    • -i: pregunta antes de sobreescribir, se llama también modo interactivo.
    • -u: mueve solamente cuando el ORIGEN es más nuevo que el DESTINO, o cuando el DESTINO no existe.
    Veamos unos ejemplos:
    $mv archivo.txt fichero.txt
    Cambia el nombre de archivo.txt por el de fichero.txt.
    $mv *.txt /home/pepito/textos
    Mueve todos los ficheros los ficheros que terminan en .txt al directorio /home/pepito/txt.

  • find: busca archivos en la jerarquía de directorios. Este comando tiene muchas opciones, aunque en este artículo se explicarán sólo algunas de ellas.
    • Búsqueda de un archivo por el nombre
      • Sintaxis:
        find [carpeta inicio] -name "[nombre archivo]"
        Esta orden busca a partir de la carpeta especificada ([carpeta inicio]) y de forma recursiva a través del árbol de directorios todos los archivos cuyo nombre sea [nombre archivo], si no se utilizan metacaracteres el nombre del archivo ha de coincidir exactamente con el especificado. Los metacaracteres admitidos son los estándares de Linux (*, ?). El resultado de la búsqueda se muestra por la salida estándar.
      • Ejemplos:
        find / -name ".profile"
        Busca todos los archivos de nombre .profile a partir del directorio raíz (/).
        find . -name "*.doc"
        Busca todos los archivos de extensión doc a partir del directorio actual (.).
    • Búsqueda de un archivo por una palabra en su contenido
      • Sintaxis:
        find [carpeta inicio] -name "[nombre archivo]" -exec grep "[cadena]" {} /dev/null \;
        Esta orden busca a partir de la [carpeta inicio] en todos los archivos cuyo nombre coincida con [nombre archivo] los archivos que contengan la palabra o frase especificada en [cadena].
      • Ejemplos:
        find / -name "*.txt" -exec grep "config" {} /dev/null \;
        Busca a partir del directorio raíz (/) todos los archivos de extensión txt que contengan la palabra config.
        find . -name "*.doc" -exec grep "Gerencia" {} /dev/null \;
        Busca a partir del directorio actual (.) todos los archivos cuya extensión sea doc que contengan la palabra Gerencia.
    • Búsqueda de un archivo por el tipo
      • Sintaxis:
        find [carpeta inicio] -type [tipo]
        Esta orden busca a partir de [carpeta inicio] todos los archivos del tipo especificado ([tipo]). Esta opción se puede combinar con las anteriores.
        Los tipos que se pueden especificar son:
        • f: indica que el tipo a buscar es un archivo.
        • d: indica que el tipo a buscar es un directorio.
        • c: indica que el tipo a buscar es un archivo de dispositivo carácter.
        • b: indica que el tipo a buscar es un archivo de dispositivo bloque.
      • Ejemplos:
        find /home -type f
        Busca a partir del directorio /home todos los ficheros.
        find /home/contratacion -type d -name "A*"
        Busca a partir del directorio /home/contratacion todos los directorios que empiecen por la letra A (A mayúscula).
Bueno, por hoy eso es todo. En el próximo artículo terminaré con la serie sobre los comandos de la consola de GNU/Linux. Espero, como siempre, que esto le sirva de ayuda a alguien.

Comentarios

Entradas populares de este blog

Gestión de la red usando la línea de comandos (IV): monitorización de conexiones

  Introducción En este artículo de la serie de gestión de la red usando la línea de comandos nos vamos a centrar en la monitorización de las conexiones. Para ello vamos a utilizar el comando netstat , que es el decano de los comandos de monitorización de la red. También mostraremos el comando ss , que viene a sustituir a netstat  en las funciones de monitorización de conexiones de red. Asimismo mostraré una breve explicación de los conceptos que se van a trabajar en el artículo. S ockets, puertos, protocolos y procesos En primer lugar vamos a empezar con un poco de teoría para alumbrar lo que luego se explicará en el artículo. Si ya sabes de lo que estamos hablando, sáltate esta sección y ve al meollo del asunto [1] . Nos referiremos al contexto de la conexiones TCP/IP. Dentro de este contexto, cada conexión queda definida por dos endpoints , puntos finales, uno en el host , equipo, que establece la conexión y otro en el host con el que se comunica. Generalmente este último es...

Zed: ahora un editor de código de código abierto

  Zed: ahora un editor de código de código abierto Introducción Como ya les comenté en un artículo anterior  Atom ha muerto, viva ZED , Microsoft dejó de dar soporte para el editor de código Atom en el año 2022 en beneficio del Visual Studio Code . En aquel artículo les comentaba que para mi el sucesor de Atom era Zed pues era un editor que se estaba creando por el mismo grupo de trabajo que creó el Atom . Además de que parecía que iba a seguir con la misma filosofía con la que nació  Atom . El editor Zed, una descripción de sus características Zed es un editor de código desarrollado en Rust que, como deberíamos saber, es un lenguaje de programación de sistemas que se enfoca en la seguridad, el rendimiento y la concurrencia. Pues, como decíamos, Zed acaba de dar el salto a ser de código abierto bajo la licencia GPL v3 . Este cambio no solo representa una nueva era para Zed , sino que también nos dirige a un nuevo mundo de colaboración y desarrollo en el ámbito de la...

Gestión de la red usando la línea de comandos (III): gestión DNS

  Introducción En este nuevo artículo de la serie vamos a hablar de la gestión del DNS, Domain Name System. El sistema de resolución de nombres nos permite traducir los nombres de los dominios de Internet en direcciones IP númericas. Más difíciles de recordar para los humanos.  El DNS fue concebido a mediados de los años 80. Hasta esa época, los ordenadores conectados a una red disponían de una dirección numérica, la dirección IP. Pero con el tiempo, cada vez había más ordenadores conectados a las redes. Esto hacía que cada vez fuera más difícil recordar las direcciones IP. Sobre el año 1983, Paul Mockapetris , un informático estadounidense, desarrolló un sistema jerárquico de nombres para identificar a los ordenadores conectados a una red. Y, a mediados de la década, ya se convirtió en un estándar. Pueden consultar más información sobre el sistema DNS consultando el artículo de la Wikipedia: Sistema de nombres de dominio . En este artículo, no vamos a explicar como montar un ...