0% encontró este documento útil (0 votos)
34 vistas26 páginas

Guía Básica de la Terminal Linux

comandos basicos interesante para estudiantes

Cargado por

abrodriguez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como ODT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
34 vistas26 páginas

Guía Básica de la Terminal Linux

comandos basicos interesante para estudiantes

Cargado por

abrodriguez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como ODT, PDF, TXT o lee en línea desde Scribd

La Terminal de Linux (I).

Como Utilizar la Línea de Comandos


Muy buenas lector, si eres usuario de alguna distribución GNU/Linux y quieres profundizar mas en el uso del sistema,
una de las cosas que debes aprender si o sí es a manejarte bien con la terminal o interfaz de línea de comandos. Si
quieres conocer a nivel más teórico los diferentes conceptos relativos a la terminal, te recomiendo la lectura de la
pagina que te acabo de enlazar.

Si quieres pasar más al nivel practico, con este primer post estreno una serie de guías dedicadas a profundizar en el
uso de la consola y a explorar todas las posibilidades punto por punto. En este caso me voy a centrar en los
fundamentos básicos de su uso y en algunos comandos básicos con los que puedes empezar a familiarizarte con ella.
Al final tienes enlazados el resto de artículos de la serie.

Como Acceder a la Consola


Hay básicamente dos maneras de usar la terminal en GNU/Linux. Por un lado, puedes usar las interfaces TTY,
mientras que por otro lado, están los emuladores o PTS, que permiten usar una interfaz de línea de comandos de
manera virtual desde la propia interfaz gráfica de usuario.

Para acceder a las diferentes sesiones TTY debes utilizar las combinaciones de teclado ‘CTRL+ALT+F1’, para la TTY1,
hasta ‘CTRL+ALT+F7’. Para iniciar sesión deberás introducir tu nombre de usuario y contraseña, y a partir de ahí ya
puedes empezar a interactuar con el interprete de comandos.
Otra manera más práctica de utilizar la línea de comandos es, como digo al principio, mediante el emulador de
terminal desde la propia sesión gráfica. En este caso, basta con acceder a tu aplicación de terminal favorita y listos. No
es necesario que inicies sesión aquí, ya que ya reconoce el usuario con el que has iniciado la propia sesión gráfica.
Sudo y Su. Ejecutar Comandos Como Otro Usuario
Muchos comandos invocan acciones que solo pueden ser realizadas por el usuario root o superusuario. Esto significa
que, si intentas instalar un paquete en tu sistema, y por ello haces un apt install <paquete>, desde la sesión de tu
usuario normal no se te permitirá.
Para ello, deberías primero hacer un log-in con el usuario root (en la consola) y posteriormente realizar esta acción
desde este nivel de privilegios. Para agilizar esta tarea, dispones de herramientas como sudo o su, ambas similares a la
práctica pero diferentes en su concepción.
Sudo
De sudo se podrían escribir líneas y líneas, pero para lo que es el propósito de este post, quédate con la idea de que, lo
que hace, es ejecutar el comando que lo sigue utilizando, temporalmente, los privilegios de otro usuario.
Este usuario, en la mayoría de usuarios suele ser el superusuario, pero se puede configurar para que sea cualquier
otro.

Hay distribuciones, sobretodos aquellas orientadas a usuarios con menos conocimientos técnicos (Ubuntu y gran
parte de sus derivados directos son un claro ejemplo) que, por motivos de seguridad (o de simplicidad) optan
por mantener la cuenta de superusuario deshabilitada.
A cambio, utilizan sudo configurado de tal modo que el usuario estándar pueda utilizarlo para adquirir,
temporalmente, los permisos de superusuario.
Su uso consiste únicamente en ser introducido delante del comando en cuestión, para indicar que ese comando se va a
ejecutar bajo los permisos de otro usuario (por defecto, root).

$ sudo <comando>

Su
La utilidad su (de «switch user») es algo diferente. Como su nombre indica, lo que permite es hacer un cambio de
sesión de usuario, pero sin necesidad de cerrar la sesión del usuario actual. Se utiliza seguido del nombre de
usuario con el que se quiere inicial sesión.

Es muy común utilizarlo en aquellas distribuciones que prefieren mantener abierta la cuenta de superusuario para que
cualquier usuario autorizado para usarlo (entendiéndose que conozca la contraseña) pueda hacer un salto de sesión y
hacer un log-in como root.

En este ultimo caso, la sintaxis es muy simple. Basta con teclear la palabra su, y automáticamente el sistema te pedirá
las contraseña necesaria para hacer el cambio de sesión.

$ su
#

El cambio de forma del promp es un claro indicativo que te puede servir para identificar rápidamente si estás en una
sesión de usuario estándar o de root.

Generalmente, se suelen dar esas dos situaciones entorno al uso de sudo y su:

 En las distribuciones que mantienen la cuenta de superusuario bloqueada (como es el caso de Ubuntu y sus
multiples derivados), se utiliza «sudo» seguido de un determinado comando, con las credenciales del usuario actual
(que se le permite una elevación temporal para ejecutar los comandos como root).

 En las distribuciones que hacen uso de la cuenta de root, como Debian o Fedora, se utiliza «su» para saltar de la
cuenta de usuario normal a la cuenta de superusuario. Para hacer el salto, se requiere conocer la contraseña de root.
Sin embargo, el uso de sudo y su se puede complementar perfectamente. De este modo, aun estando la cuenta de root
operativa, se puede configurar sudo para que determinados usuarios puedan igualmente realizar una elevación de
privilegios, si necesidad de que tengan que conocer las credenciales de root.

Si quieres profundizar en todo esto, en este post explico con mucho más detalle como habilitar o deshabilitar el uso de
root, así como configurar sudo para permitir o impedir que los usuarios puedan hacer uso de él para la elevación de
privilegios.

Prompt de Usuario y Superusuario


Como podrás advertir, dependiendo del usuario que esté logueado en la sesión de la terminal, el prompt sera
ligeramente distinto. De este modo, si te encuentras logueado como usuario estándar, el prompt sera similar a éste:

user@computer:~$

Por el contrario, si haces un log-in como superusuario (a partir del comando sudo su), el prompt adoptará este
formato:

root@computer:/home/user#

Ah, como curiosidad que seguramente te gustará saber, el prompt de bash es personalizable en color y estructura. Si
tienes curiosidad en saber como, en este post lo tienes explicado en detalle.

De hecho no es en absoluto mala idea que, por tal de distinguir mejor el prompt de los comandos en sí, establezcas
que éste se muestre en un color diferente. Verás que mejora en gran medida el aspecto general de la consola.

Dicho todo esto, y habiendo hecho una justa introducción, la mejor manera de acabar este primer post de la serie será
con algunos ejemplos sencillos para empezar a practicar con los primeros comandos. Esto nos servirá para dar
nuestro primer paso en el uso de la consola.
Aprende tus Primeros Comandos
Realmente existen infinidad de comandos, por lo que es importante centrarse en aquellos que te serán de mas utilidad
dependiendo de tus tareas o necesidades.

Antes de nada, no quiero dejarme de comentar como puedes acceder a la línea de comandos para empezar a jugar.
Tienes básicamente dos opciones:

Acceder a una de las terminales TTY, mediante las combinaciones de


teclado ‘CTRL+ALT+F1’ hasta ‘CTRL+ALT+F7’, para acceder a cada una de las TTY.

Abrir una ventana desde el propio entorno de escritorio, utilizando una de las multiples aplicaciones que
hacen de emulador de terminal. Aquí tienes a numerosos ejemplos y cada entorno de escritorio ya viene de forma
predeterminada con el suyo. Para nombrar algunos: GNOME Terminal, Konsole, Xterm, Yakuake, Guake, etc.

Ahora ya si que puedes empezar tu mismo a practicar con tus primeros comandos. Para empezar a ser capaz de
ejecutar acciones simples, puedes echar un rápido vistazo a los ejemplos que te propongo. Si no es tu primera vez,
seguramente ya los conocerás. En este caso, no dejes de echar un vistazo al resto de posts de esta serie que enlazo al
final.

Man
El comando man es una pagina de manual. Debe ir acompañado del nombre de un comando, y muestra en pantalla
una completa guía sobre el uso del comando entrado. Aquí tienes la sintaxis básica, y a partir de ahí puedes ir
probando ejemplos con varios comandos.

$ man <nombre del comando>

Esta es la sintaxis básica del comando, y a partir de ahí puedes desplegar el manual de casi cualquier comando que se
te ocurre.

$ man uname

Imprime por pantalla el manual completo del comando uname, junto con todas sus opciones de uso.
Uname
El comando uname te da información del sistema operativo usado. Puede incluir diferentes opciones, algunas de las
cuales son ‘-a’, ‘-s’, ‘-p’, ‘–m’, y ‘-o’. Puedes probar de usar algunas de ellas y observar el output mostrado por
pantalla.

$ uname

Formato simple del comando. Retorna solamente el nombre del sistema operativo, sin especificar mas detalles.

$ uname -a

Con esta opción, podrás visualizar el nombre del sistema operativo, junto con otros detalles básicos como la versión
del kernel, la arquitectura del sistema (si es de 32 o 64 bits) o la fecha actual entre otros datos.
Who
El comando who muestra los usuarios logueados en el sistema. Si lo utilizas desde la aplicación de terminal del
escritorio, mostrara que tu usuario está logueado en la sesión de terminal TTY7, correspondiente a la interfaz gráfica
de usuario, y en una sesión PTS, que no es más que el emulador de terminal dentro de la propia interfaz gráfica.

