Sintaxis de comandos básicos(Gnu/Linux)

Section header image

Sintaxis de comandos básicos

Este módulo se ocupa exclusivamente de la CLI o interfaz de línea de comandos, en lugar de la GUI o interfaz gráfica de usuario con la que quizás esté más familiarizado. El terminal CLI es una poderosa herramienta y a menudo es el método principal utilizado para administrar dispositivos pequeños de bajo consumo, servidores de computación de gran capacidad en la nube, y mucho más. Una comprensión básica del terminal es esencial para diagnosticar y reparar la mayoría de los sistemas basados en Linux. Puesto que Linux se ha vuelto tan omnipresente, incluso aquellos que planean trabajar con sistemas que no utilizan el núcleo Linux pueden beneficiarse de tener una comprensión básica del terminal.

¿Qué es un comando? Un comando es un programa de software que, cuando se ejecuta en la CLI (interfaz de línea de comandos), realiza una acción en el ordenador. Cuando usted escribe un comando, el sistema operativo ejecuta un proceso para leer su entrada, manipular datos y producir resultados. Un comando ejecuta un proceso en el sistema operativo, que luego hace que el ordenador realice una tarea determinada.

Para ejecutar un comando, el primer paso es escribir el nombre del comando. Haga clic en el terminal de la derecha. Escriba ls (letras minúsculas) y pulse Enter. Obtendrá un resultado parecido al del siguiente ejemplo:

cox:~# ls
bin  dev  home  boot  opt root  srv var

Generalmente, el nombre del comando se basa en la tarea que hace o en lo que el programador que creó el comando cree que mejor describe la función del comando. Por ejemplo, el comando ls muestra una lista de información sobre archivos. Asociar el nombre del comando con algo mnemotécnico sobre lo que hace puede ayudarle a recordar los comandos más fácilmente.

A tener en cuenta

Generalmente, los comandos distinguen entre mayúsculas y minúsculas. Por ejemplo LS es incorrecto y generará un mensaje de error, pero ls es correcto y se ejecutará normalmente.

cox:~# LS
-bash: LS: command no found

La mayoría de los comandos siguen un patrón de sintaxis simple:

comando [opciones…] [argumentos…]

En otras palabras, escriba un comando, seguido de las opciones y/o argumentos antes de presionar la tecla Enter. Generalmente, las opciones (options) alteran el comportamiento del comando y los argumentos (arguments) son elementos o valores sobre los que debe actuar el comando. Aunque hay algunos comandos en Linux que no son completamente consistentes con estas normas de sintaxis, la mayoría de los comandos usan esta sintaxis o alguna similar.

En el ejemplo anterior, el comando ls se ejecutó sin opciones ni argumentos. Cuando este es el caso, su comportamiento predeterminado es el de devolver una lista de los archivos contenidos en el directorio actual.

cox:~# ls
bin  dev  home  boot  opt root  srv var

Argumentos

comando [opciones…] [argumentos…]

Un argumento (argument) se puede usar para especificar algo sobre lo que el comando debe actuar. Si al comando ls se le da el nombre de un directorio como argumento, obtendremos como resultado una lista del contenido de ese directorio. En el siguiente ejemplo, el directorio home se utilizará como argumento:

cox:~# ls home
El resultado es una lista de los archivos incluidos en el directorio home

Opciones

comando [opciones…] [argumentos…]

Las opciones (options) se pueden utilizar para modificar el comportamiento de un comando. En la página anterior, el comando ls se utilizó para enumerar el contenido de un directorio. En el ejemplo siguiente, la opción -l se agrega al comando ls para obtener un resultado de “pantalla larga”, y proporcionar más información sobre cada uno de los archivos enumerados:

cox:~# ls home -l
total 44
Que sucede...

Tenga en cuenta que, en el comando anterior, -l es la letra “L” minúscula.

A menudo, el carácter elegido para el comando es mnemotécnico de su propósito en inglés. Por ejemplo, la letra l para indicar largo (long) o r para invertir (reverse en inglés). De forma predeterminada, el comando ls imprime los resultados en orden alfabético, al agregar la opción -r se imprimirán los resultados en orden alfabético inverso.

