O Shell
Por: André Souza ( 07/05/2001 )

O que é Shell?

Relembrando os artigos de "Linux mais a fundo" , shell é um programa que permite ao usuário iteragir com o sistema operacional através de comandos digitados do teclado. No DOS o shell era o command.com, que permitia executar alguns comandos como: cd, dir, ...

O shell mais famoso de Linux é o Bash, pois o mesmo oferece vários recursos que facilitam a vida do usuário. O mais básico é o sh. Em todos estes é possível criar scripts (mini-programas) que executam sequências de comandos, como se estivessem sidos digitados pelo usuário.

Lembremos que para um usuário normal, o shell aparece com o símbolo $ . Já para o root, o símbolo é o # .

Comandos

Qualquer dúvida em um dos comandos abaixo, rode o man. Por exemplo, se estiver com dúvida no comando ls :
$ man ls

LS
O ls é o comando mais básico de um shell. Ele serve para listar o conteúdo de um diretório, mostrando os arquivos que estão no mesmo.
Exemplos:

Listar o diretório atual:
$ ls

Listar o diretório /etc:
$ ls /etc

Listar o diretório atual mostrando todos os detalhes dos arquivos:
$ ls -l

Mostrar arquivos ocultos (que começam com . (ponto final)):
$ ls -a

Combinando os dois últimos comandos acima:
$ ls -la

PWD
O pwd mostra o diretório atual:
$ pwd

CD
CD vem de C hange D irectory (mudar de diretório) e serve justamente para mudar o diretório atual.
Exemplo:
$ pwd
/home/luke
$ cd /
$ pwd
/

MKDIR
O mkdir cria diretórios:
$ mkdir tmp

RMDIR
O rmdir apaga diretórios vazios (como o tmp acima):
$ rmdir tmp

RM
O rm serve para apagar arquivos:
$ rm imagem.jpg
Para apagar diretórios e seu conteúdo:
$ rm -rf tmp

DU
O comando du verifica o tamanho de diretórios e seus subdiretórios:
$ du /etc



Comandos (continuação)

DF

O df verifica o quanto você tem disponível nas suas partições e o quanto foi gasto:
$ df
Para visualizar melhor (em MegaBytes):
$ df -h

FREE
O free mostra quanto você tem de memória RAM e swap, gastos e livres:
$ free

FIND
O find procura por arquivos em um diretório e seus subdiretórios. Neste exemplo vou procurar arquivos JPG a partir do diretório atual:
$ find . -name *jpg
Agora vou procurar arquivos MPG no diretório do CDROM:
$ find /cdrom -name *mpg

WHOAMI
O whoami retorna o usuário logado no momento (que executou este comando):
$ whoami

WHO
O who mostra os usuários logados no sistema:
$ who

HOSTNAME
O hostname retorna o nome do computador (na rede, ou não) que se está usando:
$ hostname

SU
O su muda para o root ou para outro usuário:
$ su
Passwd:

ou
$ su baptista
Passwd:
$

ECHO
O echo escreve um conjunto de caracteres na tela:
$ echo "OLinux é um bom site!"
OLinux é um bom site!

MOUNT
O mount monta (ativa) devices:
$ mount /floppy

UMOUNT
O umount desmonta (desativa) devices:
$ umount /floppy

CAT
O cat imprime arquivos na tela:
$ cat README

MORE
O more imprime arquivos a tela, porém para esperando um retorno do teclado a cada tela cheia:
$ more README

GREP
O grep é uma ferramenta muito poderosa, principalmente para programadores. GREP = Generalized Regular Expression Parser. Facilitando para entender, ele procura por um texto dentro de uma arquivo. Neste exemplo procuro por "autor" dentro do "README":
$ grep autor README

PS
O ps mostra todos os processos (programas) que estão rodando na memória.
Vendo os processos do usuário:
$ ps
Vendo todos os processos do sistema (de todos os usuários):
$ ps aux

TOP
O top mostra todos os processos que estão rodando com várias outras informações do sistema:
$ top

TAR
O tar server para compactar e descompactar arquivos no formato .tar.gz (tar e gzip).
Compactando:
$ tar cvfz arquivo.tar.gz [arquivos|diretório]
Descompactando:
$ tar xvfz arquivo.tar.gz



Pipe

Podemos usar o símbolo especial | para fazer o que chamamos de pipe, que nada mais é do que a conexão da saída de dois programas.
Neste exemplo, eu vou procurar em todos os processos do sistema pelo que contém o texto "init":
$ ps aux | grep init
Ou seja, a saída de ps aux funciona como o arquivo para o grep init . É como fazer ps aux e gravar sua saída num arquivo chamado teste , por exemplo. E depois fazer grep init teste . Só que o pipe faz tudo automático, conectando a saída do ps com a entrada do grep neste exemplo (sem a necessidade de um arquivo intermediário).

Outro exemplo:
$ ls -l | more
Neste exemplo a saída do ls é usada pelo more . Ou seja, o ls -l é impresso na tela pausadamente, como se fosse um arquivo usado pelo more .

Redirecionamento

Além do pipe, podemos usar o redirecionamento. Para isso, usamos os símbolos < e > , significando entrada e saída respectivamente.

Vamos a um exemplo. Imagine que eu queira guardar o resultado do ls na tela. Então faria assim:
$ ls > teste
O arquivo teste foi criado com o que o ls imprimiria na tela.

Usando o Bash

Agora vamos ver algumas facilidades do bash.

O bash possui história, ou seja, cada vez que apertamos a tecla que representa uma seta para cima, temos um comando já executado anteriormente. Se apertamos uma vez, temos o último comando executado. Se apertamos duas vezes, temos o penúltimo comando executado. E assim por diante.

Quando estamos digitando um diretório ou arquivo, ao apertarmos a tecla TAB, nos aparece o nome do arquivo todo. Ou seja, ele é completado automaticamente para você. Caso não seja, o bash emite um som via speaker. Se você apertar o TAB e sair este som, aperte de novo o TAB que ele irá lhe mostrar as opções de complemento de nome.

Por exemplo, imagine que no diretório atual eu tenho dois arquivos: teste1.txt e teste2.txt . Agora digito (sem apertar ENTER):
$ cat t
Agora aperto TAB e ele completa o nome e emite o som:
$ cat teste
Então aperto TAB novamente e me aparecem as opções (pois ele não sabe qual eu quero):
$ cat teste
teste1.txt teste2.txt

Basta eu digitar mais um caractere (1 ou 2):
$ cat teste1
E apertar TAB novamente:
$ cat teste1.txt
Agora aperto ENTER e pronto.

Conclusão

Bom, por essa semana é só. Treinem os comandos de shell pois são muito importantes.

Qualquer dúvida escrevam no fórum ou por email. Sugestões e críticas também são bem vindas.



Copyright (C) 1999-2000 Linux Solutions