$ who

Esta es la sintaxis básica de #who, y muestra un listado con los usuarios logueados en el sistema junto con la fecha y
hora de logueo.

$ who -b

Con esta opción obtendrás la fecha y hora del último arranque realizado en el sistema.
History
El comando history te imprime por pantalla un listado de los últimos comandos que se han pasado por la terminal
desde la cuenta del usuario actual.

$ history

Esta es la forma básica, y muestra un listado de todos los comandos introducidos por la terminal, uno a uno.

$ history 10

Tienes también la opción de limitar el numero de resultados a visualizar. En este caso, tendrás un listado con los
últimos 10 comandos introducidos.

$ history | grep ls

Como no, si deseas acotar más la búsqueda, también puedes establecer filtros por palabra contenida. En este caso, por
ejemplo, se te imprimirá por pantalla un listado de todas las órdenes introducidas que contengan la palabra «ls».

$ history -c

Si quieres borrar el historial de todos los comandos utilizados hasta el momento, puedes hacerlo con un history -c.
Clear
El comando clear limpia la pantalla de la terminal pero sin borrar el contenido. Básicamente hace un scroll hacía
abajo.

$ clear

Ping
Con la orden ping podrás conocer si un cliente o servidor bajo una determinada dirección IP está operativo o no.
También te permite conocer la latencia entre tu máquina y la IP especificada.

$ ping 192.168.1.1

En este ejemplo estamos comprobando la latencia entre nuestra máquina y el router de la red interna en la que
estamos conectados (que típicamente se encuentra bajo la dirección IP 192.168.1.1).

$ ping www.google.com

También podemos comprobar si un determinado sitio web esta operativo o no a partir de su url. En este caso,
comprobamos la latencia entre nuestra máquina y Google.

Date
El comando date informa sobre la fecha y hora del sistema. Es un comando puramente informativo, útil si te
encuentras en un entorno sin interfaz gráfica.

$ date

Curl wttr.in
Con esta simple sentencia podrás consultar la previsión meteorológica directamente desde la consola, a lo Geek.

$ curl wttr.in

Esta es el modo más fácil de utilizarlo. Te entrega directamente la previsión de tu zona geográfica para los próximos
tres días. Aparte de esta opción básica, puedes personalizar la salida de muchas maneras. A continuación tienes un
ejemplo.

$ curl wttr.in/paris
Para consultar la previsión de una zona en concreto, basta con añadir «/» al final seguido de la zona (como datos
acepta ciudad, código de aeropuerto o nombre de dominio). Tienes una ayuda rápida aquí: http://wttr.in/:help.

Exit
El comando exit cierra la sesión de terminal actual del usuario logueado en ella. Si estas usando la terminal como
superusuario, se cerrará la sesión y volverás a ser usuario estándar.

$ exit

Hasta aquí ya puedes empezar a practicar con algunos de los comandos más básicos. Alternativamente, con el
comando ‘man‘ podrás hacer una ojeada a las distintas opciones que ofrecen los comandos tratados.

La Terminal de Linux (II). Comandos para Manejar Archivos y Carpetas

Muy buenas lector, en esta guía quiero centrarme en que aprendas todo lo necesario para manejar ficheros y
carpetas en Linux a través de la línea de comandos. Si no tienes experiencia en el uso de la consola, una buena
manera de empezar a entrar en materia es aprender a moverte por el sistema de archivos y a manejar archivos y
carpetas desde la línea de comandos.

Existen realmente muchísimos comandos en este sentido, de modo que lo mejor será dividirlos en tres grupos para
tener un esquema mental y acordarnos mejor de todos ellos. Sin más, te dejo con el índice del post. Espero que lo
disfrutes;)

Comandos para Desplazarte a Través de Directorios


Empezando por el primero grupo, aquí verás todo lo necesario para aprender situarte en un punto de partida ya
desplazarte o navegar a través de los diferentes directorios. Si tienes curiosidad, en este post tienes explicada
la estructura de directorios de Linux al detalle. Y ya sin más, empecemos por el más sencillo de todos pero no por ello
menos importante…

Pwd
El comando pwd te indica la ruta completa del directorio de trabajo en el que se encuentra tu usuario. Su función es
meramente informativa, peor muy útil en ciertas ocasiones, como por ejemplo, conocer el nombre del directorio de
trabajo actual.

$ pwd

Esta es la única sintaxis que realmente necesitas conocer de este comando. Como explico, te indica la ruta del
directorio de trabajo en el que te encuentras logueado en la terminal. Eso significa que cualquier comando de Bash que
tenga relación con la gestión de ficheros y directorios, se aplicará referenciado en ese directorio.

Cd
El comando cd te permite cambiar de directorio de trabajo. Sería el equivalente a ingresar o entrar en la carpeta pero
desde la consola. Básicamente requiere indicar el nombre del directorio en el que deseas moverte. Acepta rutas
absolutas y relativas. A continuación tienes algunos de los múltiples ejemplos de su uso:

$ cd /home/usuario/Documentos

El comando de arriba te llevará al directorio Documentos dentro de la carpeta personal del usuario usuario1. En este
caso he utilizado una ruta absoluta, empezando por el directorio raíz /, e indicando el camino completo hasta situarme
a Documentos

$ cd

Esta sentencia la puedes utilizar siempre que quieras volver a situarte al directorio principal de usuario, que en este
caso seria en /home/usuario1. Muy interesante siempre que queramos volver al punto de partida (ojo, no confundir eso
con ir al directorio raíz, que sería el directorio /)

$ cd Documentos
Igual que en el primer ejemplo, con esta sentencia (arriba) te situarás dentro del directorio Documentos, que debe estar
dentro del directorio de trabajo actual. La diferencia es que en este caso, aprovechando que estoy dentro del directorio
principal de usuario, he utilizando una ruta relativa sin necesidad de indicar el camino completo.

$ cd ..

Esta otra sentencia la puedes utilizar para saltar un directorio hacía atrás respecto del que te encuentres. De este
modo, si te encuentras dentro del directorio /home/usuario1/Documentos, saltarás un nivel hacía arriba hasta situarte
en /home/usuario1.

$ cd ../..

Esta opción es similar a la anterior, pero ahora te permitirá saltar de golpe dos directorios hacia atrás. Por tanto, si
estabas en /home/usuario1/Documentos, ahora saltarás a /home.

Hasta aquí, tienes algunos usos simples para moverte a través de las diferentes carpetas. A continuación, y teniendo
claro lo anterior, podemos pasar a aprender a listar archivos y directorios.
Listar el Contenido de un Directorio, Buscar Archivos, etc.
Visto ya como moverte a través de carpetas, que mejor que continuar como poder listar el contenido de un directorio,
encontrar o localizar archivos concretos por su nombre o su extensión, etc.

Ls
Con el comando ls podrás listar los diferentes archivos y directorios de la carpeta de trabajo en la que te encuentres.
El comando acepta multitud de opciones, algunas de las cuales te mostraré a continuación.

$ ls

El de arriba es el uso más simple del comando ls. Si no le indicas ninguna opción, te enumerará todos los archivos y
directorios que se encuentran en la carpeta de trabajo actual, sin tener en cuenta archivos ocultos.

$ ls -a

Con esta opción, el comando te mostrará, en forma de lista, todos el contenido que se encuentre dentro del directorio
de trabajo, incluyendo, además, archivos y carpetas ocultos.

$ ls -l

Esta opción es similar al primer caso, pero muestra el contenido en forma de lista e incluye información referente a
cada elemento. Se usa muchísimo y es especialmente útil a la hora de conocer el propietario y los permisos de cada
fichero.

Estas son sólo algunas de las muchísimas posibilidades de las que disponemos para nombrar o listar el contenido de
un directorio, desde la terminal de Linux. Existen muchas opciones más, las cuales puedes explorar en todo momento
haciendo uso del comando man ls.

Find
El comando find es muy similar en su función básica a ls, ya que de entrada sirve para listar todo el contenido de un
directorio. La diferencia es que, aplicando filtros, te puede servir para buscar archivos de forma más precisa.

$ find

La sentencia más básica te listará todo el contenido del directorio de trabajo actual de forma recursiva. La diferencia
respecto a ls es justamente que find no se limitara a mostrar los archivos y directorios de primer nivel, sino que
también te mostrará el contenido de estos, y así recursivamente hasta recorrer todos los niveles hacía abajo.

$ find ./Documentos
Con esta opción, find te listará todos el contenido del directorio Documentos (dentro del directorio de trabajo actual)
también de forma recursiva, recorriendo todos los niveles hacía abajo.

$ find ./Documentos -name archivo.txt

Si quieres empezar a establecer filtros por nombre, puedes añadir el parámetro -name. En este ejemplo, estamos
intentando localizar un archivo concreto dentro de Documentos que su nombre corresponda a archivo.txt.

$ find ./Documentos -name *.pdf

Incluso puedes hacer filtros más concretos gracias al uso de comodines. En el caso de arriba, por ejemplo, estamos
buscando en la carpeta Documentos todos los archivos que con la extensión .pdf, al igual que puedes hacerlo con
cualquier otro tipo de extensión.

