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...
-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.
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.
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.
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:~$
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:
-
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 archivoapache2
es un directoriod
. -
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.
-
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.
-
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ó. -
Grupo propietario del archivo
-rw-rw-r-- 1 root utmp 292584 Oct 2 19:57 lastlog
Indica qué grupo posee este archivo.
-
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.
-
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.
-
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.
-
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
«¿Sabía que puede encontrar Linux en…?»