25 de julio de 2016

Obteniendo ayuda en Linux #LPIC

Cuando estamos utilizan Linux, siempre nos saldrá una duda. Si bien es para saber cómo podemos ejecutar tal cosa, o como el sistema funciona en sí mismo, con qué parámetros podemos hacer que sea más efectivo nuestro script....etc

Por ende, Linux es uno de los sistemas operativos más documentados al estar respaldado por una gran comunidad de usuarios y/o empresas que no paran de crecer día tras día. Multitud de libros específicos para determinadas cosas como "tunear" los diferentes tipos de sistemas de ficheros (EXT4, XFS, ReiserFS, BTRFS...), como optimizar el stack TCP/IP.

Además de las plataformas de soporte que van desde un simple blog hasta pasar a grandes foros con tráficos increíblemente altos y sorprendentes; además de las páginas específicas y solo centradas a reporte de errores como es el caso de Bugzilla de Red Hat o de Gentoo, Archlinux..., o de seguridad como CVEdetails.

En caso de que quieras recurrir a la ayuda de un determinado comando, programa...etc tienes las siguientes alternativas:

  • Haciendo uso de los parámetros y/u opciones --help; -h; --h que tenga el programa en cuestión
  • Utilizando el comando man, info del sistema
  • Utilizando los ficheros README que suelen dejar alojados en un directorio dentro de tu sistema
  • Acudiendo a las páginas oficiales del proyecto y/o independientes del mismo, comando...etc

En primer lugar, los comandos suelen tener una pequeña ayuda resumida que nos explica lo que hace cada parámetro. No contiene ejemplos para mostrarnos como funciona, pero si nos despeja alguna duda rápida que tengamos con respecto al programa, app...

Salida acortada del comando tar:
netsys@keys0 ~ $ tar
tar: You must specify one of the '-Acdtrux', '--delete' or '--test-label' options
Try 'tar --help' or 'tar --usage' for more information.
Aquí nos dice que para obtener más información utilicemos la opción --help. 
netsys@keys0 ~ $ tar --help
Usage: tar [OPTION...] [FILE]...
GNU 'tar' saves many files together into a single tape or disk archive, and can
restore individual files from the archive.
Examples:
  tar -cf archive.tar foo bar  # Create archive.tar from files foo and bar.
  tar -tvf archive.tar         # List all files in archive.tar verbosely.
  tar -xf archive.tar          # Extract all files from archive.tar.
 Main operation mode:
  -A, --catenate, --concatenate   append tar files to an archive
  -c, --create               create a new archive
  -d, --diff, --compare      find differences between archive and file system
      --delete               delete from the archive (not on mag tapes!)
  -r, --append               append files to the end of an archive
[...] 
Como podemos ver, ahora sí que nos sale una salida mucha más extensa (tuve que recortarla) que nos especifica para que sirven determinados parámetros he incluso, han sido más generosos y nos han dado algunos ejemplos de uso más comunes.

Si queremos obtener una ayuda más extensa y mucho más explicativa deberemos hacer uso del comando man.

El comando man se utiliza para indagar en los manuales de cada programa, aplicación o script que contenga dicha documentación almacenada en el sistema. En caso de andar en otro ordenador tenemos disponible una versión online de man para acceder desde cualquier parte.

Al haber comandos y/o aplicaciones que puedan contener el mismo nombre. Man puede acceder a los manuales por secciones, evitando que se habra la página errónea del comando y/o programa; aparte de otro criterio adicional de clasificación.

  1. Ejecutables o programas basados en shell
  2. Llamadas del sistema o conocidas en inglés como System calls (funciones proporcionadas por el kernel)
  3. Llamadas a librerías (funciones que están dentro de librerías)
  4. Ficheros especiales (Se suelen encontrar en el directorio /dev)
  5. Formatos de ficheros y convenciones como por ejemplo /etc/passwd
  6. Juegos
  7. Miscelanea  (que incluyen macro paquetes y convenciones), ejemplos: man(7), groff(7)
  8. Comandos de administración del sistema (Generalmente solo para superusuario)
  9. Routinas del kernel [Aún no estandarizado]

Su uso es muy sencillo. Basta con escribir:
netsys@keys0 ~ $ man 1 sh
Para obtener la siguiente salida:
SH(1P)     POSIX Programmer's Manual          SH(1P)

PROLOG
       This  manual  page is part of the POSIX Programmer's Manual.  The Linux
       implementation of this interface may differ (consult the  corresponding
       Linux  manual page for details of Linux behavior), or the interface may
       not be implemented on Linux.

NAME
       sh — shell, the standard command language interpreter

SYNOPSIS
       sh [−abCefhimnuvx] [−o option]... [+abCefhimnuvx] [+o option]...
           [command_file [argument...]]

       sh −c [−abCefhimnuvx] [−o option]... [+abCefhimnuvx] [+o option]...
           command_string [command_name [argument...]]

       sh −s [−abCefhimnuvx] [−o option]... [+abCefhimnuvx] [+o option]...
           [argument...]

Hemos tenido que acortarla como en el caso anterior porque es una salida muy extensa.

También tenemos el comando info que es parecido a man pero con otro estilo de navegación.

Ejemplo de salida de info:
netsys@keys0 ~ $ info bash
Next: Introduction,  Prev: (dir),  Up: (dir)
Bash Features
*************
This text is a brief description of the features that are present in
the Bash shell (version 4.3, 2 February 2014).  The Bash home page is
`http://www.gnu.org/software/bash/'.
   This is Edition 4.3, last updated 2 February 2014, of `The GNU Bash
Reference Manual', for `Bash', Version 4.3.

   Bash contains features that appear in other popular shells, and some
features that only appear in Bash.  Some of the shells that Bash has
borrowed concepts from are the Bourne Shell (`sh'), the Korn Shell
(`ksh'), and the C-shell (`csh' and its successor, `tcsh').  The
following menu breaks the features up into categories, noting which
features were inspired by other shells and which are specific to Bash.

   This manual is meant as a brief introduction to features found in
Bash.  The Bash manual page should be used as the definitive reference
on shell behavior.
[...]
Para saber más sobre sus funcionalidades, controles de navegación y como sacarle el máximo partido si utilizas scripts. Puedes acceder a su documentación desde el mismo man: $ man man ó $ man info; $ info man; $ info info

Por otro lado, tenemos a los famosos README que suelen acompañar a los programas que descargamos bien en código fuente (tarball); o incluso si son binarios o directamente paquetes.
Si haces una búsqueda con el comando locate README (un comando que permite buscar ficheros utilizando su DB) puedes encontrar READMEs que ni te imaginabas que estaban ahí y que contienen información en muchos casos relevantes, y son recomendables al menos, echarles un vistazo por encima.

Y por último, accediendo a las páginas Web oficiales de los proyectos las cuáles suelen contener una Wiki adicional o de página principal que alojan tutoriales, workarounds y muchas más cosas interesantes como por ejemplo la wiki de Gentoo o de ALSA. También podemos aprovechar aquellos foros, o comunidades ajenas a los proyectos.

Referencias

  • Gentoo wiki
  • Arch Linux wiki
  • Eni ediciones ~ Preparación para la certificación LPIC-1
  • Man man
  • Info man

No hay comentarios:

Publicar un comentario

Gracias por visitar mi blog y animarte a comentar. Por favor se respetuoso con sus comentarios. Cualquier error es preferible reportárlo que criticarlo por el bien de todos.



Licencia y responsabilidades

Licencia Creative Commons
netSys blog por Álvaro Castillo se encuentra bajo una Licencia Creative Commons Atribución-CompartirIgual 3.0 Unported.

El propietario de este blog no se responsabiliza de los daños que puedan generarse u ocurrir por la información expuesta aquí, en caso de ser utilizada la responsabilidad recae bajo quién la use.

Se les informa de posibles publicaciones donde queden expuestas imágenes a terceros o marcas comerciales que siempre tendrán sus fuentes, y sus atribuciones.

Por último, en caso de confusión por la temática que se trate de los artículos, tutoriales...etc dejaremos claro que este sitio Web no colabora directamente con ningún proyecto de forma oficial.