Pular para o conteúdo principal
InicioBlogCiência de dados

O que é o Shell?

Descubra o que é o Shell e como aprendê-lo pode tornar você um cientista de dados mais eficiente e versátil.
Actualizado jul. de 2024  · 13 min leer

Gráfico de um script de computador

Se estiver trabalhando em um sistema operacional (SO) da Microsoft, da Apple ou do Linux, você está usando scripts de shell, talvez sem saber. Na verdade, você interage com shells toda vez que inicializa o sistema operacional Linux. 

Os scripts de shell ajudam programadores, cientistas de dados e usuários casuais a economizar tempo e evitar tarefas repetitivas com a automação. Por exemplo: os scripts podem realizar backups diários, instalar patches, monitorar sistemas e atividades e fazer auditorias de rotina. 

Os shells leem comandos bastante intuitivos prontos para uso humano e os transformam em algo que o sistema entenderá. 

O que é um Shell?

Um shell é um tipo de programa de computador chamado de interpretador de linha de comando que permite que os usuários de Linux e Unix controlem seus sistemas operacionais com interfaces de linha de comando. Os shells permitem que os usuários se comuniquem de forma eficiente e direta com seus sistemas operacionais. 

Os scripts de shell não são uma linguagem única, mas, como ele usa alguns comandos em linguagem natural, é fácil de aprender, mesmo que você não tenha experiência em programação. No entanto, cada dialeto de script de shell é considerado uma linguagem e, se você planeja atividades mais complexas, os shells exigem muita prática. 

Um script de shell é uma das maneiras mais simples de configurar a automação. Usando comandos Linux ou Unix, os scripts de shell oferecem aos profissionais de ciência de dados, DevOps e TechOps estruturas de controle condicional e de loop para repetir comandos.

Os scripts de shell nem sempre têm o mesmo nome. Sh, Bash (o mais comum), csh, e tesh são todos scripts de shell. No sistema operacional VM da IBM, eles são chamados de EXEC; no DOS, os scripts de shell são chamados de arquivos em lote. 

Um shell tem duas categorias: shell de linha de comando e shell gráfico. Os shells de linha de comando são acessados por meio de interfaces de linha de comando, nas quais os sistemas recebem entrada em comandos legíveis por humanos e, em seguida, usam as interfaces de linha de comando para exibir a saída. 

Os shells gráficos usam uma interface gráfica do usuário (GUI) para realizar interações e operações essenciais, como abrir, fechar e salvar arquivos. 

Aqui estão alguns exemplos de comandos do shell

Para saber em qual diretório você está: pwd

Para encontrar um comando no manual: man command 

Para tornar um arquivo de texto rolável: less file 1 ou more file 1 

Diferentes tipos de shell

Shell Bourne

Por mais legal que o nome pareça, o shell Bourne não tem nada a ver com espiões e perseguições de carros em alta velocidade. O shell Bourne, o segundo shell Unix mais usado, foi criado em 1979 por Stephen Bourne no Bell Labs. Assim como seu antecessor, o shell Thompson, o nome do arquivo executável do Bourne é sh.

O shell Bourne é o shell padrão do sistema operacional Solaris. Apesar de sua idade, o shell Bourne faz sucesso hoje em dia devido à sua velocidade e compactação. No entanto, o shell Bourne não é muito interativo e não consegue se lembrar de seu command history.. Ele também não tem expressão lógica e aritmética. 

Alguns prompts do Bourne são:

  • Caminho completo do comando: /bin/sh e /sbin/sh
  • Padrão de usuário não raiz:  $
  • Padrão do usuário raiz: #

linha de comando

O shell C, com nome de arquivo csh e nome de arquivo anterior tcsh, é outro shell Unix do final dos anos 70. Foi criado por Bill Joy, que na época era estudante de pós-graduação da Universidade da Califórnia, em Berkeley. 

Diferentemente do shell Bourne, o shell C é interativo e reconhece o command history e aliases. Os shells C também incluem sintaxe de expressão semelhante à do C e aritmética integrada.

