Acesso direto ao conteúdo

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

você está aqui: Home  → Colunistas  →  Cantinho do Shell

 

 

Uma pequena dica de uso do shopt

Por Júlio Cezar Neves

Data de Publicação: 14 de Abril de 2009

Ultimamente só tenho mandado para o Cantinho do Shell dicas úteis sobre programas pouco difundidos. Este artigo não sai desta linha, pois mostrarei algumas dicas de uso do intrínseco (builtin) shopt do Bash. O assunto não se esgota aqui pois neste artigo veremos somente algumas dicas (cerca de 20%) de uso da opção -s, (de set) mas estava no site do Bash, baixando a versão 4.0 quando me deparei com estes macetes e trouxe-os para dividir com vocês.

Teste as opcoes a seguir dentro do comando shopt -s <opcoes>.

cdspell

Com esta opção setada, pequenos erros de digitação no nome do diretório para o qual você deseja fazer um cd serão ignorados, isto é, caracteres extras ou esquecidos serão automaticamente corrigidos sem necessidade de redigitação.

No exemplo a seguir, queria fazer um cd rede, que é um diretório abaixo do meu home.

  $ cd red
  bash: cd: red: Arquivo ou diretório inexistente
  $ shopt -s cdspell
  $ cd red
  rede
  $ cd -
  /home/jneves
  $ cd ede
  rede
  $ cd -
  /home/jneves
  $ cd redes
  rede
  cmdhist

Essa opção é bacana, pois transforma comandos criados em diversas linhas (como um for ou um while, por exemplo) em uma única linha, com os comandos separados por ponto-e-vírgula (;). Isso é particularmente útil para editar comandos e portanto é uma opção setada por default pelo Bash.

dotglob

Esta opção permite que

This one allows files beginning with a dot ('.') to be returned in the results of path-name expansion.
  $ ls *bash*
  ls: impossível acessar *bash*: Arquivo ou diretório inexistente
  $ shopt -s dotglob
  $ ls *bash*
  .bash_history  .bash_logout  .bashrc

extglob

o Shell possui, alem do globbing normal (a expansão *, ? e [a-z] de nomes de arquivos e diretórios), um globbing extendido.

Acho que, em alguns casos, poderá ser bem útil, eliminando um pipe para um grep por exemplo.

São eles:

?(padrao) Casa zero ou uma ocorrência de um determinado padrao.
*(padrao) Casa zero ou mais ocorrências de um determinado padrao.
+(padrao) Casa uma ou mais ocorrências de um determinado padrao.
@(padrao) Casa com exatamente uma ocorrência de um determinado padrao.
!(padrao) Casa com qualquer coisa, exceto com padrao.

Para poder utilizá-lo precisamos executar o shopt antes. Repare que uma barra vertical (|) dentro dos parênteses equivale a um "ou" lógico. Veja os exemplos a seguir:

  $ shopt -s extglob
  $ ls
  file filename filenamename fileutils
  $ ls file?(name)
  file filename
  $ ls file*(name)
  file filename filenamename
  $ ls file+(name)
  filename filenamename
  $ ls file@(name)
  filename
  $ ls file!(name)          # divertido esse
  file filenamename fileutils
  $ ls file+(name|utils)
  filename filenamename fileutils
  $ ls file@(name|utils)    # "lembra" um {name,utils}
  filename fileutils

As principais opções do comando shopt são:

Opção Significado
-s Habilita (set) a opção
-u Desabilita (unset) a opção
-q Suprime a saída (quiet). Ótima para saber pelo código de retorno ($?) se uma opção está setada ou não

Veja a relação completa dos artigos da coluna Cantinho do Shell

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir
  • Currently 3.25/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.2 /5 (97 votos)


Para se manter atualizado sobre as novidades desta coluna, consulte sempre o newsfeed RSS

Cantinho do Shell NewsFeed RSS

Para saber mais sobre RSS, leia o artigo O Padrão RSS - A luz no fim do túnel.

Opinião dos Leitores

Julio Neves
15 Abr 2009, 18:21
Fala Albert,
amigo, há algum tempo solicitei em um site (ou deveria ser sítio?) de SL de Portugal, que fizessem a conversão para o português europeu da minha página (www.julioneves.com), que tem um livro livre de Shell com cerca de 30.000 acessos/mês.

Acredite vc, que durante um bom tempo os portugueses criticaram a minha forma brasileira de escrever e, após intensa troca de farpas entre eles mesmos, nada foi feito. Se tivessem gastado toda a energia que gastaram nas críticas à nossa terminologia (não queriam mouse, mas sim rato; não queriam monitor, mas sim ecran; arquivo x ficheiro; ...), teriam feito a conversão, ajudando a milhares de patrícios (a thread está em http://www.gildot.org/articles/05/11/16/1015209.shtml, vejam, vale a pena).

Pq estou escrevendo isso? Pq não acredito que críticas qto à forma e ao estilo contribuam com a qualidade técnica do artigo, mas dou a maior força para críticas técnicas que nos obriguem a pensar e refletir sobre o assunto em tela.

Portanto, caro Albert, como o texto é livre, pode copiá-lo e transcrevê-lo da forma que vc achar melhor, mas procure agregar um pouco de conteúdo técnico, por favor.
--
Abração,
Julio
Cursos de Shell e Zenity nos finais de semana:
- Em SP ligue (11) 2125-4747;
- Em DF ligue (61) 3223-3000;
- No RJ brevemente;
- Turmas fechadas em outras cidades ligue (21) 8112-9988
Fabricio Beltram
15 Abr 2009, 09:13
hahaha esse é o verdadeiro PAPAI do SHELL ! Valew Julião.
Raul Liborio
14 Abr 2009, 23:55
Thanks master!
Albert Knox
14 Abr 2009, 17:41
Artigo interessante. Seria legal apenas que, ao invés de usar "setado", você utilizasse "definido".
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

Bombando o Shell - Caixa de Ferramentas Gráficas do Shell Linux></A>
</div>
<div align=center>
<!--
<a href='http://www.idph.net/inglesonline/inscricao.shtml' target='_blank'><img src='http://www.dicas-l.com.br/imagens/InglesOnline.jpg' border='0' alt=''></a><BR><BR>-->
<A HREF=http://iol.idph.com.br rel=

 

 

Procure pela casa ou apartamento ideal à venda ou para aluguel na busca inteligente do Imohoo
Buscar imóveis