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

O que é a Shell?

Descubra o que é o Shell e como seu aprendizado pode torná-lo um cientista de dados mais eficiente e versátil.
abr. de 2024  · 13 min leer

Script gráfico para 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 realizar auditorias de rotina. 

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

O que é uma 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. 

A criação de scripts de shell não é uma linguagem única, mas, como usa alguns comandos de linguagem natural, é fácil de aprender, mesmo sem 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. 

O script de shell é uma das maneiras mais simples de configurar a automação. Usando comandos Linux ou Unix, o script de shell oferece aos cientistas 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 localizar um comando no manual: man command 

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

Diferentes tipos de conchas

Bourne Shell

Por mais legal que o nome possa sugerir, 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 comumente usado, foi criado em 1979 por Stephen Bourne no Bell Labs. Como seu antecessor, o shell Thompson, o nome de arquivo executável do Bourne é sh.

O shell Bourne é o shell padrão do sistema operacional Solaris. Apesar de sua idade, o shell Bourne é popular 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. 

As solicitações de Bourne incluem:

  • Comando full-path: /bin/sh e /sbin/sh
  • Padrão de usuário não raiz:  $
  • Padrão do usuário root: #

linha de comando

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

Ao contrário do shell Bourne, o shell C é interativo e reconhece command history e aliases. Os shells C também incluem sintaxe de expressão semelhante à do C e aritmética incorporada.

Os prompts da linha de comando incluem: 

  • Comando full-path:  /bin/csh
  • Nome de host padrão de usuário não raiz: %
  • Nome de host padrão do usuário root: #

KornShell

O KornShell, 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 e, portanto, compatível com as versões anteriores do shell Bourne. 

O KornShell é executado mais rapidamente do que o C-shell. Ele executa scripts do shell Bourne e apresenta arrays, funções e recursos de manipulação de strings do tipo C. Além disso, ele apresenta aritmética integrada. 

Os prompts do KornShell incluem:

  • Comando full-path: /bin/ksh
  • Padrão de usuário não raiz: $
  • Padrão do usuário root: #

Shell GNU Bourne-Again

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

Os prompts do GNU Bourne-Again incluem:

  • Comando full-path: /bin/bash
  • Prompt padrão do usuário não raiz: bash-x.xx$ 
  • Padrão do usuário root: bash-x.xx#

O que o shell scripting faz

Essa analogia é um pouco simplista, mas imagine os scripts de shell como 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, encapsulamento de texto e manipulação de arquivos. 

Os scripts de shell podem executar 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, esses ainda são scripts de shell. Outras linguagens de script, 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 seus favoritos, e falaremos um pouco sobre as vantagens e desvantagens dos shells. 

Por que a Shell é tão popular?

O Shell é comum em quase todos os sistemas operacionais porque é eficiente e facilmente atualizável. Ele monitora o sistema do seu 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 dos scripts de 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 de grande porte 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 a Shell foi criada?

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 liberou 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 a Shell ganhou seu nome

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

Características da casca

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

Processamento em segundo plano

Uma das maiores vantagens dos scripts de shell é que eles 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 não sequencialmente. Para executar um script de shell em segundo plano, os usuários só precisam adicionar 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 corresponder a qualquer cadeia de caracteres, até mesmo cadeias vazias. ? corresponde a um único caractere, [example] corresponde a qualquer caractere ("exemplo" é apenas um exemplo) e [1-9] (outro exemplo) instrui o shell a corresponder aos caracteres dentro do intervalo. 

Aliases de comando

Os aliases de shell são comandos de atalho. Alguns aliases são uma única palavra e 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 particularmente conveniente é o histórico de comandos. Em vez de redigitar os comandos, o comando history mostra todos os comandos que foram usados durante essa sessão.

Substituição de nome de arquivo

A substituição de nome de arquivo também é conhecida como "globbing". Quando uma palavra contém caracteres como ?, *, ou [, ou começa com ~, o shell verá a palavra como um padrão e será substituída 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) permite que os usuários troquem a entrada padrão (stdin) e a saída padrão (stdout) para que sejam associadas à tela do monitor, ao teclado ou a um arquivo. 