Locate
El comando locate es una alternativa útil a find la hora de localizar archivos o directorios que no recuerdas donde
tienes. Aquí tiene algunos ejemplos que te pueden ser de gran utilidad:

$ locate archivo1.txt

En este caso tienes un claro ejemplo de como realizar una búsqueda simple del archivo archivo1.txt directamente por
su nombre. Es útil solo si sabes el nombre exacto del elemento que estás buscando.

Crear, Borrar, Copiar y Mover Archivos y Directorios


En esta parte conocerás todos los comandos necesarios a la hora de realizar acciones tales como: crear un nuevo
directorio, copiar un archivo y pegarlo en otra ubicación, mover ficheros de una ubicación en otra, etc. Esta es
probablemente la parte del post de la que podrás sacar mas jugo, así que vayamos allá;)

Mkdir
El comando mkdir te permitirá crear un directorio con el nombre y la ruta que especifiques. Si no le indicas ninguna
ruta, por defecto, te creará la carpeta dentro del directorio de trabajo en el que te encuentres. A continuación tienes
algunos ejemplos sencillos.

$ mkdir /home/usuario1/directorio1

En el caso de arria, mkdir te creará el directorio de nombre directorio1, en la ruta que le hayas especificado, en este
caso dentro de la carpeta principal de usuario.

$ mkdir directorio2

Con esta sintaxis, el comando te creará una carpeta de nombre directorio2 dentro del directorio de trabajo en la que te
encuentres (recuerda utilizar pwd para saber donde estás).

Estos son las dos principales maneras de crear carpetas en Linux desde la consola. Asimismo, si quieres profundizar
más en el uso de este comando, puedas explorar otras muchas opciones a través del comando man mkdir. Como ves,
crear una carpeta en Linux desde la consola, es igual de fácil que hacerlo desde el menú gráfico del navegador de
archivos

Rmdir
El comando rmdir te permite eliminar el directorio que le especifiques. Para poder utilizar este comando, el directorio
a borrar debe estar vacío. A continuación tienes un par de ejemplos.

$ rmdir /home/usuario1/directorio1

En este caso, rmdir borrará el directorio de nombre directorio1, que se encuentra en la ruta especificada, en este caso
dentro de la carpeta de usuario.

$ rmdir directorio2
En este otro ejemplo, el rmdir eliminará el directorio de nombre directorio2, el cual debe encontrarse dentro de la
carpeta en el que te encuentres. De lo contrario, indicará que el directorio no existe.

Rm
El comando rm te permite eliminar archivos sueltos y directorios que no se encuentren vacíos. A continuación tienes
algunos de los usos principales del comando.

$ rm /home/usuario1/archivo1.txt

En este caso, rm te borrará el archivo de texto archivo1.txt, que se encuentra en la ruta especificada, para este caso
dentro de la carpeta de usuario.

$ rm -r /home/usuario1/directorio1

Con esta opción, rm borrará el directorio directorio1 de forma recursiva. Esto significa, incluyendo todos los archivos
y subdirectorios que se encuentren dentro de él (pidiéndote, eso si, confirmación para cada archivo).

rm -rf /home/usuario1/directorio1

Si te quieres saltar el paso de tener que confirmar archivo por archivo que realmente deseas borrarlo, con este
comando borrarás todo el contenido del directorio sin advertencias.

Eso si, mucho ojito con rm, puesto que dependiendo de como lo uses, puede dar cabida a situaciones como esta. Se
trata de ser consciente de como funciona y de los parámetros que estas introduciendo en cada momento.

Cp
Usando el comando cp, seras capaz de copiar archivos y directorios, así como ubicarlos en otras rutas. A
continuación, tienes un par de ejemplos de como se puede utilizar.

$ cp archivo1.txt archivo2.txt

Este es posiblemente el uso más simple de cp. Con esta forma, crearás una copia del archivo archivo1.txt la cual se
guardará con el nombre archivo2.txt. En este caso, el archivo de partida debe encontrarse dentro del directorio de
trabajo en el que estés.

$ cp /home/usuario1/archivo1.txt /tmp/archivo2.txt

Alternativamente, puedes especificar la ruta en la que se encuentra el archivo de partida, de nombre archivo1.txt, y la
ruta del directorio dentro del cual quieres que se guarde la copia, en este caso dentro del directorio tmp.

Como en todos los casos, puedes explorar muchas más opciones tecleando man cp en la consola. Y antes de acabar
con cp, te dejo a continuación un par de truquillos que te pueden venir muy bien (esto ya como guindilla del pastel)

Mv
El comando mv te servirá para mover archivos desde la consola. Sería lo equivalente a arrastrar un archivo desde una
ubicación a otra. La sintaxis es muy sencilla, solamente debes especificar la ubicación de inicio, incluyendo el nombre
del archivo, y la ubicación de destino. También puedes modificar el nombre del archivo en su ubicación de destino.

mv /home/usuario1/Descargas/archivo1.txt /home/usuario1/Documentos/archivo1.txt

En este ejemplo de arriba estamos moviendo el archivo de nombre archivo1.txt desde la carpeta Descargas hacía la
carpeta Documentos. Para ello hemos utilizado rutas absolutas.

mv Descargas/archivo1.txt Documentos/archivo1.txt

En este otro ejemplo he hecho exactamente lo mismo pero utilizando una ruta relativa, suponiendo que nos
encontramos en la carpeta de usuario dentro de la Home.
La Terminal de Linux (III). Comandos para Obtener Información del Sistema
En esta guía vamos a dar un repaso a algunos comandos que te permitirán obtener información del sistema
operativo desde la línea de comandos, como los usuarios actualmente logueados, las sesiones de terminal abiertas,
los procesos en ejecución, el hardware utilizado, etc.

Como info adicional antes de empezar con el post, quiero comentarte que el artículo que estas a punto de leer forma
parte de una serie temática de varios posts centrados en el uso de la consola en Linux. Debajo del post tienes
listados el resto de artículos. Ahora si que sin más, voy a ir directamente al grano…

Información del Sistema Operativo


Primero de todo me centrare en información general a nivel de software y del sistema operativo. Antes que nada, es
importante que tengas en cuenta que muchos de estos comandos debas utilizarlos con permisos de
superusuario (utilizando «sudo» en Ubuntu, o «su» en otras distros como Debian o Fedora). Vayamos allá.

Uname
El comando uname te mostrará por pantalla información del sistema operativo, como puede ser la plataforma, la
versión del Kernel utilizada, o la arquitectura del sistema. El comando acepta diversas opciones, algunas de las cuales
tienes a continuación.

$ uname

Con esta sintaxis, el comando te mostrará simplemente el nombre del Kernel utilizado, en este caso Linux.

$ uname -o

Utilizando esta opción, el comando te mostrará el nombre del sistema operativo, en este caso GNU/Linux.

$ uname -a

En este caso, a parte de indicar el nombre del Kernel y del sistema operativo, también te informará de la arquitectura
del sistema, el nombre de host, el procesador, etc.

$ uname -m

Con esto podrás conocer si tu CPU tiene soporte para la virtualización, que deberás activar posteriormente desde la
BIOS. Muy útil si trabajas si trabajas con máquinas virtuales.

Who
El comando who te listará los usuarios conectados en el sistema en tiempo real. Asimismo, te indicara la sesión en la
que esta logueado cada usuario.

$ who

Con la sintaxis básica, el comando te informará solamente de los usuarios conectados y de la sesión de terminal TTY
o PTS en la que está conectado cada usuario.

$ who -a

Con esta opción, el comando te informará de la fecha y hora del ultimo arranque del sistema por parte de algún
usuario.

$ who -H

En este caso obtendrás una lista de los usuarios logueados, las sesiones de terminal a las que están conectados, y el
registro de fecha y hora a la que se han conectado.
Whoami
El comando whoami muestra por pantalla el nombre del usuario que acaba de ejecutar el comando.

$ whoami

Ifconfig
La sentencia ifconfig te servirá para ver todas las interfaces de red que tienes habilitadas en tu PC o dispositivo, junto
con varios parámetros como el nombre de la interfaz red, la dirección MAC, la dirección IPv4 e IPv6, la máscara
subred, y otros varios.

$ ifconfig

Esta es la opción básica, que básicamente te mostrará las interfaces activas. Generalmente serán la interfaz Ethernet si
te conectas con cable (normalmente eth0), la interfaz WiFi si vas con wifi (wlan0), y la interfaz local o localhost, que
es la que el sistema utiliza para conectarse consigo mismo (lo)

$ifconfig -a

Con esta opción podrás ver todas las interfaces de red disponibles en tu sistema, independientemente de que estén en
uso o no, junto con sus parámetros básicos.

$ifconfig eth0

Esta opción te permite acotar el resultado para mostrar la información de una interfaz determinada, en este caso la
Ethernet.

Información a Nivel de Hardware

Visto ya la información a nivel del sistema operativo, en el siguiente apartado verás como conseguir determinada
información del hardware en el que se ejecuta tu sistema. Esto te será especialmente útil, sobretodo teniendo en
cuenta que la información relativa al hardware que puedes obtener desde tu entorno de escritorio es bastante general
y con muy poco grado de detalle.
Dmidcode
Con esta sentencia tendrás acceso a un enorme rango de información sobre el hardware del equipo, ya sea relativa al
fabricante o ensamblador del dispositivo, fabricante de la placa base, de la CPU, y un larguísimo etcétera que puedes
ir descubriendo probando con las diferentes opciones.

$sudo dmidecode -s system-manufacturer

Con esta opción podrás ver el fabricante del PC, ya sea Asus, HP, Dell, Lenovo, etc.

$sudo dmidecode -s processor-manufacturer

De forma similar, y como se intuye fácilmente, muestra el nombre del fabricante de la CPU, generalmente Intel o
AMD.

$sudo dmidecode -s

Y por si quieres ver un listado completo de todos los posibles inputs que puedes introducir como opciones, este es tu
comando

Cat/proc
El comando cat /proc/version te muestra información detallada de la versión del Kernel utilizada, incluyendo datos
tales como la versión del compilador GCC, el nombre de la persona que compiló el Kernel, y la fecha de compilación.

$ cat /proc/version
El comando cat /proc/cpuinfo te facilitará información detallada de la CPU, considerando los diferentes núcleos, e
incluyendo datos como el fabricante, el número de núcleo, la frecuencia de reloj, el tamaño de cache, etc.

$ cat /proc/cpuinfo

Lshw
El comando lshw te mostrará una lista con todos los componentes de hardware detectados, junto con la información
que se puede extraer, como el fabricante, la versión del firmware, etc. El comando permite categorizar la información
en clases acepta multitud de opciones.

$ sudo lshw

En caso de que lo ejecutes así, el comando te imprimirá por pantalla una lista con todos los componentes de hardware
y la información que se puede extraer de ellos.

$ sudo lshw -short

En este caso, te aparecerá un árbol con todos los dispositivos detectados y su ruta de hardware. Es una manera de
obtener la información anterior de un modo mas simplificado.

$ sudo lshw -c video

Con esta opción, verás información relativa a los componentes de hardware detectados dentro de la clase ‘video’. Esto
es, la tarjeta o tarjetas gráficas detectadas, etc.

$ sudo lshw -c network

De un modo similar, aquí verás información referente a los componentes de la clase ‘network’. En este caso, la tarjeta
de red ethernet y el adaptador wireless.

Estos son sólo algunas de las opciones que puedes utilizar para obtener información del sistema. El comando lshw es
especialmente complejo, y he puesto solamente en un par de opciones de las muchísimas que ofrece. Si quieres
aprender más sobre él, puedes encontrar más información tecleando man lshw en la terminal.

Información Externa
Como información externa me refiero a aquella información externa a tu sistema, como podría ser la fecha, hora,
condiciones meteorológicas, etc.
Date
El comando date te imprimirá por pantalla la fecha actual del sistema operativo. Acepta algunas opciones, pero en
general su uso es muy sencillo.

$ date

En su sintaxis más básica. Este es la sintaxis básica, el comando te imprimirá la fecha actual según el estándar CEST.

$ date -u

Con esta opción, podrás visualizar la fecha actual según el estándar universal o UTC.
Cal
El comando cal muestra el calendario de un mes o año especificados. Acepta diferentes opciones, algunas de las cuales
son:

$ cal

Es la forma básica del comando, y por defecto te mostrará el calendario del mes actual.

$ cal -y 2019
Con esta opción, el comando te mostrará el calendario completo del año entrado por pantalla, en este caso el 2019.

Curl wttr.in
Con esta simple sentencia podrás consultar la previsión meteorológica directamente desde la consola. Sería la forma
geek de consultar el tiempo.

curl wttr.in

Esta es el modo más fácil de utilizarlo. Te entrega directamente la previsión de tu zona geográfica para los próximos
tres días. Aparte de esta opción básica, puedes personalizar la salida de muchas maneras. A continuación tienes un
ejemplo.

curl wttr.in/paris

Para consultar la previsión de una zona en concreto, basta con añadir “/” al final seguido de la zona (como datos
acepta ciudad, código de aeropuerto o nombre de dominio). Tienes una ayuda rápida aquí: http://wttr.in/:help.

La Terminal de Linux (IV). Comandos para Crear, Leer o Editar Archivos


En esta parte verás de forma muy rápida y directa como crear y leer archivos de texto desde la línea de comandos,
incluir lineas de texto en un archivo, o imprimir su contenido por pantalla para poder visualizarlo de antemano. Para
ello, aprenderás a utilizar de forma comandos como touch, cat o more, y también a defenderte medianamente bien con
Nano, un editor de archivos en modo texto, al igual que Gedit pero para ser usado desde la termina.

Antes de empezar, decirte que este post forma parte de una serie de artículos enfocada a profundizar en el uso del
intérprete de comandos de Linux. Al final del post tienes enlazados el resto de posts. Dicho esto, ¡vamos allá!

Como en los casos anteriores, voy a mostrar un listado con algunos ejemplos de los comandos más utilizados a la hora
de crear y leer ficheros de texto desde Bash. Empezaré por el caso de crear un fichero de texto vacío, para el cual
utilizaré el comando touch.
Touch
El comando touch te va a permitir, entre otras cosas, crear un archivo de texto vacío (en formato .txt) al que,
posteriormente, podrás agregarle el contenido que desees de forma manual, o mediante el uso de otros comandos que
veremos.

touch nombrearchivo

Esta opción te generará un archivo de texto vacío de nombre nombrearchivo, en el directorio en el que te encuentres
(por defecto el directorio del usuario con el que estás logueado en la terminal)

touch nombrearchivo1 nombrearchivo2 nombrearchivo3

En este caso, el comando te generará tres archivos de texto vacíos, con los nombres nombrearchivo1, nombrearchivo2,
y nombrearchivo3, y en el directorio de trabajo en el que te encuentres.

Imprimir el Contenido de un Archivo de Texto

Siguiendo con el caso de visualizar el contenido de un fichero desde la misma consola, los comandos más útiles en
este sentido son cat y more y less, cada uno con sus particularidades, como verás a continuación.
Cat
El comando cat es uno de los comandos más utilizados cuando se trata de manejar archivos de texto (en formato .txt)
desde la terminal. Entre sus múltiples opciones, está la posibilidad de crear un archivo, imprimir por pantalla su
contenido, etc. Veamos algunos ejemplos:

Este comando te creará un archivo de texto vacío, de nombre nombrearchivo, y te permitirá teclear el contenido que
desees introducirle. Una vez tecleado el contenido, puedes finalizar mediante la combinación CTRL+D.
cat > nombrearchivo
contenido línea 1
contenido línea 2
CTRL+D

Esta orden te permitirá imprimir por pantalla todas las lineas de texto del archivo de texto de nombre nombrearchivo.
El archivo indicado debe encontrarse en el directorio de trabajo actual.

cat nombrearchivo

Esto te imprimirá por pantalla, de forma conjunta, el contenido de los archivos indicados, en este
caso nombrearchivo1 y nombrearchivo2.

cat nombrearchivo1 nombrearchivo2

Este comando te imprimirá por pantalla el contenido del archivo de texto de nombre nombrearchivo, mostrándote,
además, el número de línea al principio de cada línea de texto.

cat -n nombrearchivo

Muy similar al anterior, con la diferencia de que a la hora de numerar las líneas de nombrearchivo, solo se numeran
aquellas que contienen texto, y se descartan las lineas en blanco.

cat -b nombrearchivo

Hay muchas más opciones, pero creo que con estas pocas ya ves más o menos por dónde va la cosa. Como suelo decir,
si quieres profundizar más en el uso del comando lo más recomendable es ir a la misma página de manual
tecleando man cat en la misma terminal.

More
El comando more es otro comando útil para imprimir por pantalla el contenido de un archivo de texto. Esencialmente
es igual que el comando cat, con la diferencia de que el comando more pagina el contenido, y es más adecuado cuando
para leer archivos largos. Veamos algunu ejemplo:

Esto te permitirá imprimir por pantalla el contenido del archivo ‘nombrearchivo’, pero con el resultado paginado. Así,
primero se mostraran las líneas que quepan en una pantalla sin hacer scroll. El resto serán accesibles mediante la
tecla espacio.
more nombrearchivo

Less
El comando less, al igual que los comandos cat y more,te permitirá leer el contenido de un archivo de texto. A
diferencia de los otros dos, éste te mostrará el contenido en modo editor de texto, y para moverte por el contenido
deberás utilizar combinaciones de teclado.

Con esta opción podrás leer al contenido del archivo indicado, moviéndote por las distintas líneas a través del teclado.

less nombrearchivo

Una vez en modo texto, tienes varias opciones para desplazarte verticalmente a lo largo de las diferentes líneas.
Una opción es haciendo scroll con el ratón, que si utilizas la aplicación de la terminal que vienen con el entorno de
escritorio podrás hacer sin problema.

Si no funciona esto, puedes utilizar los controles de desplazamiento del teclado. Al estar en modo lectura, deberían
funcionar sin problema tanto si estás en el entorno de escritorio o en una sesión de terminal TTY.

Otra opción es utilizar la tecla g y luego Enter. Esto avanzará, por defecto, una línea adelante, pero puedes avanzar
cualquier número de líneas que deseas, introduciendo el número justo después de marcar la g.

:1
Otra opción es utilizar la tecla espacio. Esto hará algo similar a un AvPag.

Finalmente, para salir del modo lectura y volver a la terminal, tan solo debes marcar la tecla q.

Leer y Editar Archivos de Texto


