Como obtener Ayuda en GNU/Linux

Solapas principales

1. Introducción
2. Corriendo comandos
3. Obteniendo ayuda
4. El comando whatis y apropos
5. La opción --help
6. El comando man
6.1 Moviéndonos por las Páginas del man
7. El comando info
7.1 Moviéndonos por las Páginas de info
8. Otras opciones de ayuda

Introducción

El objetivo de este wiki, es conocer las diferentes maneras de obtener ayuda sobre sistemas basado en GNU/Linux. No importa la distribución que manejes, la forma de obtener la sintaxis, los parámetros y demás acciones de los diferentes comandos y/o forma de invocación.
Daremos una revisión a la forma estándar de correr programas, así como también a las múltiples opciones de obtener ayuda e interpretarla.

Corriendo Programas

Los sistemas *nix, se han caracterizado por tener una línea de comandos altamente eficiente, y poderosa, para realizar cualquier tipo de procedimiento sobre ella.
Antes de proceder, acerca de como obtener ayuda, es conveniente dar un acercamiento a la línea de comandos.
La mayoría de los comandos, tienen una sintaxis parecida a la siguiente:
comando opciones argumento
Aunque actualmente muchos comandos permiten cambiar el orden entre los argumentos y las opciones, esta es la forma general y universal para cualquier sistemas *NIX.
Las opciones modifican el comportamiento de los comandos y normalmente tienen la siguiente característica:

  • Opciones de una sola letra, están precedidas por un -, y es posible unirlas en una sola, por ejemplo:
    ls -l -h
    ls -lh
  • Opciones en forma de palabras, normalmente están precedidas por --, por ejemplo:
    ls --color=tty

Los argumentos se refieren a los nombres de archivos y/o otros datos necesitados por el comando. Es posible poner múltiples comandos separando uno de otro a través del ;

Obteniendo ayuda

La línea de comandos es muy extensa, y dependiendo de la cantidad de paquetes instalados, podemos encontrarnos con miles de comandos y cada uno de estos con diferentes opciones que varían una y otra vez su comportamiento.
La idea es como siempre no tratar de memorizar todo, sino comprender como funciona, y para entender esto, uno no esta solo. Existen diferentes niveles para la obtención de ayuda sobre las distintas utilidades del sistema, estos niveles incluyen:

  • El comando whatis y apropos
  • La opción --help
  • Las paginas del manual
  • Las páginas info
  • La documentación incluida con el paquete
  • Los grandes foros como esdebian.org y Google

El comando whatis y apropos

Ambos comandos son usados para obtener un primer acercamiento hacia las utilidades de línea de comandos, pero desde diferentes perspectivas.
whatis es usada para obtener una corta descripción de los comandos; esta descripción es obtenida desde una base de datos que es actualizada mediante cron.
Para actualizar manualmente esta base, es necesario como root correr el comando: makewhatis. Como ejemplo, podemos citar:

natas@pc-natas:~$ whatis dbus-monitor
dbus-monitor (1)     - debug probe to print message bus messages

apropos es el comando que necesitamos cuando no conocemos el nombre del programa que nos proporciona tal o cual cualidad. Esto queda mas entendido con un ejemplo, imaginemos que queremos cambiarle el "password" a un usuario, sin embargo hemos tenido un ataque de amnesia temporal y hemos olvidado el comando para hacer esto, pues bien podemos hacer uso de apropos, para recordarlo:

natas@pc-natas:~$ apropos password
chage (1)            - change user password expiry information
chgpasswd (8)        - update group passwords in batch mode
chpasswd (8)         - update passwords in batch mode
expiry (1)           - check and enforce password expiration policy
grub-md5-crypt (8)   - Encrypt a password in MD5 format
login.defs (5)       - shadow password suite configuration
ophcrack (1)         - a Microsoft Windows password cracker using rainbow tables.
pam_cracklib (8)     - PAM module to check the password against dictionary words
pam_unix (8)         - Module for traditional password authentication
<strong>passwd (1)           - change user password</strong>
passwd (1ssl)        - compute password hashes
passwd (5)           - the password file

Como podemos observar, mediante este comando recordamos una vez más cual es el comando necesario.

La opción --help

La mayoría de los comandos, ofrecen una ayuda intuitiva y básica directamente sobre la terminal, esta ayuda es llamada con la opción --help. Una salida, común de esta opción es:

