Este capítulo traz explicações sobre os principais componentes existentes no computador e do sistema operacional.
Hardware - Significa parte física do computador (disquete, impressoras, monitores, placa mãe, placa de fax, discos rígidos, etc).
Software - São os programas usados no computador (sistema operacional, processador de textos, planilha, banco de dados, scripts, comandos, etc).
É onde gravamos nossos dados. Um arquivo pode conter um texto feito por nós, uma música, programa, planilha, etc.
Cada arquivo deve ser identificado por um nome, assim ele pode ser
encontrado facilmente quando desejar usa-lo. Se estiver fazendo um trabalho de
história, nada melhor que salva-lo com o nome historia
. Um
arquivo pode ser binário ou texto (para detalhes veja Arquivo texto e binário, Section
2.2.3).
O GNU/Linux
é Case Sensitive ou seja, ele diferencia
letras maiúsculas e minúsculas nos arquivos. O arquivo
historia
é completamente diferente de Historia
. Esta
regra também é válido para os comandos e diretórios.
Prefira, sempre que possível, usar letras minúsculas para identificar seus
arquivos, pois quase todos os comandos do sistema estão em minúsculas.
Um arquivo oculto no GNU/Linux
é identificado por um "."
no inicio do nome (por exemplo, .bashrc
). Arquivos ocultos não
aparecem em listagens normais de diretórios, deve ser usado o comando ls
-a para também listar arquivos ocultos.
A extensão serve para identificar o tipo do arquivo. A extensão são as letras após um "." no nome de um arquivo, explicando melhor:
relatorio.txt
- O .txt indica que o
conteúdo é um arquivo texto.
script.sh
- Arquivo de Script (interpretado por
/bin/sh
).
system.log
- Registro de algum programa no
sistema.
arquivo.gz
- Arquivo compactado pelo utilitário
gzip
.
index.html
- Página de Internet (formato
Hypertexto).
A extensão de um arquivo também ajuda a saber o que precisamos fazer para
abri-lo. Por exemplo, o arquivo relatorio.txt
é um texto simples
e podemos ver seu conteúdo através do comando cat, Section 7.1, já o arquivo
index.html
contém uma página de Internet e precisaremos de um
navegador para poder visualiza-lo (como o lynx
,
Mosaic
ou o Netscape
).
A extensão (na maioria dos casos) não é requerida pelo sistema operacional
GNU/Linux
, mas é conveniente o seu uso para determinarmos
facilmente o tipo de arquivo e que programa precisaremos usar para abri-lo.
A unidade de medida padrão nos computadores é o bit. A um conjunto de 8 bits nós chamamos de byte. Cada arquivo/diretório possui um tamanho, que indica o espaço que ele ocupa no disco e isto é medido em bytes. O byte representa uma letra. Assim, se você criar um arquivo vazio e escrever o nome GNU/Linux e salvar o arquivo, este terá o tamanho de 5 bytes. Espaços em branco e novas linhas também ocupam bytes.
Além do byte existem as medidas Kbytes, Mbytes, Gbytes. Esta medidas servem para facilitar a leitura em arquivos de grande tamanho. Um arquivo de 1K é a mesma coisa de um arquivo de 1024 bytes (K vem de Kilo que é igual a 1000 - 1Kilo é igual a 1000 gramas certo?).
Da mesma forma 1Mb (ou 1M) é igual a um arquivo de 1024K ou 1.048.576 bytes (M vem de milhão que é igual a 1000000, fácil não?).
1Gb (ou 1G) é igual a um arquivo de 1024Mb ou 1048576Kb ou 1.073.741.824 bytes (1 Gb é igual a 1.073.741.824 bytes, é muita letra!). Deu pra notar que é mais fácil escrever e entender como 1Gb do que 1.073.741.824 bytes :-)
Quanto ao tipo, um arquivo pode ser de texto ou binário:
Diretório é o local utilizado para armazenar conjuntos arquivos para melhor
organização e localização. O diretório, como o arquivo, também é
"Case Sensitive" (diretório /teste
é
completamente diferente do diretório /Teste
).
Não podem existir dois arquivos com o mesmo nome em um diretório, ou um sub-diretório com um mesmo nome de um arquivo em um mesmo diretório.
Um diretório nos sistemas Linux/UNIX
são especificados por uma
"/" e não uma "\" como é feito no
DOS
. Para detalhes sobre como criar um diretório, veja o comando
mkdir
(mkdir, Section
6.4).
Este é o diretório principal do sistema. Dentro dele estão todos os diretórios do sistema. O diretório Raíz é representado por uma "/", assim se você digitar o comando cd / você estará acessando este diretório.
Nele estão localizados outros diretórios como o /bin, /sbin, /usr,
/usr/local, /mnt, /tmp, /var, /home,
etc. Estes são chamados de
sub-diretórios pois estão dentro do diretório
"/
". A estrutura de diretórios e
sub-diretórios pode ser identificada da seguinte maneira:
A estrutura de diretórios também é chamada de Árvore de Diretórios porque é parecida com uma árvore de cabeça para baixo. Cada diretório do sistema tem seus respectivos arquivos que são armazenados conforme regras definidas pela FHS (FileSystem Hierarchy Standard - Hierarquia Padrão do Sistema de Arquivos) versão 2.0, definindo que tipo de arquivo deve ser armazenado em cada diretório.
É o diretório em que nos encontramos no momento. Também é chamado de diretório atual. Você pode digitar pwd (veja pwd, Section 6.3) para verificar qual é seu diretório padrão.
O diretório padrão também é identificado por um "." (ponto). O
comando comando ls . pode ser usado para listar os arquivos do
diretório atual (é claro que isto é desnecessário porque se não digitar nenhum
diretório, o comando ls
listará o conteúdo do diretório atual).
Também chamado de diretório de usuário. Em sistemas GNU/Linux
cada usuário (inclusive o root) possui seu próprio diretório onde poderá
armazenar seus programas e arquivos pessoais.
Este diretório está localizado em /home/[login]
, neste caso se o
seu login for "joao" o seu diretório home será
/home/joao
. O diretório home também é identificado por um
~(til), você pode digitar tanto o comando ls
/home/joao como ls ~ para listar os arquivos de seu
diretório home.
O diretório home do usuário root (na maioria das distribuições
GNU/Linux
) está localizado em /root
.
Dependendo de sua configuração e do número de usuários em seu sistema, o
diretório de usuário pode ter a seguinte forma:
/home/[1letra_do_nome]/[login]
, neste caso se o seu login for
"joao" o seu diretório home será /home/j/joao
.
O diretório superior (Upper Directory) é identificado por .. (2 pontos).
Caso estiver no diretório /usr/local
e quiser listar os arquivos
do diretório /usr
você pode digitar, ls .. Este
recurso também pode ser usado para copiar, mover arquivos/diretórios, etc.
O diretório anterior é identificado por "-". É útil para retornar ao último diretório usado.
Se estive no diretório /usr/local
e digitar cd /lib,
você pode retornar facilmente para o diretório /usr/local
usando
cd -.
São os diretórios que teremos que percorrer até checar no arquivo ou diretório
que que procuramos. Se desejar ver o arquivo
/usr/doc/copyright/GPL
você tem duas opções:
/usr/doc/copyright
com o comando
cd /usr/doc/copyright e usar o comando cat GPL
"cat"
especificando o caminho completo na
estrutura de diretórios e o nome de arquivo: cat
/usr/doc/copyright/GPL.
As duas soluções acima permitem que você veja o arquivo GPL
. A
diferença entre as duas é a seguinte:
/usr/doc/copyright
(confira digitando pwd) e depois o comando cat GPL.
Você pode ver os arquivos de /usr/doc/copyright
com o comando
"ls"
.
/usr/doc/copyright
é o caminho de diretório que devemos percorrer
para chegar até o arquivo GPL
.
"cat"
localizar o arquivo GPL
: cat /usr/doc/copyright/GPL.
Neste caso, você continuará no diretório padrão (confira digitando
pwd). Digitando ls, os arquivos do diretório atual
serão listados.
O caminho de diretórios é necessário para dizer ao sistema operacional onde encontrar um arquivo na "árvore" de diretórios.
Um exemplo de diretório é o seu diretório de usuário, todos seus arquivos essenciais devem ser colocadas neste diretório. Um diretório pode conter outro diretório, isto é útil quando temos muitos arquivos e queremos melhorar sua organização. Abaixo um exemplo de uma empresa que precisa controlar os arquivos de Pedidos que emite para as fábricas:
/pub/vendas - diretório principal de vendas /pub/vendas/mes01-99 - diretório contendo vendas do mês 01/1999 /pub/vendas/mes02-99 - diretório contendo vendas do mês 02/1999 /pub/vendas/mes03-99 - diretório contendo vendas do mês 03/1999
vendas
é o diretório principal.
mes01-99
subdiretório que contém os arquivos de vendas do mês
01/1999.
mes02-99
subdiretório que contém os arquivos de vendas do mês
02/1999.
mes03-99
subdiretório que contém os arquivos de vendas do mês
03/1999.
mes01-99, mes02-99, mes03-99
são diretórios usados para armazenar
os arquivos de pedidos do mês e ano correspondente. Isto é essencial para
organização, pois se todos os pedidos fossem colocados diretamente no diretório
vendas, seria muito difícil encontrar o arquivo do cliente "João" ;-)
Você deve ter reparado que usei a palavra sub-diretório para mes01-99,
mes02-99 e mes03-99, porque que eles estão dentro do diretório vendas. Da
mesma forma, vendas
é um sub-diretório de pub
.
O sistema GNU/Linux
possui a seguinte estrutura básica de
diretórios:
/bin
/boot
/cdrom
/dev
/etc
/floppy
/home
/lib
/lost+found
fsck.ext2
. Cada partição possui seu próprio diretório
lost+found
.
/mnt
/proc
/root
/sbin
/tmp
/usr
/var
No GNU/Linux
, os arquivos e diretórios pode ter o tamanho de até
255 letras. Você pode identifica-lo com uma extensão (um conjunto de
letras separadas do nome do arquivo por um ".").
Os programas executáveis do GNU/Linux
, ao contrário dos programas
de DOS
e Windows
, não são executados a partir de
extensões .exe, .com
ou .bat
. O
GNU/Linux
(como todos os sistemas POSIX) usa a permissão de
execução de arquivo para identificar se um arquivo pode ou não ser
executado.
No exemplo anterior, nosso trabalho de história pode ser identificado mais
facilmente caso fosse gravado com o nome trabalho.text
ou
trabalho.txt
. Também é permitido gravar o arquivo com o nome
Trabalho de Historia.txt
mas não é recomendado gravar nomes de
arquivos e diretórios com espaços. Porque será necessário colocar o nome do
arquivo entre "aspas" para acessa-lo (por exemplo, cat
"Trabalho de Historia.txt"). Ao invés de usar espaços,
prefira capitalizar o arquivo (usar letras maiúsculas e minúsculas
para identifica-lo): TrabalhodeHistoria.txt
.
Comandos são ordens que passamos ao sistema operacional para executar uma determinada tarefa.
Cada comando tem uma função específica, devemos saber a função de cada comando e escolher o mais adequado para fazer o que desejamos, por exemplo:
ls
- Mostra arquivos de diretórios
cd
- Para mudar de diretório
Este guia tem uma lista de vários comandos organizados por categoria com a explicação sobre o seu funcionamento e as opções aceitas (incluindo alguns exemplos).
É sempre usado um espaço depois do comando para separa-lo de uma opção ou parâmetro que será passado para o processamento. Um comando pode receber opções e parâmetros:
Opções podem ser passadas ao comando através de um "-" ou "--":
Pode ser usado tanto "-" como "--", mas há casos em que somente "-" ou "--" esta disponível.
Se você digitar: ls /usr/doc/copyright,
/usr/doc/copyright
será o parâmetro passado ao comando
ls
, neste caso queremos que ele liste os arquivos do diretório
/usr/doc/copyright.
É normal errar o nome de comandos, mas não se preocupe, quando isto acontecer o
sistema mostrará a mensagem command not found (comando não
encontrado) e voltará ao aviso de comando. As mensagens de erro não fazem
nenhum mal ao seu sistema, somente dizem que algo deu errado para que você
possa corrigir e entender o que aconteceu. No GNU/Linux
, você tem
a possibilidade de criar comandos personalizados usando outros comandos mais
simples (isto será visto mais adiante). Os comandos se encaixam em duas
categorias: Comandos Internos e Comandos Externos.
Por exemplo: "ls -la /usr/doc", ls é o
comando, -la é a opção passada ao comando, e
/usr/doc
é o diretório passado como parâmetro ao
comando ls.
São comandos que estão localizados dentro do interpretador de comandos
(normalmente o Bash
) e não no disco. Eles são carregados na
memória RAM do computador junto com o interpretador de comandos.
Quando executa um comando, o interpretador de comandos verifica primeiro se ele é um Comando Interno caso não seja é verificado se é um Comando Externo.
Exemplos de comandos internos são: cd, exit, echo, bg, fg, source, help
São comandos que estão localizados no disco. Os comandos são procurados no disco usando o path e executados assim que encontrados.
Para detalhes veja path, Section 5.2.
Aviso de comando (ou Prompt), é a linha mostrada na tela para digitação de comandos que serão passados ao interpretador de comandos para sua execução.
A posição onde o comando será digitado é marcado um "traço" piscante na tela chamado de cursor. Tanto em shells texto como em gráficos é necessário o uso do cursor para sabermos onde iniciar a digitação de textos e nos orientarmos quanto a posição na tela.
O aviso de comando do usuário root é identificado por uma
"#" (tralha), e o aviso de comando de usuários é identificado pelo
símbolo "$". Isto é padrão em sistemas UNIX
.
Você pode retornar comandos já digitados pressionando as teclas Seta para cima / Seta para baixo.
A tela pode ser rolada para baixo ou para cima segurando a tecla SHIFT e pressionando PGUP ou PGDOWN. Isto é útil para ver textos que rolaram rapidamente para cima.
Abaixo algumas dicas sobre a edição da linha de comandos (não é necessário se preocupar em decora-los):
clear
).
Também conhecido como "shell". É o programa responsável em
interpretar as instruções enviadas pelo usuário e seus programas ao sistema
operacional (o kernel). Ele que executa comandos lidos do dispositivo de
entrada padrão (teclado) ou de um arquivo executável. É a principal ligação
entre o usuário, os programas e o kernel. O GNU/Linux
possui
diversos tipos de interpretadores de comandos, entre eles posso destacar o
bash, ash, csh, tcsh, sh,
etc. Entre eles o mais usado é o
bash
. O interpretador de comandos do DOS, por exemplo, é o
command.com
.
Os comandos podem ser enviados de duas maneiras para o interpretador: interativa e não-interativa:
Este sistema é útil quando temos que digitar por várias vezes seguidas um mesmo comando ou para compilar algum programa complexo.
O shell Bash
possui ainda outra característica interessante: A
completação dos nomes. Isto é feito pressionando-se a tecla TAB.
Por exemplo, se digitar "ls tes" e pressionar <tab>, o
Bash
localizará todos os arquivos que iniciam com "tes"
e completará o restante do nome. Caso a completação de nomes encontre mais do
que uma expressão que satisfaça a pesquisa, ou nenhuma, é emitido um beep. A
completação de nomes funciona sem problemas para comandos internos.
Exemplo: ech (pressione TAB). ls /vm(pressione TAB)
Terminal (ou console) é o teclado e tela conectados em seu computador. O
GNU/Linux
faz uso de sua característica multi-usuária
usando os "terminais virtuais". Um terminal virtual é uma segunda
seção de trabalho completamente independente de outras, que pode ser acessada
no computador local ou remotamente via telnet, rsh, rlogin,
etc.
No GNU/Linux
, em modo texto, você pode acessar outros terminais
virtuais segurando a tecla ALT e pressionando F1 a
F6. Cada tecla de função corresponde a um número de terminal do 1 ao 6
(o sétimo é usado por padrão pelo ambiente gráfico X). O
GNU/Linux
possui mais de 63 terminais virtuais, mas apenas 6 estão
disponíveis inicialmente por motivos de economia de memória RAM .
Se estiver usando o modo gráfico, você deve segurar CTRL+ ALT enquanto pressiona uma tela de <F1> a <F6>.
Um exemplo prático: Se você estiver usando o sistema no Terminal 1 com o nome "joao" e desejar entrar como "root" para instalar algum programa, segure ALT enquanto pressiona <F2> para abrir o segundo terminal virtual e faça o login como "root". Será aberta uma nova seção para o usuário "root" e você poderá retornar a hora que quiser para o primeiro terminal pressionando ALT+<F1>.
Login é a entrada no sistema quando você digita seu nome e senha. Por enquanto vou manter o seu suspense sobre o que é o logout.
Logout é a saída do sistema. A saída do sistema é feita pelos comandos
logout
, exit
, CTRL+D, ou
quando o sistema é reiniciado ou desligado.
Curingas (ou referência global) é um recurso usado para especificar um ou mais
arquivos ou diretórios do sistema de uma só vez. Este é um recurso permite que
você faça a filtragem do que será listado, copiado, apagado, etc. São usados 3
tipos de curingas no GNU/Linux
:
A procura de caracteres é "Case Sensitive" assim se você deseja que sejam localizados todos os caracteres alfabéticos você deve usar [a-zA-Z].
Caso a expressão seja seguida de um ^, faz referência a qualquer caracter exceto o da expressão. Por exemplo [^abc] faz referência a qualquer caracter exceto a, b e c.
Lembrando que os 3 tipos de curingas ("*", "?" e "[]") podem ser usados juntos. Para entender melhor vamos a prática:
Vamos dizer que tenha 5 arquivo no diretório /usr/teste
:
teste1.txt, teste2.txt, teste3.txt, teste4.new, teste5.new
.
Caso deseje listar todos os arquivos do diretório
/usr/teste
você pode usar o coringa "*" para especificar
todos os arquivos do diretório:
cd /usr/teste e ls * ou ls /usr/teste/*.
Não tem muito sentido usar o comando ls
com "*" porque
todos os arquivos serão listados se o ls
for usado sem nenhum
Coringa.
Agora para listar todos os arquivos teste1.txt, teste2.txt,
teste3.txt
com excessão de teste4.new
,
teste5.new
, podemos usar inicialmente 3 métodos:
.txt
.
teste
, tenham qualquer caracter no lugar do
coringa ? e terminem com .txt
. Com o exemplo acima
teste*.txt também faria a mesma coisa, mas se também tivéssemos um
arquivo chamado teste10.txt
este também seria listado.
teste
, tenham qualquer caracter entre o número
1-3 no lugar da 6a letra e terminem com .txt
. Neste caso se obtém
uma filtragem mais exata, pois o coringa ? especifica qualquer
caracter naquela posição e [] especifica números, letras ou intervalo que será
usado.
Agora para listar somente teste4.new
e teste5.new
podemos usar os seguintes métodos:
.new
teste
, contenham qualquer caracter na posição do coringa
? e terminem com .new
.
teste
contenham números de 4 e 5 naquela posição e terminem com
qualquer extensão.
Existem muitas outras formas de se fazer a mesma coisa, isto depende do gosto
de cada um. O que pretendi fazer aqui foi mostrar como especificar mais de um
arquivo de uma só vez. O uso de curingas será útil ao copiar arquivos, apagar,
mover, renomear, e nas mais diversas partes do sistema. Alias esta é uma
característica do GNU/Linux
: permitir que a mesma coisa possa ser
feita com liberdade de várias maneiras diferentes.
Guia Foca GNU/Linux
Versão 3.90 - Sunday, 03 de November de 2002gleydson@cipsga.org.br