Finalmente acabamos con Nano y Vim, dos potentes editor de textos en modo consola, muy conocidos entre los
usuarios mas geeks. Empezaré por Nano, por ser más sencillo de utilizar y aprender, y acabaré con Vim, bastante más
complejo al principio. Ambos son editores de texto por consola, pero sus puntos en común digamos que acaban aquí.

Nano
Nano es un editor de textos para la terminal, que más que para leer archivos sirve para modificarlos y editarlos,
aunque para esta guía también nos vale perfectamente para abrir el archivo y visualizar su contenido desde la línea de
comandos. A continuación tienes las principales opciones que ofrece, así que te animo a que vayas jugando con ellas
para ir familiarizándote.

Primero de todo, veamos como abrir el editor de textos Nano, algo que puedes hacer fácilmente con el siguiente
comando.
nano

Una vez abierto, si te fijas en la parte inferior, verás que se muestra las diferentes combinaciones de teclas que
necesitaras a la hora de trabajar con archivos.

CTRL+R

Combinación de teclas para indicarle un archivo de texto a Nano para que lo abra y muestre su contenido por la
consola.

CTRL+V

Estando dentro de Nano y con el archivo abierto en la consola, esta combinación sirve para avanzar a la página
siguiente.

CTRL+Y

De modo similar a la combinación anterior, esta sirve para retroceder a la página anterior.

CTRL+W

Esta combinación te servirá para introducir un carácter o grupo de caracteres y buscar en el texto cualquier letra o
palabra que coincida con el parámetro de búsqueda.

CTRL+X

Para cerrar el archivo una vez lo hayas terminado de visualizar en la consola. Eso cerrará el editor de texto Nano, y
volverá a aparecer el promp de Bash por consola.

Estas son solo algunas combinaciones de teclado típicas, para poder moverte con soltura con Nano. A partir de ahí, si
deseas profundizar con poco más con él, te dejo con el siguiente vídeo de introducción, para que

Ahora que tienes una idea de como funciona Nano, si te ves con ganas, puedes echar un ojo a una alternativa que te
ofrecerá un modo de uso totalmente distinto.
Vim
Vim es un editor de texto por consola muy potente y a la vez conocido entre los usuarios más geeks. A diferencia de
Nano, que puede utilizarse con relativa facilidad y soltura desde el primer momento, con Vim la cosa cambia.
Digamos que la curva de aprendizaje es mucho mayor.
Para empezar, Vim no suele venid pre-instalado en la mayoría de distribuciones, pero si que debería estar disponible
en los repositorios oficiales, por lo que podrás instalarlo a golpe de comando. En caso de que te encuentres en
Ubuntu, Debian, o cualquier derivada, puedes hacerlo con el siguiente comando:
sudo apt install vim

Para abrir el editor Vim basta con abrir una ventana de terminal, y teclear el siguiente comando.

vim

Con esto verás un pequeño texto de presentación del proyecto. Estando ahí, puedes abrir el fichero de ayuda de Vim
desde el propio editor. Basta con introducir esta pequeña sentencia, seguida de Intro.

:help

Vim requiere una curva de aprendizaje más lenta que otros editores de texto, y obviamente no se aprende con solo
leer un post o ver un par de vídeos. Aún así, si deseas aprender a utilizarlo, te dejo con este vídeo introductorio de
DistroTube (en inglés), para empezar con los primeros comandos.

La Terminal de Linux (V). Comandos para Listar y Finalizar Procesos


Muy buenas lector, en esta guía me voy a centrar en los procesos de Linux. En primera instancia, te contaré, por un
lado, como puedes puedes listar los procesos ejecutándose en tu sistema, para ver aquellos que consumen más
CPU o que están ocupando más memoria, etc. Por otro lado, te enseñaré como puedes detener o matar procesos
concretos que puedan estar causando un mal funcionamiento de una aplicación, o incluso del entorno de escritorio
completo.

Todo ello vamos a verlo a través de la terminal, ya que este post forma parte de una extensa serie de artículos
dedicados a explotar el uso de la línea de comandos. Al final tienes enlazados el resto de posts de la serie. Espero que
lo disfrutes.

Un Poco Sobre los Procesos en Linux


Un proceso es, en palabras simples, una instancia o instancias de un programa en ejecución. Todos los procesos
conforman una estructura en forma de árbol, de modo que tenemos procesos padre e hijo.

A grandes rasgos, todos ellos parten de init o systemd, que es el primer proceso que se ejecuta en el arranque del
sistema y del que nacen todos los demás.
Todos los procesos, como verás en los ejemplos, se identifican por un PID o Process ID, que suele ser un número que
va cambiando cada vez que un proceso se finaliza y vuelve a iniciarse. De hecho, el único que tiene un PID fijo de 1 es
init.

Por poco que hayas utilizado GNU/Linux, seguro que alguna vez has utilizado el monitor de sistema (muy similar al
administrador de tareas de Windows). Allí tienes un listado de todos los procesos que corren bajo tu usuario, y puedes
ver sus atributos, finalizarlos, etc.

Esta puede ser una manera muy válida de verlo, pero en la guía que nos ocupa me voy a centrar en hacerlo vía
terminal, puesto que conocer los comandos te puede venir muy bien, como dije al principio, si tienes un problema con
la sesión gráfica y te ves obligado a solventarlo desde la terminal TTY.

Comandos para Ver o Listar los Procesos Activos


Partiendo de que ya estamos a la terminal, te presento probablemente las que son las tres opciones más conocidas a la
hora de listar los procesos activos del sistema.Antes que nada, ten en cuenta que la mayoría de los comandos
requerirán permisos de superusuario. Por ello, si estás en distribuciones como Ubuntu o Linux Mint, donde el usuario
root está deshabilitado, deberás poner sudo delante de cada comando. Si por contra, utilizas distribuciones como
Debian, Fedora o OpenSuse, y dispones de root habilitado, entonces puedes ejecutar todos los comandos haciendo
un su y poniendo a continuación la contraseña de superusuario.
$ su
Top
Esta es, posiblemente, la herramienta más conocida a la hora de mostrar información de los procesos en ejecución. Lo
que hace es mostrarte una visión en tiempo real (se actualiza cada pocos segundos), del estado de tu sistema.

La opción más básica te mostrara un listado básico, junto con la información de algunos de sus atributos por
columnas (PID, usuario propietario, nombre, etc.). Puedes desplazarte entre las diferentes filas por los controles del
teclado, y teclear «q» para volver al modo normal y seguir utilizando la consola.

$ sudo top

Ps
La utilidad ps te muestra una foto con todos los procesos ejecutándose en tu sistema, junto con información de cada
uno de ellos. Es un poco como top, pero sin actualizarse a tiempo real, es decir mostrando una foto estática del
momento de su ejecución. Te presento algunas opciones de su uso a continuación.

En el primero caso, utilizando el -e verás un listado de todos los procesos y subprocesos junto con su ID (PID).

$ sudo ps -e

Combinando el parámetro -e con el parámetro -f, que viene de full-format listing, tendrás acceso al mismo listado
anterior, pero esta vez con mucha más información de los atributos en columnas, incluyendo el ID del padre (PPID) y
la ruta del ejecutable, entre otros.

$ sudo ps -ef

Pstree
Mediante el comando pstree, puedes ver la misma información que en los casos anteriores, pero representada en
forma de árbol, identificando, de este modo, padres e hijos. Es una vista similar a lo que puedes llegar a ver con el
monitor de procesos gráficos de GNOME.

$ sudo pstree

Como seguramente verás, todos parten de init, o de systemd en su defecto, como viene siendo la norma en las
versiones más recientes de la mayoría de distribuciones.

A partir de ahí, se va ramificando en subprocesos e hilos. Los hilos los puedes reconocer porqué se muestran entre
llaves ({}). Además, si un proceso contiene varias veces un hilo con el mismo nombre, este aparecerá también entre
corchetes ([]) e indicando con un número las veces que se repite.

Si tienes abierto Chrome/Chromium en el momento de pasar el comando, puedes ver ejemplificado esto ultimo que te
comento. Cuando he hecho la captura de arriba, tenía tres pestañas abiertas, que se visualizan como tres subprocesos
separados, cada uno de los cuales tiene diferentes threads o hilos.
Visto todo esto, ya es hora de que veas como finalizar o detener un proceso.
Comandos para Detener o Matar Procesos Activos
Pidof
Para conocer el PID de un determinado proceso, conociendo el nombre de este, puedes utilizar el comando pidof.
(Aclaración: Antes había un error en el nombre de este comando, que ya ha sido corregido a fecha del 27/01/2017
gracias al comentario de Walter).

$ sudo pidof nombre-del-proceso

Kill
Mediante el comando kill, podrás matar un proceso en Linux conociendo su valor PID. Con la sintaxis básica, el
comando se ejecutará enviando la señal SIGTERM, que es la que viene por defecto y ordena la salida correcta
(dándole tiempo a que realice las acciones pertinentes de salida).

$ sudo kill PID-del-proceso

Si la linea anterior no ha hecho efecto, puedes optar por ejecutar el comando kill con la opción -9, la cual envía la
señal SIGKILL, forzándolo a la salida en caso de que se resista, sin darle tiempo a realizar las acciones de salida.

$ sudo kill -9 PID-del-proceso