natas@pc-natas:~$ sed --help
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...

  -n, --quiet, --silent
                 suppress automatic printing of pattern space
  -e script, --expression=script
                 add the script to the commands to be executed
  -f script-file, --file=script-file
                 add the contents of script-file to the commands to be executed
  -i[SUFFIX], --in-place[=SUFFIX]
                 edit files in place (makes backup if extension supplied)
  -l N, --line-length=N
                 specify the desired line-wrap length for the `l' command
  --posix
                 disable all GNU extensions.
  -r, --regexp-extended
                 use extended regular expressions in the script.
  -s, --separate
                 consider files as separate rather than as a single continuous
                 long stream.
  -u, --unbuffered
                 load minimal amounts of data from the input files and flush
                 the output buffers more often
      --help     display this help and exit
      --version  output version information and exit

If no -e, --expression, -f, or --file option is given, then the first
non-option argument is taken as the sed script to interpret.  All
remaining arguments are names of input files; if no input files are
specified, then the standard input is read.

La línea que comienza con usage es la que nos dice como se usa el comando, la forma de leer, este tipo de líneas, quedará aclarada con un ejemplo:

  • Los Argumentos encerrados en [] se consideran opcionales
  • Los Argumentos encerrados en <> o {}, se consideran variables, es decir pueden existir cero o mas veces.
  • El texto seguido por ..., representa una lista
  • El operador |, representa una operación de tipo or.

El comando man

Las conocidas páginas del manual de linux, proporcionan información autosuficiente y extensa sobre los comandos. Casi todas las utilerias, comandos y archivos de configuración mantienen una página del manual.
Las páginas del manual, están organizadas en capítulos, donde cada capítulo específica la sección y tipo de información que proporciona, estos capítulos son:

  • Sección 1 Comandos Generales
  • Sección 2 Llamadas al sistema
  • Sección 3 Librerías de funciones (c/Perl/c++/etc)
  • Sección 4 Archivos especiales (normalmente los hospedados en /dev
  • Sección 5 Archivos de configuración
  • Sección 6 Juegos y ScreenSavers
  • Sección 7 Miscélanea
  • Sección 8 Comandos de administración del sistema y Demonios

Moviéndonos por las Páginas del man

En realidad los archivos de man, están creados con archivos que después son interpretados por groff y redireccionados a nuestro $PAGER (que puede ser less o more), por lo tanto la navegación sobre las páginas man, difiere segun el $PAGER que estemos usando, sin embargo usualmente y a no ser que modifiquemos las características, es less, que será el usado en este wiki.
La navegación por las paginas del manual puede hacerse mediante las flechas del teclado, o con las teclas PageUp y PageDown.
Para buscar una frase o palabra en específico podemos usar /texto a buscar, y para movernos a través de las coincidencias usamos n o N, segun nos movamos a la siguiente o anterior coincidencia respectivamente.
Unas de las opciones de man mas usadas es :
man -a passwd Nos entrega todas las paginas del manual de passwd (el comando, el archivo, etc)
man 5 passwd Nos entrega la pagina del manual de archivo passwd (recordemos que la sección 5 es de archivos de configuración).

El comando info

El comando info es la siguiente generación de ayuda, y es usado generalmente cuando la información de man es o muy poca, o tanta que es dificil movernos por ella.
Aunque, estaba planeado que esta utileria sustituyera a las páginas del man, en la actualidad son complementos uno de otra, puesto que en muchos casos, la información contenida en una, es la misma que en la otra.

Moviéndonos por las Páginas de info

El programa info tiene una interfaz navegable: muchas de las páginas tienen enlaces a otras páginas relacionadas, muy similar a como tienen las páginas web. Los enlaces se indican mediante un asterisco (*) seguido por el título del enlace, seguido por un doble dos puntos (::). Para seguir los enlaces, hay que situar el cursor sobre ellos y pulsar la tecla . Asímismo existen diferentes teclas para el movimiento sobre estas páginas:

  • La tecla de tabulador, nos mueve por entre los diferentes links
  • La navegación básica puede ser con las flechas o las teclas PageUp o PageDown
  • n/p/u Nos manda a la siguiente, anterior pagina, o nos sube un nodo, respectivamente hablando.
  • s texto a buscar Busca por el texto especificado, sino especificamos un texto busca la siguiente coincidencia del último texto buscado.
  • q salimos de las paginas info.

Otras Opciones de Ayuda

Finalmente podemos navegar en nuestro sistema de archivos hasta /usr/share/doc y buscar mas información como, changelogs, readmes especifícos de distribución, archivos de ejemplo, etc, de la aplicación y/o utilería que estemos estudiando.
Por último, en caso de no encontrar lo que necesitamos podemos hacer uso de los grandes foros como ExDebian y páginas de búsqueda donde seguramente encontraremos lo que necesitamos.