quarta-feira, 23 de dezembro de 2015

Programando com shell BASH



Programando com shell BASH



Nos últimos anos estamos testemunhando o crescente aumento da popularidade e do uso do sistema UNIX, para os programadore s de computadores isso não é nenhuma surpresa, UNIX foi desenhado e oferece uma gama muito grande de funções e aplicativos para desenvolvedores.

No entanto com o advento do LINUX, essa popularidade ganhou um incremento de crescimento geométrico, visto que o sistema foi muito bem aceito nos meios acadêmicos, e mais recentemente com o desenvolvimento de psetodes mais atraentes e seu desenvolvimento voltado para usuários comuns, tornou o LINUX extremante fácil de ser operado, e com o domínio da exploração de suas funcionalidades se tornou uma grande opção para usuários domésticos, empresas, além de que Governos do mundo inteiro vem adotando o sistema como padrão.
Mas vamos falar de SHELL, o shell e o prompt de comando do UNIX, ou terminal
existem vários sabores de Shell e todos eles podem ser utilizados no LINUX, porém a versão padrão do LINUX e o BASH.
O shell é um programa que fornece um ambiente consistente e fácil de usar para a execução de programas em UNIX/LINUX.
A função do shell é ler os comandos digitados e, em seguida, pedir o kernel UNIX para executar estes comandos ele proporciona construções de programas sofisticados para tomadas de decisões, executar um grupo de comandos, criar funções, e armazenar e alterar valores em variáveis.
O BASH e derivado do shell chamado de Bourne. Quando Dennis Ritche e Ken
Thompson estavam desenvolvendo o UNIX no início da década de 1970, eles usaram um shell muito simples. escrito por Stephen Bourne, O shell Bourne original foi ligeiramente alterado ao longo dos anos; alguns recursos foram adicionados e outros foram removidos, mas a sua sintaxe e seu poder resultante permaneceram os mesmos.
O shell permite a criação de scripts. Scripts são arquivos que contêm uma
lista de comandos que você deseja executar. Os scripts permitem combinar sequencias de comandos e programas o que ajuda muito na resolução de problemas, e na automação de tarefas cotidianas tornado a vida dos usuários mais fácil e produtiva.
O shell e como uma grande caixa de ferramentas, que possibilita a construção de programas completos e complexos para resolver os mais variados problemas, no entanto para desenvolvê-los e necessário conhecimentos dessas ferramentas e de como trabalhar com cada uma delas funciona, este curso tem por objetivo apresentar as mais importantes funções do BASH, e demonstrar inúmeras funcionalidades, oque dará a você uma grande fonte de conhecimento para começar a desenvolver scripts e a trabalhar com o Shell Bash interativamente.

Antes que você possa construir coisas usando o shell, você precisa aprender algumas noções básicas. Vamos analisar o seguintes tópicos:
  • comandos
  • o e shell
É hora de começar.

Em UNIX/Linux(daqui para frente só vou me referir a LINUX), um comando é um programa que você executa. Em desporto de sistemas operacionais, como o Mac OS Linux ou Windows, você executa um programa cliqando em seu ícone. Para executar um comando no shell, você digita seu nome e pressione Enter.
Por exemplo:
Executando o comando who que mostra quem esta logado no sistema.

edson@ed-net:~$ who

edson :0 2015-12-07 08:05 (:0)

edson pts/0 2015-12-07 08:06 (:0.0)

edson pts/1 2015-12-07 10:22 (:0.0)

edson@ed-net:~$


Mostra usuário data e hora de login, muito útil para administradores de sistemas.

No Bash temos dois tipo básicos de modo de operação, repare que existe o sinal de cifrão, $ ele indica que o usuário esta logado como usuário comum e não pode fazer alterações no sistema. Agora veja outro exemplo:

Para obter privilégios de administrador e preciso que o usuário pertença ao grupo root, e para poder usar privilégios administrativos e preciso se tornar root, isto e obtido com o comando sudo su; Como segue:

edson@ed-net:~$ sudo su

root@ed-net:/home/edson#

Veja que o sinal $ mudou e agora existem um hashtag #.

# e o simbolo do root.

No shell podemos usar comando simples comandos complexos e comandos compostos.

Comando simples:

O who e um exemplo de comando simples, que você pode executar apenas digitando seu nome na linha de comando e pressionando enter:

$ comando

Comandos complexos
Você pode usar o who para obter informações sobre si mesmo e só você executá-lo da seguinte forma:

root@ed-net:/home/edson# who i am

edson pts/1 2015-12-07 10:22 (:0.0)

root@ed-net:/home/edson# ^C

root@ed-net:/home/edson#

Isto passa as seguintes informações:
Meu nome é edson.
Eu estou conectado ao terminal pts / 0.
Eu fiz login as 08:49 em 09 de dezembro.

