Tutoriais

Introdução ao shell

Mas afinal, o que é o shell? O shell é uma parte que compõe o sistema operacional, responsável por interagir ou popularmente falando (conversar), com o usuário. Além disso ele é o interpretador de comandos do GNU/Linux, também conhecido como prompt de comandos, que lê os comandos digitados por nós usuários, interpreta e executa o que foi digitado. 

O shell de uma maneira mais fácil, é como se fosse um interprete entre o usuário e o computador e vice versa. Abaixo temos uma imagem que explica o contexto do shell e as camadas de software.

Linux: Shell do GNU/Linux

Essa imagem representa as camadas de software que integram ou compõem um sistema operacional. Na parte baixa temos o hardware, e mais acima o kernel, que é responsável por interagir com o hardware. Subindo mais um pouco temos outra camada de software, o shell, que como já foi dito, interpreta tudo o que é digitado e faz as solicitações para o kernel, que consulta o hardware. 

E depois o hardware carrega o que foi pedido em um endereço de memória, manda para o kernel, que devolve para o shell, que traz a resposta do que foi pedido para o usuário. 

Veja essa essa outra imagem.

8ZdL IDjYYZFyiK2NLnQl OqcyEKegWyFNYz25mSurV5 LiWghal9eoralJTw UDlThch GnM9Y0WxID5bdJfeK bU9BzCcsoFw9s1WX2qhpws8hkgzT8a1Tc Pp4dKQmTAZ3L9I

Prompt do shell: o prompt é representado pelo simbolo “$” cifrão, onde pode variar algumas informações contidas como, o usuário, nome do computador, diretório corrente.

RTUvcOrqETLWjULSJ2uaYHIqTkWZew3Ss05ZeALj0AEgq0ZMPtEgx1SOlEArvfGgbtGk2uUCdb6JZghUrGQhb1o ZkWzqC4X8m2frSWG1ALKW4Brs3 cw BpjhjQJWZYWLwK5a9

Essa simbologia nos dá informações que são muito importantes de se saber, ela mostra qual usuário que esta utilizando o sistema no momento, que neste caso é um usuário comum onde está usando a máquina, veja o símbolo “$”. Já se o simbolo for uma “#” (cerquilha), diz que se trata do superusuário, mais conhecido como usuário (root).

2U8VH1 YNDViQSF79Z

Superusuário: Ele é o administrador do sistema GNU/Linux, é muito especial, pois pode fazer tudo no sistema, alterar qualquer arquivo, excluir usuários, fazer configurações etc. 

Tipos de shell e variáveis

Tipos de shell: Dentro da camada que corresponde ao shell, que foi mostrada na primeira imagem do artigo, é importante falar que para o GNU/Linux esta camada é como se fosse um programa, que roda assim que o sistema é carregado. Existem vários tipos de shell, o primeiro foi o:

  • C-shell: Que era um shell derivado da linguagem C, tivemos também o:
  • P-shell, K-shell, porém o mais utilizado hoje em dia é o:
  • bash: O nome vem de Bourne Again Shell, e atualmente é o mais completo e robusto interpretador de comados.

Mais funcionalidades do shell: É importante saber que o shell, além de ser um interpretador de comandos, também nos proporciona um ambiente de programação (programação em shell script), onde podemos automatizar diversas tarefas, reduzindo o trabalho do administrador GNU/Linux.

Variáveis do shell

Variáveis ambientais: O shell e seu funcionamento pode ser configurado ou customizado através das variáveis ambientais, que são posições de memória que guardam determinados valores que é lido pelo interpretador de comandos para que possamos configurar ou customizar o shell.

Exitem vários tipos de variáveis ambientais, cada uma com funções diferentes, temos a variável PS1 (Prompt String 1), esta variável armazena o prompt de comando do bash, e é representada pelo simbolo $ (cifrão) que aparece no terminal do GNU/Linux. Temos também a PS2 (Prompt String 2, ou Prompt String Extended), esta é muito usada. Quando precisamos digitar no prompt de comandos e precisamos de mais de uma linha, usamos esta variável.

Tenha em mente que as variáveis não afetam o funcionamento do shell, elas apenas fornecem informações uteis para o usuário, como o diretório corrente, usuário logado etc. Para visualizar qualquer variável ambiental, basta digitar no terminal o comando:

$ echo $PS

Veja que antes de listar a variável ambiental PS1 com o comando echo $PS1, estou mostrando algumas outras variáveis, que também podemos listar seu conteúdo com o comando echo $(nome da variável).

Caracteres especiais: O caractere “” (contra barra) é um metacaractere que mostra para o interpretador de comandos que o próximo carácter depois da contra barra tem que ser interpretado como ele é. E não processado, como se fosse um programa em shell script.

Exemplo de prompt: Geralmente o prompt de comandos do GNU/Linux vem da seguinte forma:

u@h:w$

Este formato trás informações importantes, pois o u mostra o nome do usuário, h é utilizado para representar o nome do sistema (hostname), e por último mas bastante importante é o w, que mostra o diretório corrente. Veja o exemplo abaixo, que estamos no diretório /home.