Os prompts da linha de comando incluem: 

  • Caminho completo do comando:  /bin/csh
  • Nome de host padrão de usuário não raiz: %
  • Nome de host padrão do usuário raiz: #

KornShell

O KornShell, com nome de arquivo ksh, foi desenvolvido no início da década de 1980 por David Korn no Bell Labs. O KornShell inclui muitos dos recursos do shell C e é um superconjunto das versões anteriores do shell Bourne, sendo, portanto, compatível com elas. 

O KornShell é executado mais rapidamente do que o C-shell. Ele executa scripts do shell Bourne e conta com matrizes, funções e recursos de manipulação de strings semelhantes aos do C. Além disso, conta com aritmética integrada. 

Os prompts do KornShell incluem:

  • Caminho completo do comando: /bin/ksh
  • Padrão de usuário não raiz: $
  • Padrão do usuário raiz: #

Bourne Again Shell GNU

O Bourne Again Shell, ou Bash, é uma alternativa de código aberto ao shell Bourne. Foi projetado por Brian Fox para o Projeto GNU e lançado em 1989. Além de ser totalmente compatível com o shell Bourne, ele usa muitos dos melhores recursos dos KornShells e shells C. O shell Bourne Again GNU tem teclas de direção mapeadas automaticamente para edição e recuperação de comandos. 

Os prompts do Bourne Again GNU incluem:

  • Caminho completo do comando:  /bin/bash
  • Prompt padrão de usuário não raiz: bash-x.xx$ 
  • Padrão do usuário raiz: bash-x.xx#

O que os scripts de shell fazem

Essa analogia é um pouco simplista, mas imagine os scripts de shell como funções de preenchimento automático para programadores. Em vez de digitar comandos em um teclado, um de cada vez, o shell usa sequências de comandos em scripts únicos que os usuários podem iniciar com um simples nome de arquivo na linha de comando. Os scripts de shell executam programas, organizam a disposição de textos e manipulam arquivos. 

Os scripts de shell podem realizar várias tarefas, incluindo monitoramento de tarefas como uso de disco, realização de backups, criação de ferramentas de comando, manipulação de arquivos, execução de programas, vinculação de programas, conclusão de lotes etc.

Principais alternativas ao shell

No sistema operacional VM da IBM, eles são chamados de EXEC; no DOS, os scripts de shell são chamados de arquivos em lote. No entanto, continuam sendo scripts de shell. Outras linguagens que envolvem scripts, como Javascript, Python, Perl e TCL, também são linguagens de script. Não é de surpreender que todos os profissionais de informática tenham suas preferências, e vamos falar das vantagens e desvantagens dos shells daqui a pouco. 

Por que o Shell é tão popular?

O Shell é comum em quase todos os sistemas operacionais porque é eficiente e facilmente atualizável. Ele monitora o sistema do computador e executa backups de rotina sem que você precise se preocupar com isso. 

Não há necessidade de alternar as sintaxes porque as sintaxes e os comandos do shell são idênticos aos inseridos na linha de comando. Além disso, é fácil e rápido escrever scripts de shell: eles são iniciados rapidamente e são fáceis de depurar. 

Quais são as desvantagens de scripts do Shell?

Os scripts de shell podem ser propensos a erros e difíceis de diagnosticar quando ocorrem problemas. Os shells não foram projetados para tarefas complexas ou grandes e sua execução é lenta. Além disso, os shells não oferecem muita estrutura de dados, e pode haver falhas de sintaxe ou de design. 

Quando o Shell foi criado?

O primeiro script de shell foi criado no início da década de 1960 por Louis Pouzin, membro da equipe de informática do MIT. Sua primeira linha de comando foi RUNCOM, que libertou os cientistas da computação de tarefas repetitivas, como compilar, atualizar, renomear e mover. 

Embora Pouzin não fosse um especialista em linguagem de computador, ou talvez porque não fosse, ele acreditava que as linhas de comando poderiam ser uma linguagem por si só. 

