CAPITULO 5
Ayuda en Linux
Las Páginas man
Las páginas man se utilizan para describir las características de los comandos. Te proporcionarán una descripción básica de la finalidad del comando, así como los detalles de las opciones del comando. Para ver una página man de un comando, ejecuta el man comando
en la ventana del terminal. Por ejemplo, el comando man cal
mostrará la página man para el comando cal
:
El comando man
utiliza un «localizador» para mostrar documentos. Este localizador es normalmente el comando less
, pero en algunas distribuciones puede ser el comando more
. Ambos son muy similares en cómo se ejecutan. Si quieres ver los diferentes comandos de movimiento que están disponibles, puedes introducir la letra h mientras visualizas una página man. Esto mostrará una página de ayuda.
more
como un localizador, su salida será diferente que el ejemplo que se muestra aquí.Si tu distribución usa el comando less
, podría estar un poco abrumado por la gran cantidad de «comandos» que están disponibles. La tabla siguiente proporciona un resumen de los comandos más útiles:
Comando | Función |
---|---|
Return (o Intro) | Bajar una línea |
Space (o Espacio) | Bajar una página |
/term (o /término | Buscar un término |
n | Buscar el siguiente elemento de la búsqueda |
1G | Ir a Inicio |
G | Ir a la final |
h | Mostrar ayuda |
q | Cerrar página man |
Las Secciones de la Página man
Las páginas man se dividen en secciones. Cada sección está diseñada para proporcionar información específica acerca de un comando. Si bien hay secciones comunes que verás en la mayoría de las páginas man, algunos desarrolladores también crean secciones que sólo verás en una página man específica. La siguiente tabla describe algunas de las secciones más comunes que encontrarás en las páginas del comando man
:
Nombre de la Sección | Propósito |
---|---|
NAME (Nombre) | Proporciona el nombre del comando y una breve descripción. NAME ls - list directory contents |
SYNOPSIS (Sinopsis) | Proporciona ejemplos de cómo se ejecuta el comando. Información detallada a continuación. SYNOPSIS ls [OPTION]... [FILE]... |
DESCRIPTION (Descripción) | Proporciona una descripción más detallada del comando. DESCRIPTION List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is speci- fied. |
OPTIONS (Opciones) | Muestra las opciones para el comando, así como una descripción de cómo se utilizan. A menudo esta información se encontrará en la sección -a, --all do not ignore entries starting with . -A, --almost-all do not list implied . and .. --author with -l, print the author of each file -b, --escape print C-style escapes for nongraphic characters --block-size=SIZE scale sizes by SIZE before printing them; e.g., '--block-size=M' prints sizes in units of 1,048,576 bytes; see SIZE format below |
FILES (Archivos) | Muestra las opciones para el comando, así como una descripción de cómo se utilizan. Estos archivos pueden utilizarse para configurar las características más avanzadas del comando. A menudo esta información se encontrará en la sección de DESCRIPTION y no en una sección separada de OPTIONS . |
AUTHOR (Autor) | El nombre de la persona que creó la página man y (a veces) la manera de contactar a la persona. AUTHOR Written by Richard M. Stallman and David MacKenzie. |
REPORTING BUGS (Reportando Errores) | Proporciona información sobre cómo reportar problemas con el comando. REPORTING BUGS GNU coreutils online help: <http://www.gnu.org/software/coreutils/> Report ls translation bugs to <http://translationproject.org/team/> |
COPYRIGHT (Derechos de Autor) | Proporciona información básica de los derechos de autor. COPYRIGHT Copyright (C) 2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://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 (Ver También) | Proporciona una idea de dónde puedes encontrar información adicional. También suele incluir otros comandos que están relacionados con este comando. SEE ALSO Full documentation at: <http://www.gnu.org/software/coreutils/ls> or available locally via: info '(coreutils) ls invocation' |
La sección SYNOPSIS de la Página man
La sección de SYNOPSIS (o «SINOPSIS» en español) de una página man puede ser difícil de entender, pero es muy importante porque proporciona un ejemplo conciso de cómo utilizar el comando. Por ejemplo, considera la SYNOPSIS de la página man para el comando cal
:
SYNOPSIS cal [-3hjy] [-A number] [-B number] [[[day] month] year]
Los corchetes [ ]
se utilizan para indicar que esta característica no es necesaria para ejecutar el comando. Por ejemplo, [-3hjy]
significa que puedes usar las opciones -h
, -j
, -y
, 1
o 3
, pero ninguna de estas opciones son necesarias para el correcto funcionamiento del comando cal
. El segundo conjunto de corchetes en la SYNOPSIS
del comandocal
([[[day] month] year]
) muestra otra característica. Esto significa que puedes especificar un año por sí mismo, pero si se especifica un mes también se debe especificar un año. Además, si especificas un día entonces también necesitarás especificar un mes y un año. Otro componente de SYNOPSIS que puede causar cierta confusión puede verse en SYNOPSIS del comando date:
SYNOPSIS date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
En estaSYNOPSIS
hay dos sintaxis para el comando date
. El primero de ellos se utiliza para mostrar la fecha en el sistema mientras que el segundo se utiliza para fijar la fecha. Las elipses siguientes a [OPTION]
, ...
, indican que uno o más ítems antes de la opción pueden usarse. Además, la notación [-u|--utc|--universal]
significa que puedes utilizar la opción -u
, la opción --utc
o la opción --universal
. Normalmente esto significa que las tres opciones hacen lo mismo, pero a veces este formato (uso del carácter |
) sirve para indicar que no se utilicen las opciones combinadas, tal como un operador lógico «o».
Buscando dentro de la Página man
Para buscar un término en la página man, pulsa /
e introduce el término seguido por la tecla Entrar. El programa buscará desde la ubicación actual hacia el final de la página para tratar de localizar y resaltar el término.
Si el término no se encuentra, o has llegado al final de las coincidencias, el programa reportará Pattern not found (press Return)
. Si se encuentra una coincidencia y quieres pasar al siguiente término, pulsa n. Para volver al término anterior pulsa N.
A veces los archivos de configuración también tienen sus páginas man. Estos contienen datos que se utilizan para almacenar información sobre el Sistema Operativo o servicios. Adicionalmente, existen varios tipos de comandos (comandos de usuario, comandos del sistema y comandos de administración), así como otras funciones que requieren documentación, como las librerías y los componentes del Kernel.
Como resultado, hay miles de páginas man en una distribución típica de Linux. Para organizar todas estas páginas, las páginas se clasifican por secciones, al igual que cada página man se divide en secciones. Por defecto, hay nueve secciones de las páginas man:
- Programas ejecutables o comandos del shell
- Llamadas del sistema (funciones proporcionados por el kernel)
- Llamadas de la librería (funciones dentro de las librerías de los programas)
- Archivos especiales (generalmente se encuentran en
/dev
) - Formatos de archivo y convenciones, por ejemplo
/etc/passwd
- Juegos
- Otros (incluyendo paquetes macro y convenciones), por ejemplo,
man(7)
,groff(7)
- Comandos de administración de sistema (generalmente sólo para el root)
- Rutinas del kernel [No estándar]
Cuando utilizas el comando man
, éste busca cada una de estas secciones por orden hasta que encuentra al primer «match». Por ejemplo, si ejecutas el comando man cal
, en la primera sección (programas ejecutables o comandos del shell) se buscará la página man llamada cal
. Si no lo encuentra, entonces se busca en la segunda sección. Si no se encuentra ninguna página man tras buscar en todas las secciones, recibirás un mensaje de error
Para determinar a qué sección pertenece una página man específica tienes que ver el valor numérico de la primera línea de la salida de la página man. Por ejemplo, si ejecutas el comando man cal
, verás que el comando cal
pertenece a la primera sección de las páginas man:
En algunos casos, necesitarás especificar la sección para visualizar la página man correcta. Esto es necesario porque a veces habrá páginas man con el mismo nombre en diferentes secciones.
Por ejemplo, hay un comando llamado passwd
que permite cambiar tu contraseña. También hay un archivo llamado passwd
que almacena la información de la cuenta. Ambos, el comando y el archivo tienen una página man.
El comando passwd
es un comando de «user» (o «usuario» en español), por lo que el comando man passwd
mostrará la página man para el comando passwd
por defecto:
PASSWD(1) User Commands PASSWD(1)
Para especificar una sección diferente, proporciona el número de la sección como el primer argumento del comando man
. Por ejemplo, el comando man 5 passwd
buscará la página man de passwd
sólo en la sección 5
:
PASSWD(5) File Formats and Conversions PASSWD(5)
A veces no es claro en qué sección se almacena una página man. En estos casos, puedes buscar una página man por nombre. La opción -f
para el comando man mostrará páginas que coinciden, o parcialmente coinciden, con un nombre específico y provee una breve descripción de cada página man.
Ten en cuenta que en la mayoría de las distribuciones de Linux, el comando whatis
hace lo mismo que el comando man -f
. En esas distribuciones, ambos comandos producen la misma salida.
Desafortunadamente, no siempre te acordarás del nombre exacto de la página man que quieres ver. En estos casos puedes buscar páginas man que coincidan con una palabra clave mediante el uso de la opción -k
del comando man
.
Por ejemplo, ¿qué pasa si quieres ver una página que muestra cómo cambiar la contraseña, pero no recuerdas el nombre exacto? Puedes ejecutar el comando man -k password.
Recuerda que hay miles de páginas man, así que cuando buscas por una palabra clave, sé tan específico como sea posible. Usando una palabra genérica, como «the» (o «el/la» en español), podría resultar en cientos o incluso miles de resultados.
Ten en cuenta que en la mayoría de las distribuciones de Linux, el comando apropos
hace lo mismo que el comando man -k
. En esas distribuciones, ambas producen la misma salida.
Comando info
El objetivo de este comando es ligeramente diferente de las páginas man: proporcionar un recurso de documentación que proporciona una estructura lógica, facilitando la lectura de la documentación. La información se desglosa en categorías que funcionan de una manera parecida que una tabla de contenido en un libro. Se proporcionan hipervínculos hacia páginas con la información sobre los temas individuales para un comando específico o función. Toda la documentación se combina en un solo «book» en el que puedes ir a un nivel superior de la documentación y ver la tabla de contenido que representa toda la documentación disponible.
Otra ventaja es que el estilo de escritura de los documentos info es típicamente más propicio para aprender un tema. Considera que las páginas man son un recurso de referencias y los documentos info sirven más como una guía de aprendizaje. Para visualizar la documentación info de un comando, ejecuta el comando info command
(reemplaza command
con el nombre del comando sobre cuál buscas la información). Por ejemplo, la siguiente pantalla muestra la salida del comando info ls
:
nodes
y en el ejemplo anterior estás actualmente en el nodo ls invocation
. Si pasaras al siguiente nodo (tal como ir al siguiente capítulo en un libro), estarías en el nodo dir invocation
. Si te pasaras un nivel hacia arriba estarías en el nodo
Directory listing
. Igual que el comando man
, puedes obtener un listado de comandos de movimiento escribiendo la letra h al leer la documentación info. Si quieres cerrar la pantalla de ayuda, debes introducir la letra l. Esto te regresa a tu documento y te permite a continuar leyendo. Para salir completamente, introduce la letra q.La tabla siguiente proporciona un resumen de los comandos útiles:
Comando | Función |
---|---|
Flecha abajo ↓ | Bajar una línea |
Espacio | Bajar una página |
s | Buscar un término |
[ | Ir al nodo anterior |
] | Vaya al siguiente nodo |
u | Subir un nivel |
TABULADOR | Saltar al siguiente hipervínculo |
INICIO | Ir a inicio |
FIN | Ir al final |
h | Mostrar ayuda |
L | Cerrar la página de ayuda |
q | Cerrar el comando info |
Si te desplazas en el documento, verás el menú para el comando ls
:
Los elementos bajo el menú son hipervínculos que pueden llevarte a los nodos que describen más del comando ls
. Por ejemplo, si colocas tu cursor en la línea «* Sorting the output::
» y presionas la tecla Entrar , pasarás al nodo que describe la clasificación de la salida del comando ls
:
Ten en cuenta que entrando al nodo de clasificación, prácticamente entras a un subnodo del nodo del que originalmente partiste. Para regresar a tu nodo anterior, puedes utilizar la tecla u. Mientras que u te llevará un nivel arriba hasta el inicio del nodo, también puedes utilizar la tecla l para volver exactamente a la ubicación anterior en la que te encontrabas antes de entrar al nodo de clasificación.
En lugar de utilizar la documentación info para buscar la información sobre un comando específico o función, puedes considerar la posibilidad de explorar las capacidades de Linux mediante la lectura a través de la documentación info. Si ejecutas el comando info
sin ningún argumento, pasarás a un nivel superior de la documentación. Desde allí puedes explorar muchas características:
Utilizar la opción --help
Muchos comandos te proporcionan información básica, muy similar a la sección SYNOPSIS
que aparece en las páginas man, al aplicar la opción --help
al comando. Esto es útil para aprender el uso básico de un comando. En la mayoría de los sistemas, existe un directorio donde se encuentra la documentación adicional. A menudo se trata de una ubicación donde los proveedores que crean software adicional (de terceros) almacenan sus archivos de documentación.
Estos archivos de documentación se suelen llamar archivos «readme», ya que los archivos tienen nombres como README
o readme.txt
. La ubicación de estos archivos puede variar según la distribución que estés utilizando. Ubicaciones típicas incluyen /usr/share/doc
y /usr/doc
.
Búsqueda de los Comandos y la Documentación
Recuerda que el comando whatis
(o man -f
) te dirá en qué sección se almacena la página man. Si utilizas este comando con suficiente frecuencia, probablemente te topes con una salida inusual, como la siguiente:
sysadmin@localhost:~$ whatis ls ls (1) - list directory contents ls (lp) - list directory contents sysadmin@localhost:~$
Según esta salida, hay dos comandos que listan el contenido del directorio. Hay dos comandos ls
porque UNIX tuvo dos variantes principales, lo que dio lugar a que algunos comandos fueran desarrollados «en paralelo».
Por lo tanto, algunos comandos se comportan diferentemente en diversas variantes de UNIX. Muchas distribuciones modernas de Linux incluyen comandos de ambas variantes de UNIX. Cuando corres el comando ls
, ¿Cuál de los comandos se ejecuta? Esto lo veremos más adelante.
Para buscar la ubicación de un comando o de las páginas man para un comando, utiliza el comando whereis
(o «dónde está» en español). Este comando busca los comandos, archivos de código fuente y las páginas man en las ubicaciones específicas donde estos archivos se almacenan normalmente:
Las páginas man se suelen distinguir fácilmente entre los comandos ya que normalmente están comprimidos con un comando llamado gzip
, dando por resultado un nombre de archivo que termina en .gz
.
Lo interesante es que verás que hay dos paginas man, pero sólo un comando (/bin/ls
). Esto es porque el comando ls
puede utilizarse con las opciones/funciones que se describen por cualquiera de las páginas man. Así que, cuando estás aprendiendo lo que puedes hacer con el comando ls
, puedes explorar ambas páginas man. Afortunadamente, esto más bien es una excepción ya que la mayoría de los comandos sólo tienen una página man.
El comando whereis
está diseñado para encontrar de manera específica las páginas man y los comandos. Si bien esto es útil, hay veces en las que quieras encontrar un archivo o directorio, no sólo archivos de comandos o páginas mas.
Para encontrar cualquier archivo o directorio, puede utilizar el comando locate
. Este comando buscará en una base de datos de todos los archivos y directorios que estaban en el sistema cuando se creó la base de datos. Por lo general, el comando que genera tal base de datos se ejecuta por la noche.
Los archivos que creaste hoy normalmente no los vas a poder buscar con el comando locate
. Si tienes acceso al sistema como usuario root
(con la cuenta del administrador de sistema), puede actualizar manualmente la base de datos locate
ejecutando el comando updatedb
. Los usuarios regulares no pueden actualizar el archivo de base de datos.
También ten en cuenta que cuando utilizas el comando locate
como un usuario normal, tu salida puede ser limitada debido a los permisos. En general, si no tienes acceso a un archivo o directorio en el sistema de ficheros debido a los permisos, el comando locate
no devolverá esos nombres. Esta es una característica de seguridad diseñada para evitar que los usuarios «exploren» el sistema de ficheros utilizando el comando locate
. El usuario root
puede buscar cualquier archivo en la base de datos con el comando locate
.
La salida del comando locate
puede ser bastante grande. Cuando buscas un nombre de archivo, como passwd
, el comando locate
producirá cada archivo que contiene la cadena passwd
, no sólo los archivos passwd
.
En muchos casos, puede que quieras empezar listando cuántos archivos coincidirán. Lo puedes hacer mediante la opción -c
del comando locate
:
Puedes limitar la salida producida por el comando locate
mediante la opción -b
. Esta opción sólo incluye los listados que contienen el término de búsqueda en basename del archivo. El basename es la parte del nombre de archivo que no incluye los nombres de directorio.
Como puedes ver en la salida anterior, todavía habrá muchos resultados cuando utilices la opción -b
. Para limitar la salida aún más, coloca un carácter \
delante del término de búsqueda. Este carácter limita la salida a los nombres de archivo que coincidan exactamente con el término: