Visite também: Currículo ·  Efetividade BR-Mac

O que é LinuxDownload LinuxApostila LinuxEnviar notícia


shopt: mudando as propriedades da shell em execução

O Bash possui uma série de recursos interessantes disponíveis via arquivos de configuração e parâmetros de chamada, mas alguns deles podem ser ativados e desativados sob demanda, na shell em execução (ou em um script) por meio do comando shopt.

Alguns dos recursos controláveis pelo shopt podem ser surpreendentes para você: o autocd, por exemplo, faz com que digitar o nome de um diretório passe a valer como um comando ‘cd’ para aquele diretório.

Mas vários outros controlam aspectos triviais e que podem adequar seu ambiente às suas preferências, tanto em scripts quanto em uso interativo do terminal: detalhes da expansão de nomes de arquivos (o funcionamento do asterisco, por exemplo), da gravação do histórico de comandos, da criação do prompt e mais. O artigo a seguir explica como usar o shopt para ativá-los, desativá-los e consultá-los. (via linuxnix.com – “Change shell properties with Linux shopt command”)

Leia também: sudo bang bang: um atalho rápido para redigitar menos no Terminal, no BR-Mac.org.


• Publicado por Augusto Campos em 2012-08-10

Comentários dos leitores

Os comentários são responsabilidade de seus autores, e não são analisados ou aprovados pelo BR-Linux. Leia os Termos de uso do BR-Linux.

    Zé do Mato (usuário não registrado) em 10/08/2012 às 2:06 pm

    Muito bom, gosto muito do bash.

    Rombo (usuário não registrado) em 10/08/2012 às 3:46 pm

    quem mais leu ShopTo?

    Patola (usuário não registrado) em 11/08/2012 às 12:16 am

    Mais um item em que o zsh deixa o bash comendo poeira… É verdade, opções demais podem confundir ao invés de agregar, mas na minha experiência mesmo as mais obscuras que o zsh oferece são muito necessárias em certos cenários – muitas delas são de compatibilidade. Obviamente, o zsh tem todas as opções do bash e até as teve antes dele.
    No bash:

    patola@ubuntola:~$ shopt | wc -l
    42

    No zsh:

    print -l $options | wc -l
    180

    (OBS.: pra ver todas as opções e seus valores no zsh, se alguém se interessar:

    paste <(print -l ${(k)options}) <(print -l $options)

    Mais artigos legais sobre o porquê do zsh ser muito, muito melhor que o bash: LinuxGazette Parte 1 e Parte 2. Curtos e bem explicados.

    Infelizmente com os divulgadores nacionais de shell script ignorando e até desprezando o zsh – e falo de nomes como o Aurélio e Júlio Neves sim – temos pouca gente motivada a usá-lo e aprender com ele, que é muito melhor que o bash tanto para uso interativo quanto para programação pesada. Toda vez que eu vejo alguém falando bem de bash eu, usuário de zsh há anos, sinto a mesma “dor de cotovelo” que alguém que conhece bastante Python sente ao ver o povo falando bem de perl ou Java.

    Lembrando que o zsh teve a versão 5.0 liberada recentemente e eu compilei os pacotes deb para Ubuntu 32 e 64 bits e ofereci aqui. Também consegui compilar pacotes para RHEL6.0 64 bits. Estou testando já há algum tempo e está ótimo.

    Patola (usuário não registrado) em 11/08/2012 às 12:26 am

    Ah, e no bash, você escreve o “sudo !!” e aperta e nada, tem que apertar confiando que vá funcionar. No zsh, você escreve “sudo !!” e aperta e ele substitui o “!!” pelo último comando. É um jeito muito mais fácil de decorar o enigmático comportamento do “!” – vendo em tempo real! – e já faz parte da minha digitação diária — por exemplo, “cp /dir1/dir2/dir3/dir4/dir5/dir6/arq.txt !$.old” me pouca muita digitação e ainda vejo o comando resultante na tela, na hora, aí nunca me confundo entre por exemplo !# e !$.

    Patola (usuário não registrado) em 11/08/2012 às 12:27 am

    Porcaria… minhas < > foram confundidas com HTML! Reiterando:

    Ah, e no bash, você escreve o “sudo !!” e aperta [TAB] e nada, tem que apertar [ENTER] confiando que vá funcionar. No zsh, você escreve “sudo !!” e aperta [TAB] e ele substitui o “!!” pelo último comando. É um jeito muito mais fácil de decorar o enigmático comportamento do “!” – vendo em tempo real! – e já faz parte da minha digitação diária — por exemplo, “cp /dir1/dir2/dir3/dir4/dir5/dir6/arq.txt !$[TAB].old” me poupa muita digitação e ainda vejo o comando resultante na tela, na hora, aí nunca me confundo entre por exemplo !# e !$.

    Patola (usuário não registrado) em 11/08/2012 às 4:09 am

    Ah… e quem tiver um N9 e quiser.. Fiz um pacote .deb do zsh 5.0 pra ele também. :P

    henry (usuário não registrado) em 11/08/2012 às 8:47 am

    Querido patola,

    Me tira uma duvida:
    Ecziste alguma distro em que o zsh seja o padrao no lugar do bash? Eh possivel colocar zsh como padrao do usuario root de boa ??

    Abracos

    Patola (usuário não registrado) em 11/08/2012 às 12:59 pm

    henry, se existe uma distribuição com o zsh como default eu não sei. Pode ser que haja algum BSD, dada sua afinidade maior com o zsh (licença e origem), mas realmente desconheço. É possível colocar zsh como o shell do root sim (eu faço isso há anos tanto no Ubuntu quando no Redhat) basicamente porque mesmo que haja incompatibilidades entre os shells, o she-bang no começo dos scripts (#!/bin/bash, #!/bin/zsh) garante que o shell correto seja executado para aquela tarefa.

    lklazu (usuário não registrado) em 11/08/2012 às 7:56 pm

    A distro Grml: http://grml.org/features/
    E recentemente, o Arch colocou o zsh como shell padrão do livecd: http://www.archlinux.org/news/install-media-20120804-available/

Este post é antigo (2012-08-10) e foi arquivado. O envio de novos comentários a este post já expirou.