Como você obtém descrições das opções 'shopt' disponíveis?

7

Qual é a maneira canônica de acessar a documentação local em qualquer opção de Shell integrada com shopt ?

Estou usando o Ubuntu 12.04 e posso executar help shopt para obter uma descrição do que shopt faz:

shopt: shopt [-pqsu] [-o] [optname ...]
    Set and unset shell options.
    ...

Eu posso listar as várias opções de shell e seus valores ( shopt ou shopt -p ). Mas como eu descubro o que cada um realmente faz sem deixar o conforto da minha caixa Linux? Não estou procurando as descrições on-line . Existe uma página man ou algo que está faltando?

    
por bnjmn 28.12.2013 / 06:56

2 respostas

8

Consulte a seção "comandos internos do shell" de man bash ; ele possui uma entrada para shopt que descreve todas as opções de shell disponíveis. Aqui está um trecho:

   shopt [-pqsu] [-o] [optname ...]

   [...]

          autocd  If  set,  a command name that is the name of a directory
                  is executed as if it were the argument to  the  cd  com-
                  mand.  This option is only used by interactive shells.
          cdable_vars
                  If  set,  an  argument to the cd builtin command that is
                  not a directory is assumed to be the name of a  variable
                  whose value is the directory to change to.
          cdspell If set, minor errors in the spelling of a directory com-
                  ponent in a cd command will be  corrected.   The  errors
                  checked for are transposed characters, a missing charac-
                  ter, and one character too many.   If  a  correction  is
                  found,  the corrected file name is printed, and the com-
                  mand proceeds.  This option is only used by  interactive
                  shells.

          [...]
    
por 28.12.2013 / 07:03
4

Você pode encontrar a lista de opções na página man sob a descrição do shopt builtin. Para abrir a página do manual na lista de opções, você pode usar o recurso less que permite executar um comando, como uma pesquisa, quando ele é iniciado:

PAGER='less "+/^ *The list of shopt"' man bash

Para ver esta documentação em Info:

info --index shopt bash

Se você quiser extrair a parte relevante da página man:

man bash | sed '/^ *The list of shopt/, /^ *suspend / p' | sed '$d'

ou (melhor, pois remove o recuo)

man bash | awk '
    /^ *The list of shopt/ {indent=match($0, /[^ ]/)}
    /^ *suspend / && RSTART==indent {exit}
    indent {print substr($0, indent)}'

Se você quiser extrair a descrição de uma opção (por exemplo, sourcepath ):

man bash | awk -v target=sourcepath '
    /^ *The list of shopt/ {shopt=1}
    shopt && $1==target {getline; indent=match($0, /[^ ]/)}
    indent {if (match($0, /[^ ]/)>=indent) print substr($0, indent); else exit}'
    
por 29.12.2013 / 02:48

Tags