Em meados da década de 1960, Pouzin se uniu ao cientista britânico Christopher Strachey. Strachey projetou um gerador de macros que serviu de base para a linguagem de comando de Pouzin, que foi executada no que era, na época, o sistema operacional Multics de última geração. 

Como o Shell recebeu esse nome

Pouzin batizou sua nova linguagem de "shell" porque ela é a camada mais externa dos sistemas operacionais. 

Características do Shell

Os shells fazem sucesso entre os programadores porque são concisos. No entanto, isso não significa que sejam básicos. Os shells oferecem vários recursos, incluindo:

Processamento em segundo plano

Uma das maiores vantagens dos scripts de shell é que podem ser executados em segundo plano. Dependendo do comando, os shells podem ser executados em primeiro ou segundo plano. Os processos em primeiro plano são visíveis na tela e só podem ser executados sequencialmente. 

Os processos em segundo plano não aparecem na tela e podem ser executados de forma não sequencial. Para executar um script de shell em segundo plano, os usuários só precisam incluir um E comercial (&) no final do script. 

Substituições curinga

As substituições curinga permitem que os sistemas processem mais de um comando ao mesmo tempo ou encontrem trechos de frases em arquivos de texto. Por exemplo: * diz ao sistema para encontrar qualquer cadeia de caracteres, até mesmo cadeias vazias. ? busca um único caractere, [example] busca qualquer caractere ("example" é apenas um exemplo) e [1-9] (outro exemplo) instrui o shell a buscar caracteres dentro do intervalo. 

Aliases de comando

Os aliases de shell são comandos de atalho. Alguns aliases são uma única palavra, enquanto outros são uma única letra. Para ver a lista de aliases, os usuários só precisam digitar ·alias.

Histórico de comandos

Há muitas maneiras de os shells economizarem tempo e esforço, mas um recurso bastante conveniente é o histórico de comandos. Em vez de digitar novamente os comandos, o comando history mostra todos os comandos que foram usados durante a sessão.

Substituição de nomes de arquivo

