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

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

IDE Eclipse en español

Como todos sabemos, en el mundo de la programación, cada uno tiene sus gustos a la hora de utilizar un IDE (siglas en inglés de integrated development environment, entorno integrado de desarrollo)  para desarrollar sus programas. Sin embargo, no cabe duda de que Eclipse  ( http://www.eclipse.org ) es uno de los mejores, sobre todo si desarrollas en Java . Actualmente, en la distribución de Ubuntu 12.04 LTS , la versión de Eclipse que se puede instalar desde los repositorios es la Indigo , aunque en la página de eclipse.org ya están distribuyendo la siguiente ( Juno ). Para instalar el Eclipse desde los respositorios, basta con ir al Centro de Software de Ubuntu , buscarlo y darle al botón de Instalar , tal y como se muestra en la imagen siguiente: O bien, desde la terminal: $sudo apt-get install eclipse Si queremos instalar la última versión de Eclipse, lo haríamos descargándola desde su página web y siguiendo las instrucciones que vengan con el paquete. ...

Gestión de la red usando la línea de comandos (II): rutas persistentes

  Introducción Esta será la segunda entrada de la serie de artículos referentes a la gestión de la red en la línea de comandos de Linux. Concretamente, en esta entrada voy a explicar tres métodos para dejar configuradas rutas persistentes en nuestro Ubuntu. Las pruebas de campo las he hecho en una máquina virtual con Ubuntu Desktop 22.04 instalado. Pero lo explicado es válido para cualquier sabor de Ubuntu, incluido el Ubuntu Server. Ejecutar una tarea programada En Linux en general y, por tanto, también en Ubuntu, existe la posibilidad de programar tareas. Las tareas son ejecutadas por el demonio cron  y tienen que ser definidas usando el comando crontab . Para conocer más sobre el sistema de programación de tareas programadas les recomiendo mirar las páginas del manual: man cron , man crontab , man 5 crontab ... En este último se explica la estructura de un fichero crontab . Lo primero que tenemos que hacer es crear nuestro script que luego se ejecutará en la programación de...