cox:~# ls home -l -r
total 44
Que sucede... 

Se pueden usar varias opciones a la vez, ya sea como opciones separadas como en -l -r o combinadas como -lr . El resultado de los siguientes ejemplos sería el mismo:

ls -l -r
ls -rl
ls -lr

Como se ha explicado anteriormente, -l proporciona un formato de listado largo y -r invierte el listado. El resultado de usar ambas opciones será un listado largo en orden alfabético inverso.

Ejecute y comente que sucede.

Los comandos pueden utilizar muchas combinaciones de opciones y argumentos. Las posibilidades para cada comando serán únicas.

Section header image

Imprimir el directorio de trabajo

Para descubrir dónde se encuentra actualmente dentro del sistema de archivos, puede utilizar el comando pwd. El comando pwd imprime el directorio de trabajo (print working directory), su ubicación actual dentro del sistema de archivos:

pwd [OPCIONES]

A tener en cuenta

¡No encienda su impresora todavía! En los inicios de la computación, el resultado de un comando se enviaba directamente a impresoras físicas. Este método ha sido reemplazado por pantallas de vídeo que muestran información más rápidamente. Aún así, actualmente seguimos utilizando la palabra imprimir (print) aunque el resultado se esté mostrando en una pantalla.

cox:~# pwd
/

El resultado del comando anterior indica que el usuario está actualmente en su carpeta de inicio, tal y como muestra el sistema de archivos siguiente.

Sistema de archivos que muestra el directorio root en la parte superior y los directorios debajo, incluido el directorio de inicio. Debajo del directorio de inicio hay un directorio sysadmin resaltado y los directorios dentro de sysadmin (es decir, Documents) que se muestran a continuación.

Section header image

Cambio de Directorios

Los archivos se utilizan para almacenar datos como texto, gráficos y programas. Los directorios son un tipo de archivo utilizado para almacenar otros archivos: proporcionan una estructura organizativa jerárquica. 

 
 

Utilice el comando cd (change directory) para cambiar de directorio y navegar por la estructura del sistema de archivos.

cd [opciones] [ruta]

Los directorios son equivalentes a las carpetas en Windows y Mac OS. Al igual que estos sistemas operativos más populares, una estructura de directorios Linux también tiene un nivel superior. No se llama “Mi PC”, sino directorio raíz (root) y está representado por el carácter /. Para desplazarse al directorio root, utilice el carácter / como argumento del comando cd.

cox:~# cd /

Imagine que el sistema de archivos es un mapa, las rutas son las instrucciones que indican paso a paso la ubicación de cualquier archivo dentro del sistema de archivos. Hay dos tipos de rutas: absolutas y relativas. Las rutas absolutas comienzan en la raíz del sistema de archivos, las rutas relativas comienzan en su ubicación actual.

Rutas absolutas

