Conceitos do Shell

Agora serão dados alguns conceitos necessários para a utilização do shell (neste caso o bash) e também com algumas noções sobre a organização do sistema de arquivos no Linux.

O sistema de arquivos no Linux é semelhante a uma árvore de cabeça para baixo. Existe inicialmente o diretório raiz, e abaixo deste a estrutura que segue na Tabela 8.1. Estrutura de Diretórios do Linux:

[Note]Nota

Diretório também pode ser considerado como uma pasta.

Tabela 8.1. Estrutura de Diretórios do Linux

Diretório

Descrição dos arquivos que estão nesse diretório

/

Diretório raiz do sistema de arquivos. É abaixo dele que se situam todos os outros.

/bin

Arquivos executáveis de comandos essenciais.

/boot

Arquivos necessários à inicialização do sistema.

/dev

Arquivos de dispositivos do sistema.

/etc

Arquivos de configuração do sistema.

/home

Lugar onde ficam as pastas locais dos usuários.

/lib

Arquivos de bibliotecas essenciais ao sistema, utilizadas pelos programas em /bin.

/mnt

Usualmente é o ponto de montagem de dispositivos na máquina, ou dispositivos de rede.

/proc

Informações do kernel, dos processos e interrupções da máquina.

/root

Pasta local, ou home, do superusuário.

/sbin

Arquivos relacionados diretamente ao sistema. Normalmente só o superusuário tem acesso a estes arquivos.

/tmp

Pasta de arquivos temporários.

/usr

Arquivos pertencentes aos usuários, bem como documentação do sistema, dentre outros tipos de arquivos.

/var

Pasta onde são guardadas informações variáveis sobre o sistema.

Não será necessário, por enquanto, compreender as funções de todas as pastas enumeradas acima. A idéia é fornecer uma visão global de onde estão os arquivos que serão mencionados mais adiante e aqueles que já foram vistos.

Aproveitando que está sendo falado de sistema de arquivos, será comentado um detalhe muito importante: os nomes de arquivos no Linux são case-sensitive, ou seja, distinguem maiúsculas de minúsculas e vice-versa. Sendo assim, um nome de arquivo como: Teste é diferente de teste e também de tesTe, assim como as possíveis variações de maiúsculas e minúsculas da palavra teste.

Note bem que aqui não é utilizada extensão de arquivos, como é necessário em outros sistemas operacionais. Na realidade, no Linux esta característica "não existe" de uma maneira que limite a implementação. Observe que existem arquivos do tipo start.pl no Linux. Esse tipo de nome de arquivo é perfeitamente possível pelo fato de os nomes de arquivos poderem ter até 255 caracteres, independendo de quais sejam os caracteres. Ou seja, as extensões não existem como forma limitante do nome do arquivo, elas são parte do nome do arquivo. Alguns aplicativos utilizam as extensões para poder manipular os arquivos, ou seja, as extensões estão presentes, mas como parte do nome do arquivo e não como um item obrigatório.

[Tip]Dica

No Linux existe um recurso muito interessante chamado de Tab Completion. Quando você está digitando um comando ou nome de arquivo muito longo, basta que você digite os primeiros caracteres desse comando e aperte a tecla Tab que o shell se encarrega de completar o resto do nome. Nem todos os nomes podem ser completados até o final pelo fato de existirem outras opções no processo de complementação. Então, o shell para de completar e emite um bip avisando que não conseguiu completar totalmente a sentença. Caso você aperte Tab novamente, o shell irá lhe mostrar as opções que você tem para completar a sentença.

O modo texto do Linux é composto por terminais. Um terminal, ou console, é o conjunto formado pelo teclado e o monitor, que constitui o dispositivo padrão de entrada e saída de dados. Imagine o seguinte: você tem vários conjuntos de monitor e teclado que estão ligados na mesma CPU. Enquanto você está digitando um texto num desses terminais, o outro está executando um processo demorado, como uma procura no disco. No Linux, existem terminais virtuais que podem ser ativados e alternados pela seqüência de teclas Ctrl-Alt-Fn, onde n é um número entre um e sete. Ou seja, você tem sete terminais virtuais, como padrão, nos quais pode estar trabalhando ao mesmo tempo. [37].

No Linux, não existe somente o teclado como meio de entrada de dados, pois esta pode ser dada através de um arquivo, um mouse e/ou qualquer outro dispositivo. Essa entrada pode ser direcionada para outros lugares também, como outro arquivo, o monitor ou uma impressora. Esse redirecionamento é feito de diversas maneiras, utilizando os caracteres > e >> para redirecionar o local de saída[38] e os caracteres < e << para redirecionar a entrada.



[37] Isso só é possível pelo fato de o Linux ser multitarefa.

[38] A saída padrão, também chamada stdout é o terminal onde está sendo executado o comando.