Tubulação

O piping 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 traduz o código para algo que seja 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. 

Como os shells variam

Há dois tipos principais de shells: "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 estendido. 

O Bash usa up-gradation para obter mais funcionalidades, suporta controles de trabalho, é mais fácil de usar do que o sh e suporta o histórico de comandos. O Sh não oferece suporte ao histórico de comandos; seu script funciona em qualquer shell e é mais portátil.  

Como a Shell evoluiu ao longo dos anos

Ao longo dos anos, as conchas evoluíram e permaneceram mais ou menos as mesmas. 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. 

Há potencialmente tantos shells quanto usuários, mas, fundamentalmente, há dois tipos de shells: linhas de comando ou Bourne. Qualquer outra coisa é um dialeto e não um idioma 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. Eles também oferecem recursos de edição e histórico.

Linha de comando do Tenex

A linha de comando Tenex (tcsh) foi desenvolvida por Ken Greer, da Universidade Caregia Melo.  O Tenex foi considerado um aprimoramento da versão original de 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. 

Conchas Korn

Os shells Korn (ksh) são outro shell do Unix, mas são uma espécie de compromisso entre os shells C e Bourne, com 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 novamente conchas

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 Bourne shell. 

Conchas exóticas

Embora todos tenham sido criados com base em shells C ou Bourne, os programadores criaram centenas, se não 1.000, de dialetos diferentes. Algumas são úteis e outras são simplesmente divertidas. 

Quem usa o Shell?

Quase todas as pessoas que usam um computador se beneficiam do shell, mas eles são especialmente úteis para administradores de sistemas, pessoas 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 simples saudação bash, por exemplo, lê, echo “hello $USER”, enquanto os scripts complexos do shell são quase ilimitados.  Aqui estão alguns exemplos básicos: 

Exemplo 1: Usando um loop while no bash

Crie um arquivo no bash usando um editor adequado. Aqui usamos o editor vi.
 
$ vi example.sh
 
Isso 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. 
Executar usando bash example.sh 
Exemplo 2:  Aceitar entradas do terminal pelos usuários
 
Crie outro arquivo no editor vi: 
$vi example2.sh
 
Digite 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"
Executar 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 na Shell

Em vez de um caminho de carreira, pense no script de shell como uma ferramenta útil 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 algumas funções que exigem especificamente scripts de shell. O salário médio é de aproximadamente US$ 78.000. Dito isso, os scripts de shell são um bloco de construção para funções como administradores de sistema, que podem gerar salários de seis dígitos. 

Conclusão

O Shell é como uma cadeia de caracteres que percorre 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 da DataCamp. 

FAQs da 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 é a concha?

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

Quais são os benefícios do shell?

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

Quais são as desvantagens do shell?

Um único erro pode ser muito caro e 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; ele é um kernel. O Unix, entretanto, inclui o kernel, o shell e os programas. 

Quais shells são comumente usados nos sistemas Linux e Unix?

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

O que é a sintaxe do shell?

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

O que é um intérprete?

Um interpretador interpreta instruções individuais em código de máquina. 

O que é um compilador?

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

Como você executa um arquivo de shell?

Definir permissão com: 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 descubra se essa é a carreira certa para você!

Jose Jorge Rodriguez Salgado

12 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

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

10 min

blog

O que é o Kaggle?

Saiba o que é o Kaggle e por que ele é uma das plataformas mais populares para cientistas de dados. Obtenha respostas para as perguntas mais frequentes do Kaggle.
Çağlar Uslu's photo

Çağlar Uslu

12 min

blog

O que é ciência de dados? Definição, exemplos, ferramentas e muito mais

A ciência de dados é um campo interdisciplinar que usa métodos científicos, processos, algoritmos e sistemas para extrair conhecimento e percepções de dados estruturados e não estruturados.
Matt Crabtree's photo

Matt Crabtree

15 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