Una ruta absoluta le permite especificar la ubicación exacta de un directorio. Siempre comienza en el directorio root, por lo tanto siempre comienza con el carácter /. La ruta al directorio de inicio (home/home es una ruta absoluta. La ruta comienza en el directorio root /, se mueve al directorio de inicio home . Esta ruta en una interfaz gráfica de usuario (GUI) como la de su ordenador personal aparecería así:

Utilice esta ruta como argumento para el comando cd para volver al directorio principal del usuario. 

cox:/# cd 

Que no aparezca un resultado en la línea de comandos significa que el comando se ha ejecutado correctamente. Continúe y confirme que es así usando el comando pwd:

cox:~# pwd                                                       
/root

Rutas relativas

Una ruta relativa ubica un archivo en relación con la ubicación actual del usuario en el sistema de archivos. Las rutas relativas no comienzan con el carácter /, comienzan con el nombre de un directorio. Eche otro vistazo al primer ejemplo de comando cd. En este caso, el argumento es un ejemplo de la ruta relativa más simple: el nombre de un directorio en su ubicación actual.

cox:~# cd Desktop                                             
cox:~/Desktop #
 

Una ruta relativa comienza con el directorio actual, sin embargo, éste no se incluye en la ruta. 

Accesos Directos o Atajos

Dos puntos ..

Independientemente del directorio en el que se encuentre, el carácter .. siempre representa un directorio superior en relación al directorio actual, a veces denominado directorio padre.

Un punto .

Independientemente del directorio en el que se encuentre, el carácter . siempre representa su directorio actual. Para el comando cd, este atajo no es muy útil, pero será útil para los comandos que estudiaremos en las secciones siguientes.

El símbolo ~

El directorio principal del usuario actual está representado por el carácter ~ . 

sysadmin@localhost:~/Documents/School$ cd ~
sysadmin@localhost:~$

 

Section header image

Listados de archivos

El comando ls se utiliza para enumerar el contenido de un directorio. Ha visto cómo se utiliza en varios ejemplos anteriores. La siguiente lectura le ayudará a sentirse más cómodo con su uso.

ls [OPCIONES] [ARCHIVO]

De forma predeterminada, el comando ls usado sin opciones o argumentos mostrará los archivos contenidos en el directorio actual como lo vimos anteriormente.

Para obtener información detallada sobre los archivos, como el tipo de archivo, los permisos, las propiedades o el sello horario, ejecute una lista larga utilizando la opción -l con el comando ls. En el ejemplo siguiente, se utiliza una lista del directorio /var/log, ya que proporciona una variedad de resultados:

sysadmin@localhost:~$ ls -l /var/log/
total 844                                                                       
-rw-r--r-- 1 root   root  18047 Dec 20  2017 alternatives.log                   
drwxr-x--- 2 root   adm    4096 Dec 20  2017 apache2                            
drwxr-xr-x 1 root   root   4096 Dec 20  2017 apt                                
-rw-r----- 1 syslog adm    1346 Oct  2 22:17 auth.log                           
-rw-r--r-- 1 root   root  47816 Dec  7  2017 bootstrap.log                      
-rw-rw---- 1 root   utmp      0 Dec  7  2017 btmp                               
-rw-r----- 1 syslog adm     547 Oct  2 22:17 cron.log                           
-rw-r----- 1 root   adm   85083 Dec 20  2017 dmesg                              
-rw-r--r-- 1 root   root 325238 Dec 20  2017 dpkg.log                           
-rw-r--r-- 1 root   root  32064 Dec 20  2017 faillog                            
drwxr-xr-x 2 root   root   4096 Dec  7  2017 fsck                               
-rw-r----- 1 syslog adm     106 Oct  2 19:57 kern.log                           
-rw-rw-r-- 1 root   utmp 292584 Oct  2 19:57 lastlog                            
-rw-r----- 1 syslog adm   19573 Oct  2 22:57 syslog                             
drwxr-xr-x 2 root   root   4096 Apr 11  2014 upstart                            
-rw-rw-r-- 1 root   utmp    384 Oct  2 19:57 wtmp 

Cada línea corresponde a un archivo contenido en el directorio. La información sobre cada archivo se puede dividir en campos separados por espacios. Los campos son los siguientes:

  1. Tipo de archivo

    -rw-r--r-- 1 root   root  18047 Dec 20  2017 alternatives.log       
                
    drwxr-x--- 2 root   adm    4096 Dec 20  2017 apache2  
    

    El primer campo contiene en realidad diez caracteres. El primer carácter indica el tipo de archivo y los nueve siguientes especifican permisos. Los tipos de archivo son:

    Símbolo Tipo de archivo Descripción
    d directorio Un archivo usado para contener otros archivos.
    - archivo ordinario Incluye archivos leíbles, imágenes, archivos binarios, y archivos comprimidos.
    l enlaces simbólicos Apunta a otro archivo.
    s socket Permite la comunicación entre procesos.
    p tubería (pipe) Permite la comunicación entre procesos.
    b archivo bloque Usado para comunicaciones con el equipo (hardware).
    c archivo carácter Usado para comunicaciones con el equipo (hardware).

    El primer archivo alternatives.log es un archivo normal -, mientras que el segundo archivo apache2 es un directorio d.

  2. Permisos

    drwxr-xr-x 2 root   root   4096 Apr 11  2014 upstart

    Los permisos indican cómo determinados usuarios pueden acceder a un archivo. Siga leyendo para obtener más información sobre los permisos.

  3. Número de enlaces directos

    -rw-r----- 1 syslog adm    1346 Oct  2 22:17 auth.log

    Este número indica cuántos enlaces directos apuntan a este archivo. Los enlaces directos están fuera del alcance de este módulo.

  4. Propietario del archivo

    -rw-r----- 1 syslog adm     106 Oct  2 19:57 kern.log

    El usuario syslog posee este archivo. Cada vez que se crea un archivo, la propiedad se asigna automáticamente al usuario que lo creó.

  5. Grupo propietario del archivo

    -rw-rw-r-- 1 root   utmp 292584 Oct  2 19:57 lastlog

    Indica qué grupo posee este archivo.

  6. Tamaño del archivo

    -rw-r----- 1 syslog adm   19573 Oct  2 22:57 syslog

    Los directorios y archivos más grandes pueden mostrarse en kilobytes ya que mostrar su tamaño en bytes resultaría en un número demasiado grande. Por lo tanto, en el caso de un directorio, este número podría ser un múltiplo del tamaño de bloque utilizado por el sistema de archivos. El tamaño de bloque es el tamaño de una serie de datos almacenados en el sistema de archivos.

  7. Sello horario o de tiempo

    drwxr-xr-x 2 root   root   4096 Dec  7  2017 fsck

    Indica la fecha y hora en que el contenido del archivo se modificó por última vez.

  8. Nombre del archivo

    -rw-r--r-- 1 root   root  47816 Dec  7  2017 bootstrap.log

    El campo final contiene el nombre del archivo o directorio.

  9. A tener en cuenta

    En el caso de enlaces simbólicos, un archivo que apunta a otro archivo, el nombre del enlace se mostrará junto a una flecha y el nombre de la ruta del archivo original.

    lrwxrwxrwx. 1 root root 22 Nov 6 2012 /etc/grub.conf -> ../boot/grub/grub.conf

    Ordenar archivos

Por defecto, el resultado del comando ls está ordenado alfabéticamente según el nombre del archivo. Pero también se puede ordenar usando otros método.

Siga leyendo

Las opciones en los siguientes ejemplos se combinarán con la opción -l para mostrar los detalles relevantes de cada archivo. Preste atención a los campos correspondientes a la opción de búsqueda.

La opción -t ordenará los archivos por su sello de tiempo (timestamp):

sysadmin@localhost:~$ ls -lt /var/log                                           
total 844                                                                       
-rw-r----- 1 syslog adm   19573 Oct  2 22:57 syslog                             
-rw-r----- 1 syslog adm    1346 Oct  2 22:17 auth.log                           
-rw-r----- 1 syslog adm     547 Oct  2 22:17 cron.log                           
-rw-rw-r-- 1 root   utmp 292584 Oct  2 19:57 lastlog                            
-rw-rw-r-- 1 root   utmp    384 Oct  2 19:57 wtmp                               
-rw-r----- 1 syslog adm     106 Oct  2 19:57 kern.log                           
-rw-r--r-- 1 root   root  18047 Dec 20  2017 alternatives.log                   
-rw-r--r-- 1 root   root  32064 Dec 20  2017 faillog                            
-rw-r----- 1 root   adm   85083 Dec 20  2017 dmesg                              
-rw-r--r-- 1 root   root 325238 Dec 20  2017 dpkg.log                           
drwxr-x--- 2 root   adm    4096 Dec 20  2017 apache2                            
drwxr-xr-x 1 root   root   4096 Dec 20  2017 apt                                
-rw-r--r-- 1 root   root  47816 Dec  7  2017 bootstrap.log                      
drwxr-xr-x 2 root   root   4096 Dec  7  2017 fsck                               
-rw-rw---- 1 root   utmp      0 Dec  7  2017 btmp                               
drwxr-xr-x 2 root   root   4096 Apr 11  2014 upstart              

La opción -S (size) ordenará los archivos por tamaño de archivo:

sysadmin@localhost:~$ ls -l -S /var/log                                         
total 844                                                                       
-rw-r--r-- 1 root   root 325238 Dec 20  2017 dpkg.log                           
-rw-rw-r-- 1 root   utmp 292584 Oct  2 19:57 lastlog                            
-rw-r----- 1 root   adm   85083 Dec 20  2017 dmesg                              
-rw-r--r-- 1 root   root  47816 Dec  7  2017 bootstrap.log                      
-rw-r--r-- 1 root   root  32064 Dec 20  2017 faillog                            
-rw-r----- 1 syslog adm   19573 Oct  2 22:57 syslog                             
-rw-r--r-- 1 root   root  18047 Dec 20  2017 alternatives.log                   
drwxr-x--- 2 root   adm    4096 Dec 20  2017 apache2                            
drwxr-xr-x 1 root   root   4096 Dec 20  2017 apt                                
drwxr-xr-x 2 root   root   4096 Dec  7  2017 fsck                               
drwxr-xr-x 2 root   root   4096 Apr 11  2014 upstart                            
-rw-r----- 1 syslog adm    1346 Oct  2 22:17 auth.log                           
-rw-r----- 1 syslog adm     547 Oct  2 22:17 cron.log                           
-rw-rw-r-- 1 root   utmp    384 Oct  2 19:57 wtmp                               
-rw-r----- 1 syslog adm     106 Oct  2 19:57 kern.log                           
-rw-rw---- 1 root   utmp      0 Dec  7  2017 btmp

La opción -r (reverse) invertirá el orden de cualquier tipo de ordenación. Observe la diferencia cuando se agrega al ejemplo anterior:

sysadmin@localhost:~$ ls -lSr /var/log
total 844                                                                       
-rw-rw---- 1 root   utmp      0 Dec  7  2017 btmp                               
-rw-r----- 1 syslog adm     106 Oct  2 19:57 kern.log                           
-rw-rw-r-- 1 root   utmp    384 Oct  2 19:57 wtmp                               
-rw-r----- 1 syslog adm     654 Oct  2 23:17 cron.log                           
-rw-r----- 1 syslog adm    1669 Oct  2 23:17 auth.log                           
drwxr-xr-x 2 root   root   4096 Apr 11  2014 upstart                            
drwxr-xr-x 2 root   root   4096 Dec  7  2017 fsck                               
drwxr-xr-x 1 root   root   4096 Dec 20  2017 apt                                
drwxr-x--- 2 root   adm    4096 Dec 20  2017 apache2                            
-rw-r--r-- 1 root   root  18047 Dec 20  2017 alternatives.log                   
-rw-r----- 1 syslog adm   19680 Oct  2 23:17 syslog                             
-rw-r--r-- 1 root   root  32064 Dec 20  2017 faillog                            
-rw-r--r-- 1 root   root  47816 Dec  7  2017 bootstrap.log                      
-rw-r----- 1 root   adm   85083 Dec 20  2017 dmesg                              
-rw-rw-r-- 1 root   utmp 292584 Oct  2 19:57 lastlog                            
-rw-r--r-- 1 root   root 325238 Dec 20  2017 dpkg.log        

Los números en el campo del tamaño de archivo cambian de descendente a ascendente.

Utilizando solo la opción -r con la lista de los archivos en orden alfabético inverso:

sysadmin@localhost:~$ ls -r /var/log                                            
wtmp     lastlog   faillog   cron.log       auth.log  alternatives.log
upstart  kern.log  dpkg.log  btmp           apt
syslog   fsck      dmesg     bootstrap.log  apache2
Did you know you can find Linux in: Facebook, Amazon, Google, McDonald's, NASA, BMW, Tesla, Wikipedia, United States Postal Service, Tesla.

«¿Sabía que puede encontrar Linux en…?»