hGbb2VTmBNcJeypI zDaOXLL9Hk6FC0T6CVGrIzUZJ9rxxkYPqCjGatUUtee1ORqYrVhDjT5G9 hctpMk0Mutez F08eykiwVReriMBo 7gOZzrR4B1yd1vCB6FqJBeogcIkbzLN

É importante lembrar que o shell diferencia letrar maiúsculas de minúsculas, sendo assim muito cuidado ao digitar comandos.

Variável PATH: Esta variável é muito importante, pois ela armazena uma lista de diretórios onde será acessado pelo sistema operacional para a execução de programas, caso ele não encontre a localização do programa desejado na variável PATH, dará um erro. Para visualizar a variável PATH, é só dar o comando:

$ echo $PATH

Diretório HOME: É um diretório especial, onde cada usuário tem o seu diretório home, ele é como se fosse a casa do usuário, possuindo todas as permissões para criar, alterar e apagar qualquer arquivo dentro do seu diretório home. Veja o meu diretório home e como visualizar o conteúdo dentro dele:

$ ls -l /home/elviseliton/
Cjb 2bwDGEhViBdGau18NDa33Y1BFEx6EO2wxBVu1oC8K3ZlBCpo7b2fx2Kb RDUYS9nQkhQN7jC61kPnZAbWz6oOFcLsQBMPWc2ymGOUx43W5v0XVT aDnzV4LGDNt9 TFhPA7

Ordem de execução: É importante saber que o shell segue uma ordem para localizar e executar os comandos digitados, veja a imagem com essa ordem:

npivlrOgT1IQnQ4BVXmpFMXqtid3efeCeXWASIPbdvmVqcAB8iUvAc4UEOgjNc7pXZG1iObCMo3c2jSBijyqfnYjKjaQikt5TKaVDn5caanz aUyQJA 2wo JG6dO5lJDFETHfcm

Explicação: No primeiro passo o shell verifica se o que foi digitado é uma instrução interna. Uma instrução interna é um comando ou alguma solicitação que faz parte do shell, e ele não precisa chamar nenhum outro programa externo para executar o que foi pedido pelo usuário.

Se o que foi digitado não for uma instrução interna, significa que é um comando ou programa que precisa ser carregado na memória para que o mesmo possa ser executado. Caso seja um programa, o shell verifica se o mesmo está em algum diretório dentro da variável PATH que falei a pouco, caso não esteja no caminho PATH, o shell faz uma verificação se o caminho deste programa foi passado, caso não, isso gerará um erro para o usuário. Caso sim, ele vai executar o programa solicitado.

Visualizar todas as variáveis: Para que possamos visualizar todas as variáveis ambientais que são suportadas e carregadas pelo nosso interpretador de comandos, use o seguinte comando:

$ set

Essa imagem é um resumo, mas quando vocês digitarem no terminal vai aparecer mais informações. Não coloquei a imagem completa, pois iria ficar muito grande. 

Alguns comandos e conclusão

Alguns comandos que podemos usar no shell: Existem muitos comandos que podemos utilizar no shell do GNU/Linux, vou demostrar apenas alguns, caso queira se aprofundar mais. Termos a nossa querida internet e só pesquisar, então o que vai ser mostrado aqui, é apenas o básico.

Comando:

$ ls

Descrição: Lista informações sobre os arquivos, no diretório atual por padrão. Temos diversas opções para este comando.

RfgXW78v7lvHc gqSXfIi1 YDi8iN2HYPuM1mjZP4b067BfP

Comando:

$ cat

Descrição: Mostra o conteúdo de um arquivo, mas também podemos utilizar para criar arquivos:

$ cat > nome do arquivo

Depois escreva o conteúdo do arquivo e em seguida aperte enter para ir para outra linha vazia, depois as teclas Ctrl + D, para salvar. A imagem abaixo só mostra o conteúdo do arquivo.

0vmEPu6NHqf5ywsVogwnXWvI4sABmKWMauZZw2ictpH2 nwakUMzyPvmkJIyjhVysR36mnniLZ1IayXc9tP01wNp2UsBMF0keV jwl9RQt0yrgBILrziup3Lnbv SWojqEwBGiTy

Comando:

$ mkdir

Descrição: Cria diretórios, para que possamos organizar os nossos arquivos.

shzxMPxprt6R2I3bU

Comando:

$ aptitude show [nome_do_programa]

Descrição: Mostra uma descrição do programa desejado, se está instalado, versão, e até as dependências do programa.

Obs.: Somente em distribuições baseadas no Debian.

Conclusão

O shell do GNU/Linux, como foi mostrado neste artigo, é uma ferramenta muito poderosa, onde é de suma importância conhecermos bem para configurar e customizar nosso sistema GNU/Linux. Ele dispensa os assistente de configuração do modo gráfico e, através dele, podemos configurar tudo direto na raiz, com mais clareza e transparência (na minha opinião).

Estou aberto a comentários construtivos sobre o artigo aqui publicado, em breve escreverei artigos sobre configuração de servidores GNU/Linux.

Neste artigo usei as seguintes ferramentas:

  • Sistema operacional: Debian 6.0 “Squeeze”
  • Editor de texto: LibreOffice 3.4.6
  • Edição de imagens: Shotwell Photo Viewer

Fonte: Viva o Linux

Diolinux Ofertas - Aproveite os melhores descontos em diversos produtos!