Linux Shell o La Terminal

La terminal es un simple programa, toma los comandos introducidos por el usuario y se los entrega al sistema operativo para ser procesados. Una vez terminado el proceso la terminal muestra el resultado de los comandos, es decir esta es el puente principal entre el sistema y el usuario.

La mayoría de distribuciones vienen con una ‘GUI (Graphical User Interface o Interfaz Gráfica del Usuario)’, pero todas vienen con la ‘CLI (Command Line Interface o Interfaz de Línea de Comandos)’, veremos la diferencia entre GUI y CLI en posts siguientes, por ahora vamos a ver algunos comandos básicos y sus resultados.

Comandos básicos

Algo que tenemos que recalcar antes de usar la terminal, es que a diferencia de windows, linux es un sistema que diferenciá entre MAYÚSCULAS y minúsculas, es decir no es lo mismo Comando que comando o coMando, si el algún momento estamos teniendo problemas tenemos que revisar que estamos escribiendo bien. Como tip la gran mayoría de comandos en linux se escriben en minúsculas.

1. pwd

Al iniciar la terminal, se abrirá dentro del directorio del usuario actual (Veremos el sistema de archivos en el siguiente post). Si queremos saber en ¿qué directorio nos encontramos?, utilizaremos el comando pwd

user@hostname:~$ pwd
/home/user

La figura de arriba se explica sola, primero tenemos el Nombre del equipo o Hostname y el Usuario que está utilizando el sistema actual la tilde ~ nos indica que nos encontramos dentro del directorio del usuario.

2. ls

El comando ls o List Directory nos muestra que carpetas y archivos se encuentran dentro del directorio actual.

user@hostname:~$ ls
Desktop Documents Downloads Music Pictures Templates Videos

Comandos como ls tienen lo que se llaman flags o banderas, estas modifican el resultado del comando, veamos unos ejemplos:

user@hostname:~$ la -l
drwxr-xr-x  2 user user  4096 Jun 17 08:48  Desktop
drwxr-xr-x  3 user user  4096 Jul 15 14:57  Documents
drwxr-xr-x 11 user user  4096 Aug  3 15:10  Downloads
drwxr-xr-x  2 user user  4096 Jun 17 08:48  Music
drwxr-xr-x  4 user user  4096 Aug  3 11:42  Pictures
drwxr-xr-x  2 user user  4096 Jun 17 08:48  Templates
drwxr-xr-x  3 user user  4096 Aug  1 19:22  Videos

El flag -l lista el contenido del directorio en un formato largo con columnas que incluye:

  • Permisos del contenido
  • Número de elementos contenidos dentro del elemento
  • Propietario del contenido
  • Grupo Propietario del contenido
  • Tamaño del contenido en Bytes
  • Última fecha de modificación

Existen varios flags para el comando ls, aquí listaré las más comunes:

  • -a Muestra los archivos ocultos dentro del directorio
  • -d Sólo muestra directorios excluyendo los archivos
  • -R Muestra el Directorio y todo su contenido

Es importante saber que varios flags pueden utilizarse al mismo tiempo, siendo algo como ls -la un comando válido. Este comando nos mostrará el formato largo incluyendo los archivos ocultos del directorio actual.

user@hostname:~$ ls -la
drwxr-xr-x  2 user user  4096 Jun 17 08:48  Desktop
drwxr-xr-x  3 user user  4096 Jul 15 14:57  Documents
drwxr-xr-x 11 user user  4096 Aug  3 15:10  Downloads
drwxr-xr-x  2 user user  4096 Jun 17 08:48  Music
drwxr-xr-x  4 user user  4096 Aug  3 11:42  Pictures
drwxr-xr-x  2 user user  4096 Jun 17 08:48  Templates
drwxr-xr-x  3 user user  4096 Aug  1 19:22  Videos
-rw-------  1 user user    56 Aug  3 14:10  .Xauthority
-rw-r--r--  1 user user   342 Aug  1 21:40  .Xdefaults
-rw-r--r--  1 user user   177 Aug  1 21:40  .xinitrc
-rw-r--r--  1 user user  3668 Aug  1 21:40  .zshrc

En linux los archivos ocultos empiezan siempre por un punto .archivo.

3. cd

Change Directory o cd es el comando que utilizamos para cambiar de directorio, por ejemplo si estamos en el directorio home y queremos ir al directorio Downloads hacemos lo siguiente:

user@hostname:~$ cd Downloads
user@hostname:~/Downloads$

Para subir un directorio podemos hacer:

user@hostname:~/Downloads$ cd ..
user@hostname:~$

4. mkdir

Make Directory o mkdir sirve para crear un directorio, digamos que queremos crear un nuevo directorio que se llame prueba, simplemente hacemos lo siguiente:

user@hostname:~$ mkdir prueba
user@hostname:~$ ls
Desktop Documents Downloads Music Pictures prueba Templates Videos

El comando mkdir no nos da un resultado per se, pero con el comando ls podemos ver que ahora existe un directorio llamado prueba.

5. rmdir