Killall
Con el comando killall podrás matar un proceso conociendo su nombre. Este comando solo es válido en Linux.

$ sudo killall nombre-del-proceso

Pkill
Otra opción similar es utilizar pkill, que te permitirá detener un proceso indicando solo algunos caracteres de su
nombre.

Es un comando fácil de utilizar y que no requiere conocer el PID concreto. Sin embargo, hay un riesgo, y es que la
señal se enviará a todos los procesos que tengan una correspondencia en nombre. Como más caracteres introduzcas,
más ajustada sera la búsqueda.

$ sudo pkill carácteres-nombre-del-proceso

Acceder a las Terminales TTY


Como dije al principio bien no suele ser habitual (o no debería), en GNU/Linux también puede ocurrir que un mal
funcionamiento en algún programa cree un bloqueo completo del entorno de escritorio.

En estos casos, no podremos utilizar la aplicación de terminal del escritorio, y el único salvavidas será poder
contar con una de las terminales TTY. Puedes acceder directamente a la terminal TTY1 mediante la combinación
de teclas ‘CTRL+ALT+F1’. Una vez allí, deberás loguearte con tu usuario antes de poder utilizar ningún comando. Tan
solo pon el nombre y la password y listo.

Hace unos días publique una entrada en la que explicaba como reiniciar el servidor X en Ubuntu en caso de que se
hubiese bloqueado la sesión gráfica. Esta puede ser otra vía para atacar el problema.

La Terminal de Linux (VI). Comandos para Comparar Archivos de Texto


En este post te contaré como puedes comparar el contenido dos archivos de texto (que ha simple vista pueden
parecer iguales) para determinar si realmente son iguales o no. Esto quizá no es algo que se necesite hacer muy a
menudo, pero en ciertos casos puede venir bien, sobretodo a la hora de comparar archivos con código fuente, archivos
de configuración de alguna aplicación, etc.

Para ello vamos a utilizar el interprete de comandos, ya que, como verás al final, esta guía forma parte de la serie de
posts dedicados a exprimir al máximo esta herramienta tan potente que tenemos en GNU/Linux. Tienes el resto de
posts de la serie enlazados al final.
Comparar Archivos de Texto
Diff
Para el propósito comentado, básicamente nos vamos a utilizar el comando diff en sus múltiples posibilidades. El
comando diff compara dos archivos línea a línea a línea para detectar diferencias entre ellos. La sintaxis básicamente
esta:

$ diff [parámetros] [archivo1] [archivo2]

La salida generalmente muestra todos el contenido diferentes entre los dos archivos. El contenido referente al primer
archivo pasado por argumento se muestra precedido por «<«, mientras que el referente al segundo archivo por «>».

$ diff texto1 texto2


$

En este caso, he utilizado la opción más básica (sin parámetros) contra dos archivos de texto iguales, que he llamado
texto1 y texto2. Como son iguales, no hay ningún output por pantalla.

$ diff texto2 texto2


42a43
> #force_color_prompt=yes

Si utilizas el mismo comando pero habiendo modificado uno de los archivos, diff te mostrara uno a uno todas los
caracteres, palabras o frases que no coinciden. En el caso del ejemplo había eliminado una línea de texto de uno de los
archivos que contenía el texto: #force_color_prompt=yes. Esta línea está en el segundo archivo (va precedida por «>»
en el output) pero no en el primero.

$ diff -b texto2 texto2


42a43
> #force_color_prompt=yes

Con el parámetro [-b] tenemos la opción de hacer la comparación igual que en el caso anterior, pero ignorando todos
los espacios en blanco. El output en este caso es básicamente el mismo.

Y aunque se trata de un comando que se utiliza básicamente para comparar archivos de texto, también puedes
utilizarlo para comparar archivos que estén en otros formatos, como odt, doc, docx, pdf, mp4, etc., etc.

$ diff word1.odt word2.odt

En este caso he utilizado el comando (sin parámetros) para comparar dos archivos iguales en formato odt. Como ves,
si no hay ningún output nos está indicando que los dos archivos que hemos pasado como parámetro son iguales.

$ diff word1.odt word2.odt


Los archivos binarios word1.odt y word2.odt son distintos

Ahora hemos hecho la misma prueba pero con dos archivos odt diferentes. Como puedes ver, en este caso el output
no nos muestra las diferencias encontradas (al no ser archivos de texto) pero si que nos indica que los archivos no son
iguales.

Cmp
El comando cmp compara dos archivos de texto al igual que diff, pero en este caso hace una comparación byte a byte.
La sintaxis es muy similar:

$ cmp [parámetros] [archivo1] [archivo2]

También podemos hacer la prueba con , como doc, odt, pdf, mp4, etc., sin embargo en estos casos solo se limita a
indicar si son iguales o no, sin señalar las diferencias. Y ahora veamos algunos ejemplos:

$ cmp texto2 texto2


texto1 texto2 son distintos: byte 1454, línea 43
Como ves, al utilizar el comando en su forma más simple sobre los dos archivos de texto modificados del ejemplo
anterior, cmp nos indica que los dos archivos son distintos, y además nos muestra el byte diferente y el número de
línea a que corresponde en el texto.

$ cmp -b texto2 texto2


texto1 texto2 son distintos: el byte 1454, en la línea 43 es 12 ^J 43 #

Al utilizar el comando con el parámetro [-b], si hay diferencias entre los dos archivos cmp nos indica como output el
byte diferente, el número de línea y el contenido que varía.

La Terminal de Linux (VII). Comprimir y Descomprimir Archivos


Esta guía forma parte de esta serie de posts dedicados a exprimir a fondo la línea de comandos en Linux. El post
de hoy tengo la intención de mostrarte todos los comandos que necesarios para que aprendas a comprimir y
empaquetar archivos o directorios, listar el contenido de una carpeta comprimida y extraer los diferentes archivos o
carpetas contenidas en ella.

Para ello trabajaremos con los diferentes formatos de compresión (o al menos los más comunes) con los que te puedes
encontrar en prácticamente cualquier distribución GNU/Linux de forma nativa, tales
como zip, tar, gz, bz2, tar.gz y tar.bz2. Así que, tanto si eres nuevo en Linux, como si ya llevas cierto tiempo, en esta
guía te servirá una visión clara de como tratar con los diferentes formatos de compresión desde la línea de comandos.

Gzip y Bzip2
En este grupo conocerás los comandos básicos con los que podrás comprimir y descomprimir cualquier fichero en
Linux utilizando los formatos .

En este sentido es justo señalar que, en entornos Unix, se separa lo que es el concepto de compresión de lo que es el
hecho de empaquetar varios ficheros en un único archivador (obviamente puedes utilizar formatos con los que
combinar las dos acciones, como verás un poco más adelante).

Para la compresión pura de un archivo, en Linux se utilizan mucho el formato GZIP, todo un clásico en entornos
Unix, y el formato BZIP2, algo más moderno y con un mayor índice de compresión.

Antes que nada, ten en cuenta que tenemos que situarnos en la carpeta dónde se encuentran los ficheros que
queremos comprimir. Si tienes dudas o te falta práctica a la hora de desplazarte por las diferentes carpetas desde la
terminal, puedes consultar el post que te acabo de enlazar. Para poner un ejemplo, supongamos que están en la
carpeta Documentos dentro de la home.

$ cd Documentos

#gzip
Gzip es una utilidad de GNU/Linux integrada en el propio sistema operativo y que permite la compresión o
descompresión de archivos en formato gz.

Como apunte importante, Gzip es una herramienta de compresión pura, es decir, solo comprime archivos individuales
(no directorios), y, a diferencia de formatos mas populares como RAR o ZIP, no permite empaquetar a varios dentro
del mismo paquete.

A continuación tienes los principales comandos que puedes utilizar para comprimir y descomprimir un archivo
utilizando gzip.

La sentencia que tienes a continuación es la que te servirá para comprimir cualquier archivo en Gzip, lo que dará
como resultado un paquete comprimido con la extensión .gz.

$ gzip -9 archivo

Para gestionar cualquier fichero comprimido en gzip tienes varias opciones. Si quieres conocer los principales
parámetros del archivo, véase el ratio de compresión o el nombre del archivo una vez descomprimido, puedes utilizar
la siguiente sentencia:

$ gzip -l archivo.gz
Y finalmente, para descomprimir un Gzip (que podrás reconocer porqué termina con la extensión .gz) , puedes utilizar
la siguiente sentencia:

gzip -d fichero.gz

#bzip2
La utilidad Bzip2 también forma parte del sistema en GNU/Linux y es muy similar a Gzip, lo único que en este caso
sirve para comprimir o descomprimir utilizando el formato bz2.

Al igual que ocurre con Gzip, Bzip2 solo permite la compresión de archivos individuales, ya que se trata de una
herramienta puramente de compresión.

Para comprimir un fichero cualquiera, que en este ejemplo voy a denominar archivo, en bzip2, la sentencia que debes
utilizar es la que tienes a continuación.

$ bzip2 -z archivo

Una vez tienes el archivo comprimido en la extensión bz2, que en este caso se llama archivo.bz2, puedes hacer un test
de la integridad del mismo con el comando que tienes debajo. Si todo está OK, no habrá ningún output.

$ bzip2 -t archivo.bz2

Siguiendo con el ejemplo anterior, para descomprimir el registro que se te ha generado como resultado de la
compresión en Bzip2, puedes utilizar la sentencia de debajo.