A substituição de nomes de arquivo também é conhecida como "globbing" ou recurso de curinga. Quando uma palavra contém caracteres como ?, * ou [, ou quando começa com ~, o shell interpreta a palavra como um padrão e a substitui por uma lista alfabética de nomes de arquivos que correspondem ao padrão. 

Redirecionamento de entrada/saída 

O redirecionamento de entrada/saída (i/o, abreviação de input/output) permite que os usuários troquem a entrada padrão (stdin, standard input) e a saída padrão (stdout, standard output) para que sejam associadas à tela do monitor, ao teclado ou a um arquivo. 

Pipes

Um pipe do shell é outro tipo de redirecionamento que envia a saída de um comando/processo/programa para outro comando/processo/programa. Isso permite que os comandos/processos/programas operem simultaneamente e possibilita a transferência contínua de dados sem a necessidade de passar pela tela do monitor ou por arquivos de texto temporários. 

Substituição de variáveis do shell

Quando o shell encontra uma expressão que contém caracteres especiais, ele converte o código em algo mais reconhecível pelos usuários. Esse processo é chamado de substituições de variáveis ou simplesmente variáveis. 

As variáveis também são usadas por programadores mais experientes. Se, por exemplo, um programador não souber os valores reais antes de executar um programa, ele poderá usar a variável como um espaço reservado antes que o código esteja pronto para execução. 

Diferenças entre os shells

Há dois tipos principais de shell: "shell" (sh) e "bash". Ambos são executados no sistema operacional Unix. Shell é um nome genérico para a criação de scripts em qualquer shell. Como o nome indica, o bash (Bourne Again Shell) é um shell aprimorado e ampliado. 

O bash usa upgrades para aumentar a funcionalidade, oferece suporte a controles de trabalho, é mais fácil de usar do que o sh e permite acesso ao histórico de comandos. O sh não oferece suporte ao histórico de comandos; seus scripts funcionam em qualquer shell e são mais portáteis.  

Como o Shell evoluiu ao longo dos anos

Ao longo dos anos, os shells evoluíram e permaneceram mais ou menos os mesmos. O shell Bourne foi um grande avanço em relação ao shell Thompson original, mas muitas das funções originais permanecem. É claro que os computadores e nossas expectativas mudaram. 

Em tese, o número de shells poderia ser tão grande quanto o número de usuários, mas há basicamente dois tipos de shell: linhas de comando ou Bourne. Qualquer outra variação é um dialeto, e não uma linguagem diferente. 

Shells Unix

Os shells Unix são os originais e ainda estão em alta. Os shells Unix funcionam em sistemas operacionais Unix e relacionados a Unix, como Macs.  

Linhas de comando

As linhas de comando (csh) são os shells mais comuns do Unix. As linhas de comando são excelentes para o trabalho interativo, incluindo aliases, cdpath, controle de trabalho, hashing de caminho, pilhas de diretórios etc. Também oferecem recursos de edição e histórico.

Linha de comando do Tenex

A linha de comando do Tenex (tcsh) foi desenvolvida por Ken Greer, da Universidade Caregia Melo.  O Tenex foi considerado um aprimoramento da versão original da linha de comando. Diferentemente do C original, o Tenex oferece edição e conclusão de linha de comando, entre outros recursos. Em 1981, o tsch se fundiu com o csh. 

Shells Korn

Os shells Korn (ksh) são outro shell do Unix, mas são como um meio termo entre os shells C e Bourne, mantendo compatibilidade retroativa com o último. O shell Korn foi desenvolvido no início da década de 1980 por David Korn no Bell Labs. 

Bourne Again Shells

O Bourne Again Shell (Bash) é um shell Unix de código aberto que foi escrito no final dos anos 90 por Brian Fox para o projeto GNU como uma atualização do shell Bourne. 

Shells exóticos

Embora todos tenham sido criados com base em shells C ou Bourne, os programadores desenvolveram centenas, se não milhares, de dialetos diferentes. Alguns são úteis, e outros são simplesmente divertidos. 

Quem usa o Shell?

Quase todas as pessoas que usam um computador se beneficiam de shells, mas eles são úteis sobretudo para administradores de sistemas, profissionais de DevOps, programadores e cientistas de dados. Os shells são usados para automatizar tarefas e aplicativos, instalar pacotes, fazer backup ou restaurar dados e, é claro, para programação. 

Exemplos de Shell

Os shells são tão básicos ou tão complexos quanto o usuário desejar. Uma saudação simples do bash, por exemplo, é echo “hello $USER”, enquanto os scripts complexos do shell são quase ilimitados.  Veja alguns exemplos básicos: 

Exemplo 1: como usar um loop while no bash

Crie um arquivo no bash usando um editor adequado. Aqui usamos o editor vi.
 
$ vi example.sh
 
Esse comando abre um editor com um arquivo chamado example.sh
Pressione a tecla “i” para começar a inserir o código:
#!/bin/bash
valid=true
count=1
while [ $valid ]
do
echo $count
if [ $count -eq 10 ];
then
break
fi
((count++))
done
Pressione escape seguido de “:wq” para salvar e retornar ao terminal. 
Execute usando bash example.sh 
Exemplo 2:  como aceitar entradas do terminal por parte dos usuários
 
Crie outro arquivo no editor vi: 
$vi example2.sh
 
Insira o código no editor:
#!/bin/bash
echo "Enter first number"
read x
echo "Enter second number"
read y
((sum=x+y))
echo "The result of addition = $sum"
Execute usando bash example2.sh
 
Para saber mais sobre comandos úteis do shell para ciência de dados, confira este tutorial sobre Comandos úteis do shell.

Carreiras com Shell

Em vez de uma trajetória profissional, pense nos scripts de shell como ferramentas úteis no arsenal de um cientista de dados. Os profissionais de dados de todos os tipos precisam conhecer várias linguagens (ou pelo menos deveriam), e os scripts de shell os ajudam a usar as linguagens com mais eficiência. 

Ainda assim, algumas empresas têm cargos que exigem especificamente conhecimento de scripts de shell. O salário médio é de cerca de US$ 78.000. Dito isso, os scripts de shell são um componente básico de cargos como administradores de sistema, que podem levar a salários acima dos US$ 100.000. 

Conclusão

O shell passa por todas as linguagens de programação. Os comandos complexos são reduzidos a abreviações concisas e intuitivas. Entender o shell é uma habilidade importante para qualquer cientista de dados ou engenheiro de computação. Aprenda sobre shell no curso Introdução ao Shell do DataCamp. 

Perguntas frequentes sobre o shell

O que é o kernel?

O kernel é a parte mais essencial do sistema operacional. O kernel é responsável pela alocação de memória e tempo para os programas do computador e gerencia as comunicações e o armazenamento de arquivos em resposta às chamadas do sistema. 

O que é o shell?

O shell é a interface entre o kernel e o usuário. 

Quais são as vantagens do shell?

Já sabemos que o shell é eficiente e cuida de muitas das tarefas entediantes do usuário. No entanto, além disso, os shells permitem que os usuários personalizem os scripts para atender às próprias necessidades. 

Quais são as desvantagens do shell?

Um único erro pode custar caro e ser difícil de identificar. Além disso, os shells não são muito portáteis entre sistemas operacionais. 

Qual é a diferença entre Unix e Linux?

O Linux é um clone do Unix que foi desenvolvido por Linus Torvalds. O Linux não é, por si só, um sistema operacional; é um kernel. O Unix, entretanto, inclui o kernel, o shell e os programas. 

Quais shells costumam ser usados nos sistemas Linux e Unix?

O bash, ou Bourne Again Shell, é o mais usado, mas tanto o Linux quanto o Unix também oferecem suporte a linhas de comando, KornShells e TCSH.

O que significa sintaxe do shell?

Na linguagem natural, sintaxe diz respeito a como as palavras e frases são organizadas. A sintaxe do shell é muito semelhante: refere-se à ordem das operações.

O que é um interpretador?

Um interpretador analisa instruções individuais e as transforma em códigos de máquina. 

O que é um compilador?

Um compilador converte programas de alto nível em uma linguagem de máquina mais complexa. 

Como faço para executar um arquivo de shell?

Configure a permissão usando: chmod+x script-name-here.sh

Em seguida, execute-o com: ./script-name-here.sh ou sh script-name-here.sh.

Temas
Relacionado
Data Science Concept Vector Image

blog

Como se tornar um cientista de dados em 8 etapas

Descubra tudo o que você precisa saber sobre como se tornar um cientista de dados e se essa é a carreira certa para você!

Jose Jorge Rodriguez Salgado

12 min

blog

Um roteiro de ciência de dados para 2024

Você quer começar ou crescer no campo da ciência de dados? Este roteiro de ciência de dados ajuda você a entender e a começar no cenário da ciência de dados.
Mark Graus's photo

Mark Graus

15 min

blog

Competições da Kaggle: O guia completo

Saiba tudo sobre as competições da Kaggle. Descubra o que são, como ter sucesso e quando e por que você deve fazê-las.
Çağlar Uslu's photo

Çağlar Uslu

18 min

blog

O que é o R? Introdução à poderosa linguagem de computação estatística

Aprenda tudo o que você precisa saber sobre a linguagem de programação R e descubra por que é a linguagem mais usada na ciência de dados.
Summer Worsley's photo

Summer Worsley

18 min

blog

As 10 principais ferramentas de ciência de dados a serem usadas em 2024

As ferramentas essenciais de ciência de dados para iniciantes e profissionais de dados, para que possam ingerir, processar, analisar, visualizar e modelar os dados com eficiência.
Abid Ali Awan's photo

Abid Ali Awan

9 min

tutorial

Como escrever um script Bash: um tutorial simples de scripts Bash

Descubra os fundamentos da criação de scripts Bash e aprenda a escrever um script Bash.
Kurtis Pykes 's photo

Kurtis Pykes

5 min

See MoreSee More