Índice:
- O que é uma concha?
- História e um resumo de conchas
- Script
- Uma espiada sob o capô da linha de comando Unix / Linux
A linha de comando nos sistemas Unix e Linux já é muito poderosa, mas os shells são uma ferramenta ainda mais poderosa do que aparenta. Você pode personalizá-los e alterá-los para o conteúdo do seu coração, desde que saiba como.
O que é uma concha?
Quase todos os manuais do Unix e Linux têm o diagrama padrão de um invólucro em torno do sistema operacional, semelhante a algum tipo de barra de chocolate. O shell realmente não passa de uma interface entre o sistema operacional, incluindo o kernel, o sistema de arquivos e as várias chamadas do sistema e o usuário. Por muitos anos, foi a única interface de usuário interativa antes que as interfaces gráficas de usuário se tornassem comuns na década de 1980. As interfaces gráficas do usuário também podem ser consideradas um tipo de shell, pois servem muitas das mesmas funções: iniciar programas, configurar o sistema e gerenciar arquivos.
Essas humildes interfaces baseadas em texto têm uma quantidade surpreendente de poder. Por um lado, são linguagens de programação completas. Antes do surgimento de linguagens de script ainda mais poderosas, como o Python, os shell scripts eram ideais para escrever programas que não precisavam necessariamente do poder de C. Eles ainda são úteis para automatizar tarefas do sistema e para prototipagem rápida.
Eles também têm vários recursos que facilitam o trabalho e a localização de arquivos. Um dos mais amplamente utilizados é "curinga" ou "globbing". Quase todos os usuários de Unix e Linux estão familiarizados com o curinga "*" para corresponder a qualquer caractere. Este é realmente o trabalho do shell. Conchas diferentes têm opções ainda mais poderosas.
Uma das características distintivas do Unix é a capacidade de redirecionar a entrada e saída do programa. O shell implementa essa funcionalidade.
O shell é apenas mais um programa, portanto, é possível para qualquer programador com as habilidades certas criar um. Houve várias conchas principais que surgiram ao longo dos anos.
História e um resumo de conchas
Embora houvesse vários shells do Unix nos primeiros dias do sistema operacional, o primeiro a obter grande reconhecimento fora do Bell Labs foi o Bourne Shell, em homenagem a Stephen R. Bourne. A principal inovação do shell foi o suporte a recursos para programação estruturada, possibilitando, pela primeira vez, o uso como uma linguagem de programação real. É tão indispensável que todas as versões modernas de Unix e Linux ainda o utilizam, embora seja geralmente um dos shells mais recentes que emulam o shell Bourne.
O próximo shell principal foi o C Shell, geralmente abreviado como "csh". Esse shell foi desenvolvido na UC Berkeley, tornando-se um componente importante do sabor BSD do Unix. Como o nome sugere, sua sintaxe é projetada para se parecer com a linguagem de programação C, mas foi realmente projetada para uso interativo.
Ele incluía um mecanismo de histórico que permitia aos usuários voltar e repetir quaisquer comandos emitidos anteriormente, sem precisar redigitar uma linha inteira e melhorar o controle de tarefas, o que tornava mais fácil a execução de várias tarefas. (Lembre-se, era um momento em que a maioria das pessoas ainda usava terminais baseados em texto.)
A próxima grande concha foi a Korn Shell, que também saiu do Bell Labs. A concha foi nomeada após David Korn, não a banda, por sinal. A principal inovação do shell Korn é a introdução da edição por linha de comando, estendendo a funcionalidade do histórico ainda mais. Os usuários podem voltar e editar os comandos digitados usando comandos semelhantes aos editores do vi ou do Emacs.
Das conchas principais, o Bourne Again Shell, ou bash, é o mais popular desde a sua introdução no final dos anos 80. Esse shell, desenvolvido como parte do projeto GNU, incorpora as inovações dos shells C e Korn, mantendo a compatibilidade com o shell Bourne, daí o nome. É o shell "padrão" na maioria das distribuições Linux.
O Z Shell (zsh), lançado pela primeira vez em 1990, é o sonho de um usuário de linha de comando. Ele não só possui a maioria dos outros recursos importantes que os outros projetores têm, como é incrivelmente personalizável com muitos recursos poderosos. Um dos mais poderosos é o globbing recursivo, que permite aos usuários combinar nomes de arquivos em subdiretórios ao emitir comandos, em vez de arquivos no diretório de trabalho atual. Usuários realmente avançados também podem personalizar as opções de conclusão, combinando arquivos sem precisar digitá-los completamente. E para os digitadores de dedos gordos, também pode corrigir a ortografia. Esse shell é tão avançado que sua página de manual foi dividida em várias seções muito longas.
Script
Como mencionado anteriormente, os shells não são apenas interfaces de linha de comando, mas poderosas linguagens de programação. A vantagem do script de shell é que você pode usar a mesma linguagem tanto no uso interativo regular quanto nos scripts, o que torna a curva de aprendizado muito mais plana. Os shells modernos incluem todos os recursos usuais da linguagem de programação, incluindo controle de fluxo, funções e variáveis. Alguns deles têm estruturas de dados avançadas, como matrizes associativas.
Apesar de seu poder, a programação em conchas tem algumas armadilhas. O maior problema é que é muito fácil escrever scripts que dependem de algum programa que pode não estar em outro sistema ou que dependem de um tipo específico de Unix ou Linux. É por isso que os scripts shell são mais adequados para programas que você sabe que só serão executados em um sistema. Se você está tentando criar algo portátil e não deseja escrever um programa em C, sua melhor aposta é escrever em outra linguagem de script como Perl ou Python.
Uma espiada sob o capô da linha de comando Unix / Linux
Há mais poder à espreita abaixo da superfície da sua linha de comando Unix / Linux. Este artigo pode inspirá-lo a dar uma espiada sob o capô do seu shell favorito para ver o que você realmente pode fazer. Se você quiser entrar no script de shell, consulte os livros Unix Power Tools e Learning the Bash Shell. O artigo original de Stephen R. Bourne sobre seu shell também serve como uma boa introdução ao mundo dos scripts de shell, mesmo que seja antigo.