Este comando também introduz o conceito de um comando complexo, que é um comando que consiste em um nome de comando e de argumentos.

Argumentos são modificadores que alteram o comportamento de um comando. Neste caso, o nome do comando é who, e os argumentos são am e i.
Quando executamos o who comandam como um comando simples, ele exibe informações sobre todos os que estão logados no sistema . é o comportamento padrão do comando.
Os argumentos am e i vão mudar o comportamento do who para listar apenas as informações sobre você.
A maioria dos comandos aceitam argumentos para modificar seu comportamento.
A sintaxe formal para um comando complexo é:

$ Comando argument1 argument2 Argument3 ... argumentoN

Aqui, o comando é o nome do comando que você deseja executar, e argument1 até o argumentoN são os argumentos que você passa para os comandos.

Comandos Compostos.

Uma das facilidades mais interessantes do shell e poder combinar comando na mesma linha, formando comandos complexos, que são utilizados para osmais variados usos:
EX:

Se eu quiser informações sobre meu processador posso consultar o arquivo cpuinfo utilizando o comando cat. Isso me passa uma lista enorme que aqui vou abreviada.

root@ed-net:/home/edson/Documentos# cat /proc/cpuinfo

processor : 0

vendor_id : AuthenticAMD

cpu family : 20

model : 2

model name : AMD C-70 APU with Radeon(tm) HD Graphics

stepping : 0

microcode : 0x500010d

cpu MHz : 800.000



Se eu quiser informações apenas do modelo, posso conseguir usando um comando composto de cat e grep.
Para isso preciso separar os comando com um pipe | isso faz com que a saída de um programa seja a entrada de outro.:

root@ed-net:/home/edson/Documentos# cat /proc/cpuinfo | grep 'model name'


model name : AMD C-70 APU with Radeon(tm) HD Graphics

model name : AMD C-70 APU with Radeon(tm) HD Graphics



Outro exemplo

root@/home/edson/Documentos# cat /proc/cpuinfo | grep 'model name' ; who

model name : AMD C-70 APU with Radeon(tm) HD Graphics

model name : AMD C-70 APU with Radeon(tm) HD Graphics

edson :0 2015-12-07 08:05 (:0)

edson pts/0 2015-12-07 08:06 (:0.0)

edson pts/1 2015-12-07 10:22 (:0.0)

root@ed-net:/home/edson/Documentos#

Veja que agora eu inclui mais um comando o who separados por ; que o comando separador, assim sempre que eu quiser dar vários comandos seguidos na mesma linha tenho que separá-los com ponto e virgula ; .

Então pipe | direciona a saída de um comando para outro, e ponto e virgula concatena vários comandos separados, cat | grep e diferente de cat ; grep.

Então aprendemos como executar um comando simples complexo e compostos,mas como é que o computador sabe o que você quer fazer com comando cat?

O computador usa um programa especial chamado shell; Para descobrir isso. O shell fornece com uma interface para o sistema para você dar entrada. e executa os comandos (programas) com base nessa entrada.
Uma característica muito importante do shell e que ele e um interpretador de comandos ou seja não é preciso compilar seus scripts para que ele rode.
Para usuários familiarizados com o Windows, o shell UNIX é semelhante ao shell DOS, COMMAND.COM.

O shell UNIX é muito mais do que um interpretador de comandos. Também é uma poderosa linguagem de programação completa, com declarações condicionais, loops e funções.
Se você estiver familiarizado com esses tipos de declarações de outras linguagens de programação, ótimo. Você vai pegar o jeito do shell rapidamente. Caso contrário, não se preocupe. No decorrer das minhas postagens você vai se familiarizar e aprender como usar o shell bash.

Só para constar existem diferentes tipos de shell


Em UNIX, existem dois grandes tipos de shell:
  • O shell Bourne (inclui sh, ksh e bash)
  • O shell C (csh e tcsh inclui)
Se você estiver usando um shell tipo Bourne , o prompt padrão é o caractere $. Se você estiver usando um shell do tipo C, o prompt padrão é o caractere %. Minhas postagens abrangeram apenas shells Bash (Bourne Again Shell).

As diferentes shells Bourne tipo seguir:

  • Bourne shell (sh)
  • Korn (ksh)
  • Bourne Again shell (bash)

As diferentes shells tipo C:

  • C shell ( csh)

  • TENEX/TOPS C shell ( tcsh)

O Bourne Again Shell 'BASH'
O BASH, foi desenvolvido como parte do projeto GNU e substituiu o Bourne
shell, sh, para sistemas baseados em GNU como Linux. Todas as principais distribuições Linux, incluindo Red Hat, Slackware, e Debian, tem como padrão o bash .

Nenhum comentário:

Postar um comentário