Como personalizar o Bash Shell com shopt

Se você ajustar o comportamento do seu shell Bash com shopt, poderá controlar mais de 50 configurações. Mostraremos como personalizar seu sistema Linux do jeito que você gosta.

A loja Embutida

O shopt integrado faz parte de todas as versões do Bash shell, então não há necessidade de instalar nada. O número de opções disponíveis no shopt aumentou constantemente ao longo dos anos. Portanto, quanto mais antiga for a versão do Bash, menor será a lista de opções de compras.

Se algo parece não estar funcionando em sua máquina, verifique a entrada da página man do Bash e verifique se a opção está disponível em sua versão do shopt.

Cobrimos todas as opções de compras abaixo. Também descrevemos como usá-lo e compartilhamos alguns exemplos. A partir daí, você pode conferir a página de manual do Bash ou Manual de referência GNU Bash para ver se alguma dessas opções parece útil ou atraente.

Algumas opções de compras são habilitadas por padrão e fazem parte do comportamento padrão do Bash. Você pode habilitar uma opção shopt como uma mudança de curto prazo no Bash. Ele então reverterá para o comportamento padrão quando você fechar o shell.

No entanto, se você quiser que um comportamento modificado esteja disponível sempre que você iniciar um shell Bash, você pode tornar as alterações permanentes.

As opções da loja

São 53 opções de compras. Se você usar o comando shopt sem nenhuma opção, ele as listará. Se canalizarmos a saída através do comando wc, ela contar as linhas, palavras e caracteres para nós. Como cada opção shopt está em sua própria linha, o número de linhas é o número de opções.

Digitamos o seguinte:

shopt | wc

Para ver todas as opções, podemos canalizar a saída através do comando column para exibir os nomes das opções em colunasou poderíamos canalizá-lo para menos.

Digitamos o seguinte:

shopt | column

Encontrando shopt no Manual do Linux

A seção que discute o shopt e suas opções está na seção Bash do manual do Linux. A seção Bash tem mais de 6.000 linhas. Você pode encontrar a descrição do shopt com muita rolagem, ou pode apenas procurá-la no manual.

Para fazer isso, abra o manual na seção Bash:

man bash

No manual, pressione / para iniciar uma pesquisa. Digite o seguinte e pressione Enter:

assoc_expand_once

O início da seção shoptoption aparecerá na janela do homem.

Opções de configuração e desarmar

Para definir e desmarcar as opções do shopt, use os seguintes comandos:

-s: Definir ou ativar.
-u: Desativar ou desativar.

Como algumas opções são ativadas por padrão, também é útil verificar quais opções estão ativadas. Você pode fazer isso com as opções -s e -u sem usar um nome de opção. Isso faz com que o shopt liste as opções que estão ativadas e desativadas.

Digite o seguinte:

shopt -s

shopt -u | column

Você pode usar uma opção shopt sem os comandos -s ou -u para ver o estado ativado ou desativado de cada opção.

Por exemplo, podemos digitar o seguinte para verificar a configuração da opção histverify:

shopt histverify

Podemos digitar o seguinte para ativá-lo:

shopt -s histverify

Então, podemos digitar o seguinte para verificar novamente:

shopt histverify

A opção histverify altera como um aspecto do comando history opera. Normalmente, se você pedir ao histórico para repetir um comando referenciando-o por número, como !245, o comando será recuperado do histórico de comandos e executado imediatamente.

Se você preferir revisar um comando para certificar-se de que é o que você esperava e editá-lo, se necessário, digite o seguinte para ativar a opção shopt histverify:

!245

O comando é recuperado e apresentado na linha de comando. Você pode excluir, editar ou executá-lo pressionando Enter.

A opção autocd

Com a opção autocd ativada, se você digitar o nome de um diretório na linha de comando e pressionar Enter, ele será tratado como se você tivesse digitado cd na frente dele.

Digitamos o seguinte para ativar a opção autocd:

shopt -s autocd

Em seguida, digitamos o nome de um diretório:

Documents

A opção cdspell

