command-line – ¿Por qué los elementos integrados de shell no tienen páginas de manual adecuadas?

Pregunta:

Todas las funciones integradas de shell comparten la misma página de manual:

BUILTIN(1)                BSD General Commands Manual               BUILTIN(1)

NAME
     builtin, !

etc.

Luego hay un pequeño texto que describe qué son los elementos internos de shell, y luego una lista que se parece a esto:

  Command       External    csh(1)    sh(1)
       !             No          No        Yes
       %             No          Yes       No

Pero si hacemos man grep obtenemos secciones como

  • Insectos
  • Historia
  • Ver también
  • Estándares
  • Descripción

etc.

¿No tienen los intérpretes integrados de shell su propia historia, descripción y argumentos como -A o -r ? ¿Por qué no se proporciona en las páginas del manual y cómo puedo aprender a usarlas de manera correcta y eficiente?

Respuesta:

Porque las incorporaciones son parte del caparazón. Cualquier error o historial que tengan son errores e historial del propio shell. No son comandos independientes y no existen fuera del shell en el que están integrados.

El equivalente, al menos para bash , es el comando help . Por ejemplo:

$ help while
while: while COMMANDS; do COMMANDS; done
    Execute commands as long as a test succeeds.

    Expand and execute COMMANDS as long as the final command in the
    `while' COMMANDS has an exit status of zero.

    Exit Status:
    Returns the status of the last command executed.

Todas las funciones integradas de bash tienen páginas de help . Incluso help sí mismo:

$ help help
help: help [-dms] [pattern ...]
    Display information about builtin commands.

    Displays brief summaries of builtin commands.  If PATTERN is
    specified, gives detailed help on all commands matching PATTERN,
    otherwise the list of help topics is printed.

    Options:
      -d    output short description for each topic
      -m    display usage in pseudo-manpage format
      -s    output only a short usage synopsis for each topic matching
        PATTERN

    Arguments:
      PATTERN   Pattern specifiying a help topic

    Exit Status:
    Returns success unless PATTERN is not found or an invalid option is given.

Inspirado por el script sed @ mikeserv, aquí hay una pequeña función que imprimirá la sección relevante de una página de manual usando Perl. Agregue esta línea al archivo de inicialización de su shell ( ~/.bashrc para bash):

manperl(){ man "$1" | perl -00ne "print if /^\s*$2\b/"; }

Luego, lo ejecuta dándole una página de manual y el nombre de una sección:

$ manperl bash while
       while list-1; do list-2; done
       until list-1; do list-2; done
              The while command continuously executes the list list-2 as long as the last command in the list list-1 returns an exit
              status of zero.  The until command is identical to the while command, except that the test is negated; list-2 is  exe‐
              cuted  as  long  as the last command in list-1 returns a non-zero exit status.  The exit status of the while and until
              commands is the exit status of the last command executed in list-2, or zero if none was executed.

$ manperl grep SYNOPSIS
SYNOPSIS
       grep [OPTIONS] PATTERN [FILE...]
       grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

$ manperl rsync "-r"
       -r, --recursive
              This tells rsync to copy directories recursively.  See also --dirs (-d).

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım