Bash e scripts Bash

Sumário

7.1. O que é o shell?
7.2. Gravando scripts shell
7.3. Redirecionando eventos de comando
7.4. Usando álias
7.5. Usando variáveis no Bash
7.6. Agrupando e combinando comandos
7.7. Trabalhando com construções de fluxo comuns
7.8. Para obter mais informações

Resumo

Atualmente, muitas pessoas usam computadores com uma GUI (interface gráfica de usuário) como KDE ou GNOME. Embora ofereçam muitos recursos, elas ficam com uso limitado quando se trata da execução de tarefas automáticas. Shells são bons aliados das interfaces gráficas, por isso este capítulo apresenta uma visão geral de alguns aspectos dos shells, neste caso, o Bash.

O que é o shell?

Tradicionalmente, o shell é o Bash (Bourne again Shell). Quando este capítulo menciona o shell, ele se refere ao Bash. Na verdade, existem mais shells disponíveis além do Bash (ash, csh, ksh, zsh, …), cada um deles empregando recursos e características diferentes. Se você precisar de mais informações sobre outros shells, procure por shell no YaST.

Conhecendo os arquivos de configuração do Bash

Um shell pode ser acionado como:

  1. shell de login interativo. Esse tipo é usado para efetuar login em uma máquina, chamando o Bash com a opção --login, ou para efetuar login em uma máquina remota com SSH.

  2. shell interativo comum. Normalmente esse é o caso quando se inicia o xterm, o konsole, o gnome-terminal ou ferramentas semelhantes.

  3. shell não interativo. Esse tipo é usado para chamar um script shell na linha de comando.

Dependendo do tipo de shell usado, variam os arquivos de configuração lidos. As tabelas seguintes mostram os arquivos de configuração de shell de login e sem login.

Tabela 7.1. Arquivos de configuração do Bash para shells de login

Arquivo

Descrição

/etc/profile

Não modifique esse arquivo, senão as suas modificações poderão ser destruídas durante a próxima atualização!

/etc/profile.local

Use esse arquivos se for estender /etc/profile

/etc/profile.d/

Contém arquivos de configuração de programas específicos para todo o sistema

~/.profile

Insira aqui a configuração específica de usuário para os shells de login


Tabela 7.2. Arquivos de configuração do Bash para shells sem login

/etc/bash.bashrc

Não modifique esse arquivo, senão as suas modificações poderão ser destruídas durante a próxima atualização!

/etc/bash.bashrc.local

Use esse arquivo para inserir suas modificações apenas do Bash em todo o sistema

~/bashrc

Insira aqui a configuração específica de usuário


Além desses, o Bash usa mais outros arquivos:

Tabela 7.3. Arquivos especiais do Bash

Arquivo

Descrição

~/.bash_history

Contém uma lista de todos os comandos que você digitou

~/.bash_logout

Executado durante o logout


Estrutura de diretórios

A tabela a seguir fornece uma breve visão geral dos mais importantes diretórios de nível superior encontrados em um sistema Linux. Informações mais detalhadas sobre os diretórios e subdiretórios importantes são encontradas na lista a seguir.

Tabela 7.4. Visão geral de uma árvore de diretório padrão

Diretório

Conteúdo

/

Diretório raiz — o ponto de partida da árvore do diretório.

/bin

Arquivos binários essenciais, como comandos necessários pelo administrador do sistema e por usuários comuns. Geralmente contém os shells, como o Bash.

/boot

Arquivos estáticos do carregador de boot.

/dev

Arquivos necessários para acessar dispositivos específicos de host.

/etc

Arquivos de configuração do sistema específicos de host.

/home

Contém os diretórios pessoais de todos os usuários que possuem conta no sistema. Contudo, o diretório pessoal do root não está em /home, ele está em /root.

/lib

Bibliotecas compartilhadas e módulos de kernel essenciais.

/media

Pontos de montagem de mídia removível.

/mnt

Ponto de montagem para montar temporariamente um sistema de arquivos.

/opt

Pacotes de aplicativos complementares.

/root

Diretório pessoal do superusuário root.

/sbin

Binários essenciais do sistema.

/srv

Dados de serviços fornecidos pelo sistema.

/tmp

Arquivos temporários.

/usr

Hierarquia secundária com dados apenas leitura.

/var

Dados variáveis, como arquivos de registro.

/windows

Disponível apenas se você tiver o Microsoft Windows* e o Linux instalados no sistema. Contém os dados do Windows.


A lista a seguir fornece informações mais detalhadas e alguns exemplos de arquivos e subdiretórios encontrados nos diretórios:

/bin

Contém comandos básicos do shell que podem ser usados pelo root e por outros usuários. Esses comandos incluem ls, mkdir, cp, mv, rm e rmdir. /bin também contém o Bash, que é o shell padrão do SUSE Linux Enterprise Desktop.

/boot

