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

Atom ha muerto, viva Zed

El día 8 de junio de 2022, Microsoft anunció que a partir del día 31 de diciembre de este mismo año dejaría de dar soporte para el editor de código Atom .  ¿En qué nos afecta esto a nosotros? Bueno, pues si me han seguido en artículos anteriores saben que tras una comparativa de varios IDEs había decidido utilizar Atom para los ejemplos que tuviera que hacer en este blog. Sobre todo los artículos que prepararé para ilustrar el uso de Laravel . Amén de los miles de programadores que actualmente usan Atom  en sus proyectos, claro. Pero, ¿qué editor de código abierto podremos utilizar para sustituir a Atom ? En el mismo comunicado, Microsoft explicaba que el abandono del proyecto Atom  se debía a que querían volcar todos sus esfuerzos en el Visual Studio Code y, por supuesto, recomendó a los usuarios de Atom la utilización del mismo como alternativa natural. No quiero entrar en las bondades o defectos del Visual Studio Code  si quieres elegirlo como tu IDE para d...

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

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