Remove Directory o rmdir como su nombre lo dice este borra el directorio que deseamos, sin embargo rmdir sólo borrará un directorio vacío, si queremos borrar un directorio que contiene elementos dentro debemos utilizar el flag -r o Recursive para que borre el directorio y su contenido rmdir -r

user@hostname:~$ rmdir prueba
rmdir: failed to remove 'prueba': Directory not empty
user@hostname:~$ rmdir -r prueba
user@hostname:~$ ls
Desktop Documents Downloads Music Pictures Templates Videos

6. touch

El comando touch se utiliza para crear archivos, este archivo creado puede ser lo que sea. Puedes crear un archivo de texto o un archivo zip con el mismo comando.

user@hostname:~$ touch prueba.txt
user@hostname:~$ ls
prueba.txt
user@hostname:~$

7. man

Cada comando tiene un manual de uso, para eso nos sirve man, este comando va seguido del comando sobre el cual queremos saber, por ejemplo:

user@hostname:~$ man touch
TOUCH(1)              User Commands             TOUCH(1)

NAME
       touch - change file timestamps

SYNOPSIS
       touch [OPTION]... FILE...

DESCRIPTION
       Update  the access and modification times of each
       FILE to the current time.

       A FILE argument that does not  exist  is  created
       empty, unless -c or -h is supplied.

       A  FILE argument string of - is handled specially
       and causes touch to change the times of the  file
       associated with standard output.

       Mandatory arguments to long options are mandatory
       for short options too.

       -a     change only the access time

       -c, --no-create
              do not create any files

       -d, --date=STRING
              parse STRING and use it instead of current
              time

       -f     (ignored)

       -h, --no-dereference
              affect  each  symbolic link instead of any
              referenced file (useful  only  on  systems
              that  can  change the timestamps of a sym‐
              link)

       -m     change only the modification time

       -r, --reference=FILE
              use this files times instead  of  current time
       -t STAMP
              use  [[CC]YY]MMDDhhmm[.ss] instead of cur‐
              rent time
       --time=WORD
              change the specified time: WORD is access,
              atime,  or  use:  equivalent to -a WORD is
              modify or mtime: equivalent to -m
       --help display this help and exit
       --version
              output version information and exit
       Note that the -d and -t options accept  different
       time-date formats.

DATE STRING
       The  --date=STRING  is a mostly free format human
       readable date string such as "Sun,  29  Feb  2004
       16:21:42  -0800" or "2004-02-29 16:21:42" or even
       "next Thursday".  A date string may contain items
       indicating calendar date, time of day, time zone,
       day of week, relative time,  relative  date,  and
       numbers.  An empty string indicates the beginning
       of the day.  The date string format is more  com‐
       plex  than is easily documented here but is fully
       described in the info documentation.

AUTHOR
       Written by Paul Rubin, Arnold Robbins, Jim  King‐
       don, David MacKenzie, and Randy Smith.

REPORTING BUGS
       GNU         coreutils         online        help:
       <https://www.gnu.org/software/coreutils/>
       Report any translation bugs to  <https://transla‐
       tionproject.org/team/>
      COPYRIGHT
       Copyright  ©  2020 Free Software Foundation, Inc.
       License  GPLv3+:  GNU  GPL  version  3  or  later
       <https://gnu.org/licenses/gpl.html>.
       This is free software: you are free to change and
       redistribute it.  There is NO  WARRANTY,  to  the
       extent permitted by law.

SEE ALSO
       Full   documentation   <https://www.gnu.org/soft‐
       ware/coreutils/touch>
       or available locally via: info (coreutils) touch
       invocation

8. mv

El comando mv o Move File, sirve para mover archivos dentro de los directorios, también nos sirve para renombrar archivos, veamos un ejemplo:

user@hostname:~$ mv prueba.txt ~/Downloads
user@hostname:~$ ls ~/Downloads
prueba.txt
user@hostname:~$ cd Downloads
user@hostname:~/Downloads$ mv prueba.txt nuevaprueba.txt
user@hostname:~/Downloads$ ls
nuevaprueba.txt
user@hostname:~/Downloads$

9. sudo

SuperUserDo o sudo, este comando se utiliza cuando una operación requiere privilegios o acceso a permisos administrativos, por ejemplo la actualización del sistema es algo que un usuario común no puede hacer y necesita permisos administrativos.

user@hostname:~$ pacman -Syu
error: you cannot perform this operation unless you are root.

Como podemos ver el usuario actual no puede actualizar el sistema, en ese caso utilizamos sudo.

user@hostname:~/Downloads$ sudo pacman -Syu
:: Synchronizing package databases...
 core is up to date
 extra                1569.1 KiB  1090 KiB/s 00:01 100%
 community               5.6 MiB  1355 KiB/s 00:04 100%
 multilib is up to date
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...

Packages (2) libinput-1.18.1-1  re2-1:20210801-1

Total Download Size:   0.45 MiB
Total Installed Size:  1.76 MiB
Net Upgrade Size:      0.01 MiB

:: Proceed with installation? [Y/n]

Estos son algunos de los comandos básicos, que puedes utilizar en linux. Existen muchos, pero muchos más que iremos conociendo conforme vayamos avanzando en estos tutoriales, si quieres conocer toda la lista te la dejo aquí .

Hasta la próxima.