Contém dados necessários para inicializar, como o carregador de boot, o kernel e outros dados usados para que o kernel possa executar programas em modo de usuário.

/dev

Contém arquivos de dispositivos que representam componentes de hardware.

/etc

Contém arquivos de configuração local que controlam a operação de programas como o X Window System. O subdiretório /etc/init.d contém scripts que são executados durante o processo de boot.

/home/nome_do_usuário

Contém os dados privados de todos os usuários que possuem uma conta no sistema. Os arquivos localizados aqui apenas podem ser modificados por seu proprietário ou pelo administrador do sistema. Por padrão, seu diretório de e-mail e sua configuração de área de trabalho pessoal estão localizados aqui, na forma de arquivos e diretórios ocultos. Usuários do KDE encontram os dados de configuração pessoal da área de trabalho em .kde ou .kde4. Os usuários do GNOME os encontram em .gconf.

[Note]diretório pessoal em um ambiente de rede

Se você estiver trabalhando em um ambiente de rede, seu diretório pessoal poderá ser mapeado para um diretório no sistema de arquivos diferente de /home.

/lib

Contém as bibliotecas compartilhadas essenciais necessárias para inicializar o sistema e executar os comandos no sistema de arquivos raiz. O equivalente no Windows para as bibliotecas compartilhadas são os arquivos DLL.

/media

Contém pontos de montagem para mídia removível, como CD-ROMs, cartões USB e câmeras digitais (se usarem USB). /media geralmente mantém qualquer tipo de unidade, exceto o disco rígido do seu sistema. Assim que a mídia removível for inserida ou conectada no sistema e estiver montada, você poderá acessá-la a partir daqui.

/mnt

O diretório fornece um ponto de montagem para um sistema de arquivos montado temporariamente. O root pode montar os sistemas de arquivos aqui.

/opt

Reservado para a instalação de software adicional. Software opcional e pacotes de programas complementares maiores são encontrados aqui. O KDE3 fica localizado aqui, ao passo que o KDE4 e o GNOME agora ficam em /usr.

/root

Diretório pessoal do usuário root. Os dados pessoais do root estão localizados aqui.

/sbin

Como indicado pelo s, esse diretório contém utilitários do superusuário. /sbin contém os binários essenciais para boot, restauração e recuperação do sistema, além dos binários em /bin.

/srv

Contém dados de serviços fornecidos pelo sistema, como FTP e HTTP.

/tmp

Esse diretório é usado por programas que exigem o armazenamento temporário dos arquivos.

/usr

/usr não tem relação com os usuários, trata-se de um acrônimo de recursos de sistema do UNIX. Os dados em /usr são estáticos e apenas leitura, podendo ser compartilhados entre vários hosts em conformidade com o FHS (Filesystem Hierarchy Standard - Padrão da Hierarquia do Sistema de Arquivos). Esse diretório contém todos os programas aplicativos e estabelece uma segunda hierarquia no sistema de arquivos. O KDE4 e o GNOME também estão localizados aqui. /usr contém alguns subdiretórios como /usr/bin, /usr/sbin, /usr/local e /usr/share/doc.

/usr/bin

Contém programas geralmente acessíveis.

/usr/bin

Contém programas reservados ao administrador do sistema, como as funções de reparo.

/usr/local

Nesse diretório, o administrador do sistema pode instalar extensões locais e independentes de distribuição.

/usr/share/doc

Contém vários arquivos de documentação e as notas de versão do sistema. No subdiretório manual, você encontra uma versão online deste manual. Se houver mais de um idioma instalado, esse diretório poderá conter versões dos manuais em idiomas diferentes.

Em packages, você encontra a documentação incluída nos pacotes de software instalados no sistema. Para cada pacote, é criado um subdiretório /usr/share/doc/packages/nome_do_pacote, geralmente contendo arquivos README do pacote e, por vezes, exemplos, arquivos de configuração ou scripts adicionais.

Se houver HOWTOs instalados no sistema, /usr/share/doc também conterá o subdiretório howto, com documentação adicional sobre muitas tarefas relacionadas a configuração e operação do software Linux.

/var

Ao passo que /usr contém dados estáticos apenas leitura, /var destina-se aos dados gravados durante a operação do sistema, portanto variáveis, como arquivos de registro ou de spool. Para obter uma visão geral dos arquivos de registro mais importantes que estão em /var/log/, consulte a Tabela 28.1, “Arquivos de registro”.

/windows

Disponível apenas se você tiver o Microsoft Windows e o Linux instalados no sistema. Contém os dados do Windows disponíveis na partição Windows do sistema. A sua capacidade de editar dados nesse diretório depende do sistema de arquivos usado pelas partições Windows. No caso do FAT32, você pode abrir e editar os arquivos desse diretório. No caso de NTFS, o SUSE Linux Enterprise Desktop também inclui suporte ao acesso de gravação. Porém, o driver do sistema de arquivos NTFS-3g possui funcionalidade limitada.