$ bzip2 -d archivo.bz2

Tar
Y si en el primer grupo nos hemos centrado en las operaciones de compresión y descompresión puras, ahora le va
tocando al turno al empaquetado y desempaquetado.

Para ello, el formato más utilizado en GNU/Linux es TAR, una utilidad que permite empaquetar varios archivos o
directorios dentro de un solo paquete en formato TAR (lo reconocerás por la extensión).

En este caso voy a abordar el uso de TAR como tal, pero lo más común es que se use en combinación con los formatos
de compresión Gzip y Bzip2 vistos más arriba (eso me lo reservo para la ultima parte del post).

#tar -cvf
Siguiendo con el primer ejemplo, podemos suponer que queremos empaquetar dos archivos, que
denominaré archivo1 y archivo2, dentro de un paquete .tar que podemos denominar paquete. Para empaquetar los
diferentes archivos uno a uno, puedes utilizar el siguiente comando:

$ tar -cvf paquete.tar archivo1 archivo2

Cuando se trata de empaquetar varios ítems, lo mas práctico es ubicarlos todos dentro de una misma carpeta y
empaquetar directamente la directorio. Para ello, puedes utilizar el mismo comando anterior pero sustituyendo los
diferentes archivos con el nombre del directorio, que en este ejemplo podemos denominar directorio.

$ tar -cvf paquete.tar directorio

#tar -tvf
Una vez tienes un paquete .tar, una de las cosas que podemos necesitar es conocer el contenido que hay dentro. Para
ello, si utilizas el comando que te pongo a continuación, te listara, de forma recursiva (esto es, recorriendo todos los
niveles) los diferentes archivos o directorios uno a uno.

$ tar -tvf paquete.tar


#tar -xvf
Una vez listado el contenido del paquete .tar que hemos creado, lo siguiente es desempaquetar el contenido que hay
dentro. Para ello, debes tener en cuenta que si mantienes archivos o directorios con el mismo nombre fuera del
paquete (en la misma ubicación) estos serán reemplazados por los nuevos, por lo que conviene que te asegures bien
antes.

$ tar -xvf paquete.tar

Tar.Gz y Tar.Bz2
Llegados este punto, creo que es el momento de tratar con las operaciones que combinan compresión y empaquetado,
que al fin y al cabo son las más comunes en otro tipo de entornos como Windows (de hecho, así es como trabajan los
formatos de compresión más extendidos, léase ZIP, RAR o 7-Zip, entre otros).

Cuando hemos hablado de Gzip y Bzip2 ya has visto que se trata de dos utilidades puramente de compresión. Pues
bien, lo que no te he contado, es que puedes combinar cualquiera de estas operaciones con TAR, dando lugar a
archivos con las extensiones .tar.gz y .tar.bz2, que seguramente te resultaran muy familiares en Linux.

Esto posibilita el hecho de poder comprimir múltiples archivos dentro de un mismo archivador, al igual que puedes
hacer con otros formatos más populares. A continuación te resumo los comandos más importantes que debes conocer
en este sentido:
#tar -czvf
Para comprimir varios archivos (a modo de ejemplo vamos a llamarlos archivo1 y archivo2) dentro de un paquete
comprimido tar.gz, puedes utilizar el siguiente comando. Como verás, es el mismo que utilizamos para el
empaquetado en TAR, con el añadido del parámetro -c, que representa la compresión en Gzip.

tar -czvf paquete.tar.gz archivo1 archivo2

También nos puede interesar comprimir un directorio entero, con todo su contenido dentro. En este caso, la sentencia
sería la misma pero sustituyendo los diferentes ficheros por el nombre del directorio en cuestión.

tar -czvf paquete.tar.gz directorio

#tar -xzvf
Para descomprimir el paquete y desempaquetar su contenido, seguimos con la misma estructura, pero en este caso
sustituimos el parámetro -c, de compresión, por el parámetro -x, de descompresión. A continuación tienes la sentencia
completa.

tar -xzvf paquete.tar.gz

#tar -cjvf
Para empaquetar y comprimir varios ítems (en este ejemplo utilizo dos registros denominados archivo1 y archivo2) en
un paquete .tar.bz2, te puedes valer de la siguiente sentencia, que si te fijas, es igual que en el caso de los .tar.gz pero
cambiando la -z por la -j.

tar -cjvf paquete.tar.bz2 archivo1 archivo2

#tar -xjvf
Para descomprimir un paquete .tar.bz2 y desempaquetar su contenido, seguimos con la misma estructura, pero en
este caso sustituimos nuevamente el parámetro -c, de compresión, por el parámetro -x, de descompresión.
tar -xjvf paquete.tar.bz2

ZIP
Siguiendo con las operaciones que combinan la compresión y el empaquetado de archivos, en este punto nos
centraremos en ZIP, uno de los sistemas de compresión y empaquetado más extendidos. A continuación te resumo los
principales comandos que debes conocer:
#zip
Para comprimir y empaquetar un conjunto de archivos o directorios dentro de un archivador en formato ZIP, en
cualquier distribución GNU/Linux puedes hacer uso de la utilidad ZIP de forma nativa. Aquí tienes la sentencia que
debes utilizar:

$ zip archivador.zip archivo1 archivo2

#unzip
En el caso de que tengas un paquete comprimido en ZIP, la utilidad que debes utilizar para gestionarlo es unzip. Con
ella podrás realizar acciones como listar el contenido de dentro, o descomprimir el paquete y desempaquetar los
diferentes archivos. A continuación tienes algunos ejemplos de como puedes utilizarlo.

Con este comando podrás listar todos los archivos o directorios contenidos del paquete archivador.zip. Es útil para
conocer el contenido antes de desempaquetarlo.

$ unzip -l archivador.zip

Con este otro comando podrás descomprimir el paquete archivador.zip y desempaquetar todos sus archivos y
directorios contenidos uno a uno en la misma carpeta de destino en la que se encuentra el archivador.

$ unzip archivador.zip

En caso de que solo quieras desempaquetar uno de los archivos contenidos, puedes utilizar el mismo comando, pero
indicando a continuación el nombre del archivo concreto, en este caso vamos a suponer que lo
denominamos archivo1 como en los ejemplos anteriores.

$ unzip archivador.zip archivo1

7z
Y, si bien hasta ahora me he centrado en los formatos con los que puedes trabajar de forma nativa desde
prácticamente cualquier distribución GNU/Linux, lo cierto es que creo justo hacer una excepción en este caso, y es
que el formato 7z y el software de compresión 7-Zip (el cual necesitaras para poder trabajar con este formato) lo valen
con creces.

7-Zip es un software de compresión totalmente libre, abierto y multiplataforma que ofrece compatibilidad para
diferentes formatos de compresión, si bien dispone del suyo propio. 7z es un formato de compresion sin perdida y que
destaca especialmente por su elevado ratio de compresión, superior a otros formatos más populares como ZIP, GZIP o
RAR.

En este caso, aprovechando que ya he publicado un post acerca de como instalar y poder utilizar 7-Zip en Linux, creo
que lo mejor será remitirte a dicho post, en el que podrás ver, por un lado, los paquetes que tienes que instalar para
poder trabajar con el, y en segundo lugar, como utilizarlo tanto desde la terminal, como de forma grafica desde el
propio navegador de archivos.

Linux (VIII). Iniciar, Detener o Reiniciar Servicios

Muy buenas lector, seguimos con la larga serie de posts dedicados a explotar al máximo el uso de la terminal de Linux
(al final del posts tienes enlazados todos los artículos de la serie). En este caso nos centraremos en la gestión de
servicios.

Básicamente verás los diferentes comandos que puedes utilizar tanto para controlar el estado de los diferentes
servicios de tu sistema, como para iniciar, detener o reiniciar un servicio concreto. ¡Vamos allá!

La Gestión de Servicios en GNU/Linux


A diferencia de Windows, donde suele haber herramientas gráficos para casi todo, en GNU/Linux muchos de las
tareas relativas a la administración del sistema suelen hacerse por consola.
Por si esto no fuera poco, uno de los rasgos característicos de GNU/Linux es que solemos disponer de varios
métodos o herramientas para llegar a hacer una misma cosa (como sucede justamente con el caso que nos
ocupa). Esto puede crear una cierta sensación de desorden y de dispersión al principio, pero una vez sabido la
dinámica no es para nada complicada.

El caso de la gestión de servicios es algo paradigmático, sobretodo con la adopción de systemd por parte de la
mayoría de distribuciones, que ha supuesto también la llegada de todo un nuevo conjunto de métodos para el control
de servicios. Métodos que, por otro lado, siguen conviviendo aún con los que teníamos antes de la implantación
masiva de systemd.

Siendo así las cosas, he pensado que lo mejor es empezar por conocer las principales opciones que nos ofrece systemd
de cara a la gestión de servicios, que en todas las distribuciones que utilizan systemd sería, por decirlo de algún modo,
el método más «correcto» o «aceptado».

Visto esto, te mostraré algunas otras opciones, como, como las que nos ofrece el veterano Init.d, que aunque se
encuentra obsoleto, aún sigue siendo operativo en muchos casos.
Controlar Servicios con systemd y systemctl
Lo dicho, empecemos por veo los diferentes comandos que nos permiten controlar el estado de los diferentes servicios
a través de systemd, que actualmente gestiona el proceso de arranque en gran parte de las distribuciones más
comunes, incluyendo Debian, Ubuntu, Fedora, o gran parte de sus derivadas.

systemd nace como sustituto de System V para controlar la secuencia de arranque y la administración de
servicios en GNU/Linux, aunque no ha estado exento de controversia, debido a su complejidad e invasión de
funciones de otras herramientas para la administración del sistema. Aun así, es lo que tenemos en gran parte de las
distribuciones a día de hoy.

Los diferentes objetos de control de systemd se denominan «unidades». Para el control de dichas unidades, systemd
utiliza una herramienta denominada systemctl, que es la que utilizaremos a continuación para controlar el estado de
los diferentes servicios. ¡Vamos alla!

Comprobar el Estado Actual de un Servicio


Lo primero que se te puede ocurrir, antes de nada, es conocer todos los servicios cargados en tu sistema. Para ello,
puedes valerte del comando que te dejo a continuación. El output puede resulta algo ininteligible, debido a la gran
cantidad de servicios que aparecerán.

sudo systemctl status

Visto esto, vamos a centrarnos ya en un servicio determinado. Como ejemplo,voy a utilizar el servicio ufw, que es el
que va asociado a UFW, el script que se encarga de gestionar el cortafuegos del kernel en Ubuntu derivados.
Para conocer el estado de ufw puedes valerte de la siguiente sentencia:

sudo systemctl status ufw

Ojo, con el comando que acabas de ejecutar lo que estamos comprobando es que el servicio o demonio de UFW esté
activo en memoria o no. No es lo mismo que UFW como tal esté habilitado (y por tanto aplicando sus reglas en el
cortafuegos del kernel) o no. Esto ultimo se debe controlar directamente desde los propios comandos de UFW.
Iniciar, Detener o Reiniciar un Servicio
Sigamos con la parte de iniciar y detener servicios en tiempo real. Continuando con el ejemplo anterior, para iniciar
el servicio ufw utilizaremos la sentencia que muestro debajo. Por defecto lo más probable es que el output te indique
que el servicio está activo, independientemente de que el script este o no aplicando las reglas (que controlamos a
través de los comandos que provee el propio UFW).

sudo systemctl start ssh

De forma análoga, si lo que quieres es detener el servicio, puedes utilizar el comando que verás a continuación. Esto
detendrá, al momento, la ejecución del servicio, pero no alterará su orden de ejecución en el siguiente arranque del
sistema.

sudo systemctl stop ufw


Otra opción imprescindible (seguramente mucho más utilizada que las anteriores), es la de reiniciar un servicio.
Esto puede ser útil sobretodo se has modificado el fichero de configuración asociado a un determinado servicio, para
que empiece a ejecutarse teniendo en cuenta dichos cambios. El comando es tan simple como esto:

sudo systemctl restart ufw

Adicionalmente a la opción de reiniciar, existe la opción de recargar la configuración de un servicio, sin


reiniciarlo completamente. Esto, en teoría sirve para ahorrar algo de tiempo, pero personalmente creo que es más
segura la opción anterior, y más teniendo en cuenta el poco tiempo que se tarda en reiniciarse el servicio. Aún así, no
está de más conocer la opción.

sudo systemctl reload ufw

Hasta ahora hemos visto como controlar los servicios en tiempo real. A continuación vamos a ver como controlar su
ejecución en el momento del arranque.

Comprobar el Estado de Arranque


Aparte de conocer el estado actual de un servicio, también puede ser interesante conocer su estado durante el
arranque del sistema. Es decir, comprobar si el servicio esta configurado para iniciarse en cada arranque o no. Esto
puedes verlo ejecutando el siguiente comando, siguiendo con el ejemplo de ufw:

sudo systemctl is-enabled ufw

Y ahora que conoces su estado de arranque, también te puede interesar saber como habilitar o deshabilitar su
ejecución en cada arranque. Esto lo vemos a continuación.

Habilitar o Deshabilitar un Servicio


Antes has visto como iniciar un determinado servicio de forma manual. Algo que tiene efecto en el momento
presente, pero nada más. Si lo que quieres es habilitar un servicio para que se inicie con cada arranque del sistema,
entonces te interesa utilizar el siguiente comando:

sudo systemctl enable ufw

Del mismo modo, para deshabilitar un servicio para que deje de ejecutarse durante el arranque del sistema te
puedes valer de la sentencia que dejo debajo. Ojo, esto no iniciará el servicio en el momento presente (en caso de estar
apagado). Simplemente establecerá que se empiece a iniciar de forma automática a partir del siguiente arranque.

sudo systemctl disable ufw

Estos son los comandos más importantes que debes conocer de cara al control de servicios a través de systemd y
systemctl, y constituyen la forma más «estándar» de hacerlo, en todas las distribuciones que hacen uso de systemd,
tales como Ubuntu, Debian y muchas de sus respectivas derivadas.

Controlar Servicios Utilizando Service


Como comentaba al principio, también existen otras formas para controlas los servicios en GNU/Linux. Una de ellas
es a través de la utilidad service, que ofrece una serie de comando muy parecidos a los que ya hemos visto, y que
básicamente hacen lo mismo. Te puede servir como alternativa a systemctl, o también si utilizas una distribución que
no haga uso de systemd.

Comprobar el Estado Actual


Antes de nada, y al igual que hemos hecho con systemctl, veamos los diferentes servicios cargados en el sistema.
Para ello, puedes valerte del comando que te dejo a continuación. El output es algo diferente al que hemos visto
utilizando systemctl, y, en mi opinión, ofrece una visión mucho más clara y entendible. Aquí verás un listado plano de
todos los servicios, con un [+] o un [-] delante dependiendo de si están cargados o no.

sudo service --status-all


Otra opción interesante es la que te permite filtrar el resultado anterior. Como ejemplo, nos puede interesar que se
muestren únicamente los servicios que estén iniciados actualmente. Esto puedes hacerlo con la siguiente sentencia:

sudo service --status-all | grep +

Y ahora toca ver el estado de un servicio concreto. En este caso, el comando es muy parecido al utilizado con
systemctl, y el output, almenos a simple vista, me ha parecido exactamente igual.

sudo service ufw status

Ojo, como he mencionado antes en el caso de systemctl, con el comando que acabas de ejecutar lo que estamos
comprobando es que el servicio o demonio de UFW esté activo en memoria. No es lo mismo que UFW como tal esté
habilitado (y por tanto aplicando sus reglas en el cortafuegos del kernel) o no.
Iniciar, Detener o Reiniciar Servicios
Los comandos para iniciar o detener un servicio utilizando service son muy similares a los utilizados con systemctl.
Empezando por iniciar un servicio, la sentencia sería la siguiente (basándome en el mismo ejemplo de ufw):

sudo service ufw start

De forma análoga, si lo que quieres es detener el servicio, puedes utilizar el comando que verás a continuación. Esto
detendrá la ejecución del servicio en el momento actual, pero no alterará su orden de ejecución en el siguiente
arranque del sistema.

sudo service ufw stop

Y finalmente tenemos la opción de reiniciar, que la que seguramente necesitarás utilizar más, sobretodo si sueles
hacer cambios en los ficheros de configuración.

sudo service ufw restart

Con esto acabo con los comandos relativos a service. Ahora pasaré a indicarte cuatro comandos básicos para hacer los
mismo utilizando Init.d.

Controlar Servicios Utilizando Init.d


Por último, veamos como podemos hacer lo mismo pero echando mano de Init.d, que básicamente era el método que
se utilizaba antes, cuando teníamos System V como gestor de arraque. Lo diferencia más importante con la que nos
encontramos aquí es que para invocar un determinado servicio, lo que hacemos es especificar la ruta en la que se
encuentra, dentro del directorio init.d, seguido de la orden concreta (status, start, stop, etc.).

Comprobar Estado Actual de un Servicio


Para comprobar el estado de un determinado servicio, en este caso ufw, lo que hacemos es indicar la ruta del fichero
de configuración dentro del directorio init.d, seguido de la orden status. Puesto en practica quedaría del siguiente
modo. El output verás que es igual que en los casos anteriores.

sudo /ent/init.d/ufw status

Iniciar, Detener o Reiniciar un Servicio


Para iniciar el servicio (en el caso hipotético de que estuviera detenido, que no es lo que ocurre en el caso de ufw, pero
sirve como ejemplo), simplemente seguimos con el mismo criterio, pero cambiando la orden del final.

sudo /etc/init.d/ufw start

Para detener el servicio, lo mismo. Al igual que en los otros casos, esto detiene la ejecución actual del servicio, pero
no modifica su estado en el arranque del sistema.

sudo /etc/init.d/ufw stop


Y lo mismo con reiniciar el servicio, simplemente cambiando la orden del final. Como en los otros casos, la orden de
reiniciar el servicio es la que necesitas utilizar cada vez que realices algún cambio en el fichero de configuración
asociado.

sudo /etc/init.d/ufw restart

Con esto llego al final de la parte dedicada a Init.d, y también al final del post. Recuerda que a día de hoy, en gran
parte de las distribuciones más populares ya se utiliza systemd para el control del arranque y la gestión de servicios,
por lo que, salvo que utilices una versión bastante antigua, o una distribución que no haga uso de systemd, la forma
más «estándar» para operar es a través de systemctl.

También podría gustarte