



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Explore a última versão do grande Bourne-again shell. Apesar da maturidade do Bash, seus desenvolvedores continuam aprimorando-o. A versão 4 do shell está cheia de novidades. por Bernhard Bablok e Nils Magnus.
Tipologia: Notas de estudo
1 / 6
Esta página não é visível na pré-visualização
Não perca as partes importantes!




ANÁLISE Explore a última versão do grande Bourne-again shell Bash novo
A pesar da competição recente por parte de poderosas alter nativas como o Zsh [1] , o Bourne-again shell (Bash) [2] ain da é o rei do pedaço no console do GNU/Linux. O Bash, que pode ser usado de forma interativa, tam bém serve como uma linguagem de script simples e prática. O Bash faz parte do esqueleto de todo sistema GNU/Linux – mais um motivo para investigar os benefícios de adotar a nova versão 4, lançada em fevereiro de 2009. Por que não? Em sistemas em produção, talvez seja mais recomendável avaliar se é realmente necessário atualizar o Bash para sua nova versão. Por um lado, as principais distribuições cer tamente difundirão a nova versão por meio de suas atualizações, então o novo Bash fatalmente vai chegar ao seu sistema mais cedo ou mais tarde. Programadores e usuários avançados, por outro lado, gostam de usufruir os benefícios oferecidos por novas versões o mais rápido possível. Quem desejar já se familiarizar com o shell principal da maioria das distribuições do futuro certamente gostará de passar algum tempo com o Bash 4 já. A tabela 1 mostra um resumo de alguns novos recursos importantes; para uma listagem completa, verifi que o arquivo NEWS na documentação do Bash. Este artigo levanta algumas das mudanças mais importantes. Linha de comando Usuários da linha de comando apre ciarão algumas extensões inconspí cuas, mas muito úteis, incorporadas ao novo Bash. Por exemplo, a string ****** é expandida para uma lista de arquivos e caminhos sob o diretório atual, de forma semelhante ao co mando externo find. Porém, os usuá rios precisam ativar esse recurso por meio do comando shopt -s globstar. Os desenvolvedores agora ado taram uma técnica mais amigável para um dos maiores mistérios do Bash: o redirecionamento da saída de erro padrão. Em vez do mantra 2>&1 1>arquivo , agora os usuários po dem usar simplesmente &> >arquivo para redirecionar as saídas padrão e de erro para um único arquivo. O atalho |& , que redireciona o erro padrão de um comando para um pipe, é outra novidade útil. Vetores associativos A crença popular reza que scripts Bash criam muitos processos, que acabam prejudicando o desempe nho. Mas muitos dos aplicativos simples que costumavam ser usados com o Bash, incluindo sed , grep , basename e dirname , já não são mais necessários; o Bash realiza essas tarefas tão rápido quanto qualquer outra linguagem de script com fer ramentas embutidas. Apesar desses avanços, os programadores Bash continuam com olhares invejosos a Perl e Python, ambos com estruturas de dados mais versáteis. Em sua versão 4, o Bash final mente acrescenta a seus vetores uni dimensionais os vetores associativos (semelhantes aos hashes em Perl e dicionários em Python). Para muitos programadores, essa mudança, por si só, já é motivo suficiente para ado tar a nova versão, pois ela oferece uma solução bem mais elegante a vários problemas. Por exemplo, os desenvolvedores podem usar textos arbitrários como índices de vetores associativos em vez de apenas intei ros. A listagem 1 mostra um exemplo. A listagem 2 contém um script que ordena arquivos em diretórios yewkeo, 123RF
Bash 4 | ANÁLISE Linux Magazine #58 | Setembro de 2009 Tabela 1: Principais mudanças Mudança Descrição Substrings A extensão para parâmetros de posição suporta o desvio zero PID O PID do shell atual está disponível na variável BASHPID autocd Suporta navegação rápida por meio do nome do diretório checkjobs Verifica e relata trabalhos (jobs) ativos ou parados na saída read Atribui entradas parciais a variáveis e mantém seus valores mesmo que o comando te- nha seu tempo expirado mapfile Facilita o processamento de arquivos command_not_found_handle O Bash 4 chama essa função caso não consiga encontrar um comando globstar Usa ****** para realizar buscas recursivas ao longo de múltiplos diretórios Chaves A extensão cria uma lista de valores com zeros na frente Saída de erro padrão (^) Em vez de 2>&1 1>arquivo , o Bash agora suporta &> >arquivo Saída de erro padrão Da mesma forma, |& substitui 2>&1 | case Agora o Bash 4 suporta ;; , ;& e ;;& para terminar um case. O primeiro processa incon- dicionalmente as instruções do próximo grupo; o segundo verifica mais uma vez e, se adequado, continua processando o próximo grupo. Expansão variável Os operadores ^ e , alteram para caixa alta ou baixa Conversão automática (^) declare -u e declare -l convertem automaticamente para caixa alta ou baixa ao atri- buir valores Vetores associativos Os índices podem ser strings: $idade[“fulano”] coproc Cria processos assíncronos Seleção O comando read -t 0 -u fd verifica se o descritor de arquivo fd fornece dados
Mais informações Site: www.linuxmagazine.com.br Tel: 11 4082-
Bash 4 | ANÁLISE Linux Magazine #58 | Setembro de 2009 Quadro 1: Entrevista com o desenvolvedor do Bash 4 Chet Ramey Chat Ramey é gerente do Grupo de Segurança e Engenharia de Redes da divisão de serviços de TI da Case Western Reserve University. Ele é o mantenedor do Bash desde 1990. A Linux Magazine fez algumas perguntas a ele com relação à última versão do Bash. A comunidade do Software Livre não via uma nova ver- são do Bash há algum tempo. Alguns dizem que a ver- são 3.2 era adequada para praticamente todas as tare- fas necessárias. Então, por que algo novo? Fico feliz que as pessoas tenham uma opinião tão boa sobre o Bash 3.2. Eu não gosto de lançar novas ver- sões com muita frequência, pois o shell é muito bási- co para vários distribuidores, mas já estava na hora. O Bash 4.0 oferece diversos recursos novos (normalmen- te eu não incluo grandes recursos novos em versões de atualização), várias correções de falhas que não en- traram como patches no 3.2, e mais funcionalidades para os recursos já presentes. Quais os três avanços ou novos recursos que você acha mais interessantes? Vejamos. Essa é difícil, porque há várias que são boas.
ANÁLISE | Bash 4 O primeiro comando converte a primeira letra para caixa alta e imprime Sim. O segundo converte todas as letras, portanto retorna SIM. Se for necessário converter para caixa baixa, podese usar: foo=SIM echo ${foo,} echo ${foo,,} A sintaxe ${Var^Padrão} suporta substituições ainda mais complexas. Co-processos e listas A maioria dos fabricantes de hardware atuais oferecem processadores com múltiplos núcleos, e já começam a aparecer técnicas para explorar essas funcionalidades. O Bash 4 permite ao programador executar o que se chama de “coprocessos”: coproc pipes comando Este comando retorna os descri tores de entrada e saída padrão do comando nas variáveis pipes[0] e pipes[1]. O processo principal do Bash os utiliza para se comunicar com o co processo, o que é parti cularmente útil para shell scripts que tratam com processamento paralelo [5]. Listas de valores automáticos, ou expansões de chaves, já existem há tempos, mas eram desconhecidas pela maioria dos usuários: o comando echo {5..15} conta do primeiro até o último número. Muitos programa dores Bash ainda usam o programa externo seq para isso: echo $(seq -s “ “ 5 15) O comando seq não apenas é mais lento, como seu resultado é mais difícil de ler. Porém, se for preciso ordenar esse tipo de saída, as versões anteriores do Bash não ajudavam, pois eram incapazes de inserir um zero à frente dos números menores que dez. O Bash 4 já faz isso: echo {05..15} A nova versão da shell padrão do GNU/Linux oferece alguns recursos úteis para os programadores e fãs da linha de comando. Apesar de algu mas pequenas incompatibilidades, o mantenedor do Bash incentiva os usuários a fazer a atualização (con fira a entrevista no quadro 1 ). A nova versão do Bash não é exa tamente magra – o binário agora ocupa 730 KB, em lugar dos 590 KB da versão anterior. Ele é mensuravel mente, mas não perceptivelmente, mais lento; os tempos de execução mais longos dificilmente devem ser problemáticos em hardwares atuais. Para usar as novas funções hoje, é preciso ter controle total sobre o ambiente para substituir todo o Bash. Em algums scripts, talvez seja preciso consultar as variáveis de ambiente BASH_VERSION e BASH_ VERSINFO para se assegurar da ver são em execução. Caso a versão não seja a 4, simplesmente termi ne o script graciosamente e emita uma mensagem de erro explicando o motivo. n Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em [email protected] Este artigo no nosso site: http://lnm.com.br/article/ Listagem 4: Técnica antiga para processar arquivos 01 #!/bin/bash 02 03 inputFile=”$1” 04 i= 05 while read line; do 06 lines[$i]=”$line” 07 let i++ 08 done < “$inputFile” 09 10 # Processamento das linhas... Listagem 5: Nova técnica para processar arquivos 01 #!/bin/bash 02 03 inputFile=”$1” 04 mapfile - n 0 lines < “$inputFile” 05 06 # Processamento das linhas... Mais informações [1] Zsh: http://www.zsh.org [2] Bash: http://tiswww.case.edu/php/chet/bash/bashtop.html [3] Bernhard Bablok, “Shell paralelo”: http://lnm.com.br/article/