Comandos de la terminal de GNU/Linux que deberías conocer (segunda parte, Spanish)
Tags: beginners, tutorial, linux, spanish
Published: 2020-11-04 15:16:55

Esta es la segunda parte de la lista de comandos para la terminal de GNU/Linux basicos. Si quieres ver los comandos de la entrada anterior por favor [entra en la primera parte aquí](https://coffeebytes.dev/comandos-de-gnu-linux-que-deberias-conocer/).

Vamos a empezar con el comando uname, para situarnos un poco en el contexto del sistema operativo con el que estamos trabajando.

## uname

Este comando nos muestra información relativa al sistema, es usado frecuentemente para mostrar toda la información agregando la opción '_\-a_' al final de comando.

```bash
uname 
# Linux
uname -a
# Linux kino 4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19) x86_64 GNU/Linux
```

## who

El comando who, sí, como "the who", nos muestra las personas que están conectadas al momento de ejecutarlo.

```bash
who 
# usuario  tty2         2019-04-29 08:07 (:0)
```

## whoami

El comando whoami nos dice quien es el usuario actual de la sesión

```bash
whoami 
# usuario
```

## id

El comando id nos muestra información relativa a nuestro usuario, su identificador de usuario (uid), su identificador de grupo(gid) y los grupos a los que pertenece.

```bash
id 
# uid=1000(eduardo) gid=1000(eduardo) grupos=1000(eduardo),7(lp),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(netdev),113(bluetooth),117(scanner),999(docker)
```

## passwd

Con este comando, al cual parece que se les olvidó la letra "o" y la "r", podemos cambiar nuestra contraseña para acceder al sistema. Una vez ejecutado el comando, este nos pedirá ingresar la contraseña actual para poder cambiar a una nueva.

```bash
passwd 
# Cambiando la contraseña de usuario.
#(actual) contraseña de UNIX: 
```

## du

Que proviene de las siglas de "_Disk Usage_", nos muestra el espacio que ocupan los directorios y subdirectorios desde donde estamos ejecutando el comando en kilobytes. Puede usarse también para conocer el tamaño de los archivos utilizando la opción '-_a_' al final del archivo, así como usar kilobytes, megabytes. La opción '_\-h_' decide si mostrarnos kb, mb o gb en función del tamaño, de esta manera se obtiene una medida más amigable con los humanos.

```bash
du 
# nuestra todos los directorios y su tamaño en kb
# 668	./carpeta1
# 3065936	./carpeta1/subarpeta1
# 28080	./carpeta2/subcarpeta1/subsubcarpeta1
du -a
# nos muestra tambien los archivos
# 4 archivo1
# 40 archivo2
# 668	./carpeta1
# 3065936	./carpeta1/subarpeta1
# 28080	./carpeta2/subcarpeta1/subsubcarpeta1
du -m -a 
# lo mismo que el anterior pero en megabytes
# 1 archivo1
# 1 archivo2
# 1	./carpeta1
# 2995	./carpeta1/subarpeta1
# 28	./carpeta2/subcarpeta1/subsubcarpeta1
du -a -h
# la h es de humano
# 4.0K archivo1
# 40K archivo2
# 668K	./carpeta1
# 2.9G	./carpeta1/subarpeta1
# 28M	./carpeta2/subcarpeta1/subsubcarpeta1
```

## df

Nos muestra el tamaño, el espacio ocupado y el espacio disponible del sistema de ficheros en bloques de 1kb y, al igual que el comando anterior, también tiene disponible la opción '-h', para que muestre la información de una manera más amigable para los humanos.

```bash
df -h
# S.ficheros     Tamaño Usados  Disp Uso% Montado en
# udev             3.9G      0  3.9G   0% /dev
# tmpfs            793M   9.5M  783M   2% /run
#/dev/sda4        235G    65G  158G  29% /
# tmpfs            3.9G    55M  3.9G   2% /dev/shm
# tmpfs            5.0M   4.0K  5.0M   1% /run/lock
# tmpfs            3.9G      0  3.9G   0% /sys/fs/cgroup
# tmpfs            793M    16K  793M   1% /run/user/115
# tmpfs            793M    48K  793M   1% /run/user/1000
```

## free

Nos muestra la cantidad, en kilobytes, de memoria libre y ocupada en el sistema y en la memoria swap. Si queremos una lectura más amigable podemos usar la opción '-h'

```bash
free 
# total        used        free      shared  buff/cache   available
# Mem:        8111072     4937452      736592      263560     2437028     2605744
# Swap:      11717628           0    11717628
free -h
# total        used        free      shared  buff/cache   available
# Mem:           7.7G        4.7G        762M        246M        2.3G        2.5G
# Swap:           11G          0B         11G
```

## su

Hay comandos que no podemos usar si no tenemos los permisos adecuados. El super usuario es aquel usuario que tiene acceso sin restricciones al sistema. Este comando, tras una verificación por contraseña, te permite acceder como super usuario al sistema.

```bash
su 
# Contraseña:
```

Si pasamos la verificación nuestro prompt cambiará y nos mostrará una almohadilla al final '#'. 

```bash
root@nombre-de-tu-maquina:~#
```

**No cierres tu terminal aún, necesitamos quedarnos en modo super usuario para ejecutar los siguientes comandos.**

## useradd

Nos permite agregar un usuario. **Solo disponible para super usuario.**

```bash
useradd nombre_de_usuario
```

Si usamos la opción _\-m_ creará un directorio en _/home_ con el nombre del usuario y los permisos necesarios

```bash
useradd -m nombre_de_usuario
```

## usermod

El comando usermod nos permite modificar la cuenta de un usuario y tiene muchas funciones, entre las que se incluyen:

- Agregar un usuario a un grupo
- Deshabilitar cuentas tras un periodo de tiempo de inactividad
- Modificar el directorio de inicio de sesión de un usuario
- Cambiar el nombre de un usuario
- Mover el directorio home de un usuario a otra localización

Con el comando de abajo usaremos la opción _\-a_ para agregar a uno o varios grupos al usuario llamado usuario. Podemos agregar más grupos separándolos por una coma.

```bash
usermod -a -G grupo usuario
```

Con la opción _\-e_ podemos establecer una fecha de caducidad a una cuenta de usuario. El formato de la feche debe ser YYYY-MM-DD.

```bash
usermod -e 2099-11-11 usuario
```

## userdel

Este comando nos permite eliminar un usuario. **Solo disponible para super usuario.**

```bash
userdel nombre_de_usuario
```

## fdisk

El comando fdisk sirve para mostrar las tablas o particiones del sistema, solo podrá ejecutarse como super usuario. Si lo ejecutas sin argumentos mostrará la página de ayuda del comando. Es usado generalmente con la opción '_\-l_' para listar y ver detalles de las particiones y tablas del sistema. **Solo disponible para super usuario.**

```bash
fdisk
# Modo de empleo:
# fdisk [opciones]      cambia tabla de particiones
# fdisk [opciones] -l [] muestra tabla(s) de particiones
#
# Muestra o manipula una tabla de particiones de disco.
fdisk -l
# Disco /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectores
# Unidades: sectores de 1 * 512 = 512 bytes
# Tamaño de sector (lógico/físico): 512 bytes / 4096 bytes
# Tamaño de E/S (mínimo/óptimo): 4096 bytes / 4096 bytes
# Tipo de etiqueta de disco: dos
# Identificador del disco: 0x325cbe04
#
# Disposit.  Inicio   Comienzo      Final   Sectores Tamaño Id Tipo
#/dev/sda1  *            2048    1026047    1024000   500M  7 HPFS/NTFS/exFAT
#/dev/sda2            1026048 1429233663 1428207616   681G  7 HPFS/NTFS/exFAT
#/dev/sda3         1429235710 1452670975   23435266  11.2G  5 Extendida
#/dev/sda4         1452670976 1953523711  500852736 238.8G 83 Linux
#/dev/sda5         1429235712 1452670975   23435264  11.2G 82 Linux swap / Solaris
```

## apt-cache search

Este comando busca en los repositorios y nos muestra los paquetes que son relevantes para nuestra búsqueda. **Solo disponible para super usuario.**

```bash
apt-cache search chromium
# chrome-gnome-shell - GNOME Shell extensions integration for web browsers
# chromium - web browser
# chromium-driver - web browser - WebDriver support
# ...
```

## apt-cache policy

Con _apt-cache policy_ podremos ver la versión que tenemos instalada de un paquete y las versiones que se encuentran disponibles para instalar. **Solo disponible para super usuario.**

```bash
apt-cache policy chromium
# chromium:
# Instalados: 73.0.3683.75-1~deb9u1
# Candidato:  73.0.3683.75-1~deb9u1
# Tabla de versión:
# *** 73.0.3683.75-1~deb9u1 500
# 500 http://security.debian.org/debian-security stretch/updates/main amd64 Packages
# 100 /var/lib/dpkg/status
# 70.0.3538.110-1~deb9u1 500
# 500 http://ftp.us.debian.org/debian stretch/main amd64 Packages
# 500 http://http.debian.net/debian stretch/main amd64 Packages
```

## apt-cache show

Con apt-cache show podremos ver información sobre los paquetes que tenemos instalados, su versión, tamaño, las librerías de las que depende, sus tags y más. Solo disponible para super usuario.

```bash
apt-cache show python3
# Package: python3
# Source: python3-defaults
# Version: 3.5.3-1
# Installed-Size: 67
# Maintainer: Matthias Klose <doko@debian.org>
# Architecture: amd64
# Replaces: python3-minimal (<< 3.1.2-2)
# más información
```

## apt-get install

Ahora toca el turno de instalar otros paquetes que dotarán a nuestro sistema de diversas funcionalidades, desde bases de datos, lenguajes de programación, hasta interfaces gráficas completas o navegadores. Podemos usar este comando para instalar el paquete que deseemos siempre y cuando se encuentre disponible en nuestra lista de repositorios. **Solo disponible para super usuario.**

```bash
apt-get install recordmydesktop
#  Instalará el paquete recordmydesktop
```

Los sistemas operativos más nuevos traen su versión mejorada, sin el "-get", que viene con colores y mejoras.

```bash
apt install recordmydesktop
# Instalará el paquete recordmydesktop
```

## apt-get remove

Así como podemos añadir paquetes, también podemos removerlos de nuestro sistema. Este comando se encarga de eso. **Solo disponible para super usuario.**

```bash
apt-get remove recordmydesktop
# Este comando se encarga de remover el paquete de recordmydesktop del sistema
```

Los sistemas operativos más nuevos traen su versión mejorada, sin el "-get", que viene con colores y mejoras.

```bash
apt remove recordmydesktop
# Este comando se encarga de remover el paquete de recordmydesktop del sistema
```

## exit

exit, ejecutado en modo super usuario, nos devuelve el prompt a la normalidad y termina nuestros privilegios como super usuario.

```bash
exit 
```

Nuestro prompt normal

```bash
usuario@nombre-de-tu-maquina:~$
```

Si ejecutamos _exit_ nuevamente, esta vez en nuestro usuario de sistema, se cerrará la terminal.

## whereis

El comando nos muestra donde se encuentran los binarios, código fuente y manuales del comando que le solicitemos.

```bash
whereis node
# node: /home/usuario/.nvm/versions/node/v11.9.0/bin/node
```

## which

Parecido al anterior, pero con una diferencia: este nos muestra donde se ejecutaría el comando en el **entorno actual.**

Si desconoces que es un entorno virtual te invito a leer [mi entrada donde explico los entornos virtuales.](https://coffeebytes.dev/por-que-usar-un-entorno-virtual-en-python/)

En cambio, si no estamos usando entornos virtuales mostrará el mismo resultado que el anterior.

```bash
which python3
# usr/bin/python3
```

Si activamos un entorno virtual nos cambiará la localización del comando en el entorno virtual.

```bash
source virtual/bin/activate
# activemos un entorno virtual para ver que sucede
which python3
#/home/usuario/proyecto/entorno_virtual/bin/python3
```

## uptime

El comando uptime nos dice la hora actual, el tiempo que el sistema operativo lleva corriendo, la cantidad de usuarios están conectados y la carga promedio del sistema hace un minuto, 5 minutos y 15 minutos.

```bash
uptime 14:15:10 up  6:08,  1 user,  load average: 0.87, 0.87, 0.93
```

## last

Este comando se encarga de mostrarnos los últimos logins en el sistema.

```bash
last
# usuario  tty2         :0               Mon Apr 29 12:24   still logged in
# reboot   system boot  4.9.0-12-amd64   Mon Apr 29 07:22   still running
# usuario  tty2         :0               Sun Apr 29 11:27 - down   (13:33)
# reboot   system boot  4.9.0-12-amd64   Sun Apr 28 06:26 - 01:01  (18:34)
# usuario  tty2         :0               Sat Apr 27 22:42 - down   (02:07)
```

## w

Este comando de una letra nos muestra los usuarios que están loggeados actualmente en el sistema

```bash
w
# 13:48:46 up  1:25,  1 user,  load average: 0.73, 0.83, 1.09
# USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
# usuario  tty2     :0               12:24    1:25m  1:20m  7.69s /opt/firefox/firefox-bin -contentproc -childID 23 -isForBrowser -prefsLen 9788 -prefMapSize 224870 -parentBuildID 20200708170
```

## last reboot

Last reboot nos muestra el historial de reinicios de nuestro sistema

```bash
last reboot
# reboot   system boot  4.9.0-12-amd64   Sat Apr 27 07:22   still running
# reboot   system boot  4.9.0-12-amd64   Fri Apr 26 06:26 - 01:01  (18:34)
```

## Comando bonus: neofetch

Ahora que sabes como instalar paquetes voy a mostrarte un paquete que muestra información del sistema pero de una manera bastante visual, el nombre del paquete es [neofetch](https://github.com/dylanaraps/neofetch).

```bash
sudo apt-get install neofetch
```

Ahora ejecuta neofetch con privilegios de super usuario y mira por ti mismo lo que se imprime en la terminal.

```bash
sudo neofetch
```

## Más comandos básicos para la terminal de linux

Otra entrada y muchos más comandos revisados, faltan algunos comandos para cubrir solo una pequeña parte, toma tu tiempo, no hay prisa, levántate de la silla y ve a tomar agua o café. La tercera parte es la última e incluyo más comandos, algunos de ellos un poquito más complicados. [entra en este enlace para seguir aprendiendo.](https://coffeebytes.dev/comandos-de-gnu-linux-que-deberias-conocer-tercera-parte/)