Quando a opção cdspell está ativada, o Bash corrigirá automaticamente erros de ortografia simples e erros de digitação nos nomes dos diretórios.

Digitamos o seguinte para definir a opção cdspell:

shopt -s cdspell

Para tentar mudar para um diretório em minúsculas que deve ter uma letra inicial maiúscula, digitamos o seguinte:

cd documents

Então, podemos digitar o seguinte para tentar um nome de diretório com um “t” extra em seu nome:

cd ../Picttures

Bash muda em cada diretório, independentemente dos erros de ortografia.

A opção xpg_echo

Quando a opção xpg_echo estiver ativada, o comando echo obedecerá a caracteres de escape, como n para nova linha e t para tabulação horizontal.

Primeiro, digitamos o seguinte para garantir que a opção esteja definida:

shopt -s xpg_echo

Em seguida, incluímos n em uma string que vamos passar para echo:

echo "This is line onenThis is line two"

O caractere de nova linha com escape força uma quebra de linha na saída.

Isso produz o mesmo comportamento que o -e (habilitar interpretação de escape) echo, mas xpg_echo permite que seja a ação padrão.

A opção dotglob

A opção dotglob deve ser tratada com um pouco de cautela. Ele permite que arquivos e diretórios que começam com um ponto (.) sejam incluídos em expansões de nome ou “globbing”. Eles são chamados de “arquivos de ponto” ou “diretórios de ponto” e geralmente estão ocultos. A opção dotglob ignora o ponto no início de seus nomes.

Primeiro, faremos uma busca por arquivos ou diretórios que terminam em “geek” digitando o seguinte:

ls *geek

Um arquivo é encontrado e listado. Em seguida, ativaremos a opção dotglob digitando o seguinte:

shopt -s dotglob

Emitimos o mesmo comando ls para procurar arquivos e diretórios que terminam em “geek”:

ls *geek

Desta vez, dois arquivos são encontrados e listados, um dos quais é um arquivo de ponto. Você precisa ter cuidado com rm e mv quando tiver a opção dotglob ativada.

A opção nocaseglob

A opção nocaseglob é semelhante à opção dotglob, exceto que nocaseglob faz com que diferenças em letras maiúsculas e minúsculas em nomes de arquivos e diretórios sejam ignoradas em expansões de nomes.

Digitamos o seguinte para procurar arquivos ou diretórios que começam com “how”:

ls how*

Um arquivo é encontrado e listado. Digitamos o seguinte para ativar a opção nocaseglob:

shopt -s nocaseglob

Em seguida, repetimos o comando ls:

ls how*

Dois arquivos são encontrados, um dos quais contém letras maiúsculas.

Tornando as alterações permanentes

As alterações que fizemos durarão apenas até fecharmos o shell Bash atual. Para torná-los permanentes em diferentes sessões de shell, precisamos adicioná-los ao nosso arquivo “.bashrc”.

Em seu diretório inicial, digite o seguinte comando para abrir o arquivo “.bashrc” no editor de texto gráfico Gedit (ou altere-o de acordo para usar o editor de sua preferência):

gedit .bashrc

O editor gedit será aberto com o arquivo “.bashrc” carregado. Você verá que algumas entradas do shopt já estão nele.

Você também pode adicionar suas próprias opções de compras aqui. Depois de adicioná-los, salve suas alterações e feche o editor. Agora, sempre que você abrir um novo shell Bash, suas opções serão definidas para você.

Opções até onde os olhos podem ver

É verdade que o comando shopt tem muitas opções, mas você não precisa enfrentá-las todas de uma vez, ou nunca. Como há tantos, provavelmente há alguns que não serão de seu interesse.

Por exemplo, há vários que forçam o Bash a operar de maneira compatível com versões específicas e antigas. Isso pode ser útil para alguém, mas é um caso bastante específico.

Você pode revisar o Bash página de manual ou Manual de referência GNU Bash. Decida quais opções farão a diferença para você e, em seguida, experimente-as. Apenas tome cuidado com as opções que afetam a maneira como os nomes de arquivos e diretórios são expandidos. Experimente-os com um comando benigno, como ls, até se sentir confortável com eles.