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

Añadir disco en caliente a un Ubuntu virtualizado

  En este artículo vamos a explicar cómo aumentar un volumen de discos en una máquina virtual. Pongamos por caso que tenemos un servidor que se nos ha quedado corto de espacio en disco y que no podemos parar. La solución es añadir un nuevo disco virtual a nuestra máquina y, con ese espacio añadido, extender el volumen de discos.  En principio, este es un proceso en el que no hay pérdida de datos. Sin embargo, es conveniente que exista una copia de seguridad antes de llevarlo a cabo como precaución. He de decir que yo lo he hecho en un par de ocasiones y no ha habido problemas con la máquina virtual ni con los datos. De hecho, los usuarios ni se enteraron de que se amplió el espacio en disco. Consideraciones iniciales En primer lugar, este es un proceso que sólo se puede llevar a cabo en una máquina virtual. Para añadir un disco nuevo en una máquina física hay que pararla y, por lo tanto, no se puede añadir en caliente. Cierto es que la parte de extender el volumen sí que se realiza igu

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 desarrollo predeterm

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 programación.