O que é script de shell e por que você deve usá-lo

O que é script de shell e por que você deve usá-lo

O shell é um programa dentro de um sistema operacional Linux ou Unix que permite inserir comandos para execução pelo sistema. Quando uma janela de terminal é aberta em um computador Linux, ele inicia o programa shell que apresenta uma interface para inserir comandos. Essa interface é conhecida como interface de linha de comando. Quando um comando é inserido, ele é executado pelo shell e a saída é exibida na tela.





Além de ser capaz de aceitar e executar comandos interativamente, o shell também pode executar comandos armazenados em um arquivo. Este modo de execução é conhecido como script de shell , e neste artigo cobrimos os conceitos básicos de script de shell.





1. História da Shell

Começando com o Unix na década de 1970, havia um programa shell chamado de V6 Shell desenvolvido por Ken Thomson. Era um shell interativo e não tinha capacidade de script.





Foi seguido pelo Bourne Shell em 1977 e permanece em uso hoje como o shell padrão para o raiz conta. Este shell adicionou habilidades de script que se provaram extremamente úteis na prática ao longo dos anos.

O desenvolvimento posterior do shell na década de 1980 deu origem a muitas variantes de shell populares, as mais populares das quais eram o C-Shell e a Korn Shell . Cada um desses shells trazia sua própria sintaxe que, em certos casos, era drasticamente diferente do shell original.



Um dos shells mais populares hoje é o Bash Shell . Bash significa Bourne-Again-Shell e é uma variante amplamente melhorada do Bourne Shell original.

melhores aplicativos para assistir filmes grátis

Neste artigo, descrevemos scripts de shell para o Bash Shell .





2. Executando um Shell Script

Como você executa um script de shell? Simples. Basta passar o caminho do script como um argumento para o shell:

Um exemplo de script de shell:





echo 'hello world'

Execute-o da seguinte maneira:

$ bash hello.sh
# prints
hello world

Observação: O shell requer que as linhas sejam encerradas por caracteres LF (Line-Feed). Se você escrever seu script de shell no Windows e tentar executá-lo diretamente em um sistema Linux, poderá ocorrer erros. O Windows usa a combinação CR-LF (Carriage-Return-Line-Feed) para terminação de linha. Isso precisa ser convertido apenas para LF. Verifique seu editor do Windows para saber como fazer isso.

Existe outra maneira de executar um script de shell diretamente como um comando. Insira a seguinte linha (o hashbang declaração) como a primeira linha de seu script de shell.

aplicativo mais popular do mundo
#!/bin/bash

Com essa mudança, nosso script de shell simples agora é:

#!/bin/bash
echo 'hello world'

Agora, você precisa tornar o arquivo de script executável da seguinte maneira:

$ chmod +x hello.sh

Neste ponto, você pode executar o arquivo de script diretamente, sem precisar fazer referência ao shell explicitamente.

$ hello.sh
# prints
hello world

Vejamos agora algumas vantagens de usar scripts de shell.

3. Automação de Tarefas

A primeira vantagem de usar scripts de shell é automatizar tarefas executadas com frequência. Suponha que você tenha uma tarefa que precisa realizar todos os dias. Se você precisa executar vários comandos em seu sistema Linux todos os dias, pode armazenar esses comandos em um arquivo e executar o script. Exemplos incluem:

  • Arquive e carregue um arquivo ou pasta todos os dias para um instalação de armazenamento em nuvem como S3.
  • Compacte os arquivos de log que tendem a crescer todos os dias.
  • Obtenha preços de ações, analise os dados obtidos e acione um e-mail ou SMS quando certas condições forem atendidas (preços muito altos ou muito baixos).

4. Combinando vários comandos

Além de automatizar tarefas frequentes, você também pode achar vantajoso combinar várias sequências de comandos em um único comando. Lembrar de um único comando é muito mais simples do que vários comandos, sem mencionar a ordem em que devem ser executados.

Um exemplo seria a seqüência de inicialização do próprio sistema operacional Linux. Como parte da inicialização, o sistema operacional executa uma série de comandos para colocar o sistema em um estado adequado. Esses comandos são, na verdade, scripts de shell que vivem sob o / etc diretório. Se você der uma olhada em um desses scripts de shell, perceberá a complexidade de inicializar um sistema, que pode ter sido executado manualmente na ausência de scripts de shell.

A seguir está um exemplo de script de shell, / etc / profile , que é executado cada vez que um usuário efetua login. Imagine digitar esses comandos manualmente!

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ '$PS1' ]; then
if [ '$BASH' ] && [ '$BASH' != '/bin/sh' ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='h:w$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ '`id -u`' -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi

5. Mais fácil de desenvolver

É possível executar as mesmas ações que um script de shell dentro de um programa normal escrito em C / C ++. No entanto, é muito mais fácil escrever e depurar um script de shell do que um programa C / C ++. Especialmente para tarefas de administração de sistema que incluem execução de comandos externos, criação e remoção de arquivos e diretórios, redirecionamento de saída, etc.

Os programas C / C ++ são melhores para um nível de operação muito mais baixo, como invocar chamadas do sistema, manipular estruturas de dados, etc.

6. Transparência

Um script de shell, por ser um arquivo de texto, pode ser facilmente visualizado para verificar quais ações está executando. Por outro lado, a única maneira de saber o que um programa escrito em uma linguagem como C / C ++ (e compilado em um executável) está fazendo é se ele decidir informá-lo ou se você tiver acesso ao código-fonte. Por exemplo, você pode verificar se um script de shell está excluindo algum arquivo e, se precisar desses arquivos, poderá copiá-los para um local diferente.

Também é muito mais fácil diagnosticar problemas com scripts de shell em vez de programas regulares, pois você pode examinar o código-fonte. Esse script está falhando porque não existe um diretório? Você pode examinar o código do script e criar o diretório (embora um script de shell bem comportado deva verificar e criá-lo para evitar tais erros).

7. Portátil

PARA script de shell pode ser transferido para outros sistemas operacionais Unix e semelhantes ao Unix e executado (se o próprio shell estiver presente). Mesmo ao transferir um script de shell de diferentes arquiteturas, como x86, MIPS, Sparc, etc, os scripts de shell são muito mais portáveis ​​do que os programas C / C ++.

A única maneira de um programa C / C ++ ser transferido e usado em outro sistema é copiar o código-fonte, construir o programa e tentar executá-lo. Mesmo assim, pode não funcionar como esperado se usar código específico da arquitetura.

Agora que você tem uma ideia do que são scripts de shell e suas muitas vantagens, não gostaria de usá-los para suas tarefas? Que problemas você enfrentou ao usá-los? Por favor, deixe-nos saber nos comentários abaixo.

como encontrar um grupo secreto no facebook
Compartilhado Compartilhado Tweet O email 5 dicas para turbinar suas máquinas Linux VirtualBox

Cansado do fraco desempenho oferecido pelas máquinas virtuais? Aqui está o que você deve fazer para aumentar o desempenho do VirtualBox.

Leia a seguir
Tópicos relacionados
  • Programação
  • Linux Bash Shell
Sobre o autor Jay Sridhar(17 artigos publicados) Mais de Jay Sridhar

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever