Ir al contenido principal

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

Cada vez que escribo un post me doy cuenta de que hay que ir explicando más cosas. En la entrada anterior hablé por encima de la terminal de GNU/Linux, en esta profundizaremos un poco más y mostraré algunos de los comandos que se pueden utilizar.

Como ya comenté en la entrada anterior la terminal o consola es el intérprete de comandos con el que se interactúa con el sistema operativo. El acceso directo para acceder a la terminal lo podemos encontrar en Ubuntu en la sección de Accesorios de los programas instalados. Donde podremos ver un icono con este aspecto:

Cuando abrimos una ventana de consola, el sistema nos muestra lo que se llama indicador. En GNU/Linux existen dos indicadores: $, cuando se trata de un usuario sin privilegios de administración (un usuario que no es root, el superusuario), y #, cuando se trata del usuario root. Por seguridad, no es aconsejable utilizar el usuario root para realizar las tareas administrativas, sino que se recomienda el uso del comando sudo, que expliqué en la anterior entrada. 


En Ubuntu, el usuario con que se realiza la instalación es el que puede realizar las tareas administrativas usando sudo. En una instalación estándar de un PC en casa, sólo tendrás configurado ese usuario.


A continuación, mostraré una serie de los comandos más comunes con algunas de sus opciones:
  • ls(del inglés list): este comando se utiliza para mostrar el contenido de un directorio (o carpeta). Si se utiliza sin argumentos ni modificadores, opciones precedidas de un signo -, lista sólo el nombre de los archivos y directorios que hay en el directorio actual (carpeta en la que nos encontramos en ese momento). Este comando dispone de gran cantidad de modificadores. Pero sólo explicaré unos pocos:
    • -l: muestra el listado en formato largo. La información que se muestra de izquierda a derecha es: permisos, número de enlaces asociados al archivo, usuario, grupo, tamaño y fecha de última modificación y nombre.
    • -h: muestra los datos del tamaño del archivo en formato legible por los humanos. Es decir, en megabytes, gigabytes...
    • -d: muestra sólo el nombre de los directorios y no su contenido.
    • -a: muestra también los archivos ocultos. En Unix y sus derivados, como el GNU/Linux, los archivos ocultos son aquellos cuyo nombre comienza por un . (punto).
    Por ejemplo:
    $ls -lha
    Nos muestra una salida como la de la imagen siguiente.

  • cd (change directory): este comando nos permite cambiar de directorio. Cuando abrimos una ventana de terminal, ésta se abre siempre en el directorio personal del usuario (home del usuario). Dentro del árbol de directorios del sistema, el directorio personal se encuentra en /home/nombre_usuario, donde nombre_usuario es el nombre del usuario con el que estamos trabajando. Si queremos cambiar de directorio, p.e. a /tmp, lo haríamos con esta orden:
  • $cd /tmp
    Por otro lado, si sólo ponemos el comando cd, estemos donde estemos dentro del sistema de archivos, al ejecutarlo nos llevaría a nuestro home directory (directorio personal).
  • mkdir (make directory): esta orden permite la creación de directorios. Si se utiliza con la opción -p, crea en una sola acción todos los directorios  necesarios. Por ejemplo:
    $mkdir documentos
    Esta instrucción crea el directorio documentos a partir del directorio actual.
    $mkdir -p /home/pepito/imagenes/jpg
    Esta otra orden crea el directorio jpg en la ruta /home/pepito/imagenes/ y todos los directorios padres necesarios. Es decir, si no existe imagenes se crea, si tampoco existe pepito, y así con todos los directorios contenidos en la instrucción.

    Una aclaración importante es que se tiene que tener permiso para crear el/los directorios en la ruta especificada. En el próximo artículo explicaré un poco de esto.
  • rmdir (remove directory): esta orden permite la eliminación de directorios vacíos. Si se utiliza con la opción -p, elimina el directorio especifica y sus ancestros. Por ejemplo:
    $rmdir jpg
    Elimina el directorio jpg, si está vacío, del directorio actual.
    $rmdir -p imagenes/jpg
    Este comando eliminaría primero el directorio jpg y si, tras la eliminación, el directorio imagenes está vacío también será eliminado.
  • rm (remove): esta orden permite eliminar ficheros o directorios. rm elimina cada uno de los ficheros especificados, por defecto, no elimina directorios. Este comando admite una serie de opciones, las más comunes son:
    • -f, --force: ignora los archivos que no existen. Nunca pregunta al usuario por la confirmación de la acción de borrado.
    • -i: utiliza el modo interactivo, es decir, pregunta al usuario antes de cada acción de borrado si quiere o no eliminar el archivo.
    • -I: pide confirmación al usuario antes de eliminar más de tres archivos, o cuando se utiliza el borrado recursivo. Es más seguro que -i ya que previene errores del usuario.
    • -r, -R, --recursive: elimina directorios y su contenido de forma recursiva.

    En el uso de rm el comando admite máscaras para la selección de archivos. El uso de máscaras permite seleccionar gran cantidad de archivos de una sola vez. Los metacaracteres (caracteres que se utilizan en la máscara) más utilizados son:
    • *: sustituye a cualquier grupo de cero o más caracteres. Por ejemplo, ma* equivale a todos los archivos que empiezan por ma; *fel* equivale a todos los archivos que contienen la cadena de caracteres fel; *lib equivale a todos los ficheros que terminan en lib; por último, * equivale a todos los archivos.
    • ?: sustituye a una sola letra dentro de la cadena que representa al nombre de archivo. Por ejemplo, alb?ri equivale a todos los archivos que empiezan por alb, que la cuarta letra sea una cualquiera y que terminen en ri; alb??op* equivale a todos los archivos que empiezan por alb, seguidos por dos letras cualquiera, que tengan a continuación la cadena op y que terminen con cualquier número de caracteres.
    A continuación mostraré un par de ejemplos en el uso del comando rm:
    $rm *.jpg
    Esta orden elimina todos los archivos de cualquier nombre y que terminen en .jpg.
    $rm -r imagenes/
    Esta orden elimina el directorio imagenes y todo su contenido, sea éste de archivos o directorios o de ambos. Es decir, elimina todo el árbol del sistema de archivos que cuelga del directorio imagenes.
    $rm -r -i *
    Esta instrucción elimina todo lo que hay a partir del directorio actual, pidiendo confirmación al usuario antes de realizar cada una de las acciones de borrado.
  • cat (concatenate): este comando permite concatenar archivos y mostrarlos por la pantalla. Es muy útil para ver el contenido de un archivo de texto. Si se utiliza junto con el símbolo >, símbolo para la redirección de la salida del comando, sirve para crear nuevos archivos a partir de los que se han concatenado. El comando dispone de varias opciones, una muestra de ellas son:
    • -A, --show-all: muestra todo el contenido del archivo, incluídos los caracteres no imprimibles como TAB (tabulador), fin de línea...
    • -b, --number-nonblank: numera todas las líneas, excepto las líneas en blanco.
    • -n: numera todas las líneas.
    Ahora veamos algunos ejemplos de la utilización de este comando:
    $cat readme.txt
     Muestra por pantalla el contenido del fichero readme.txt.
    $cat readme.txt leeme.txt > juntos.txt
    Crea el fichero juntos.txt a partir de los contenidos de los archivos readme.txt y leeme.txt.
Con esto terminamos la primera entrega de los comandos de la consola. Pero antes tengo que recordarles que si quieren ver una descripción completa de los comandos no duden en utilizar las páginas del manual: man nombre_comando.

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