nosso relacionamento com computadores é baseado em símbolos

Post on 17-Apr-2015

104 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Nosso relacionamento com computadores ébaseado em símbolos.

XVICPF

2+3

190

242-4242

A representação da informação dentro de um computador digital é feita na forma de números.

65 66 67 10 49 50 51 10 68 69 10 97 98 10

Representação interna do conteúdo de um arquivo

No LINUX ou no Windows,arquivos são concebidos e tratados

como STREAMS (minhocas) de BYTES.

O que é um BYTE?

Um BYTE é um número entre 0 e 255 (*).

(*) NOTA: Um BYTE é um conjunto de 8 bits (dígitos binários)

A : 65B : 66...Z : 90

a : 97b : 98...z : 122

0 : 481 : 49...9 : 57

Caracteres especiais:

0 : NULO8 : BACKSPACE9 : TAB10 : mudança de linha12 : mudança de página

65 66 67 10 49 50 51 10 68 69 10 97 98 10

A B C 10 1 2 3 10 D E 10 a b 10

Convertendo a representação interna de um arquivo que eu considero como um arquivo texto:

mudançade linha

mudançade linha

mudançade linha

mudançade linha

Visualizando o arquivo no meu Terminal de Vídeo:

$ cat arquivoABC123DEab$

A B C 10 1 2 3 10 D E 10 a b 10

É claro que você já ouviu falarque os comandos no LINUX tem o seguinte formato:

$ comando opções argumentos ...

PAUSA

entrada

saída

erro (saída de erro)

opções argumentos

retorno

comando

Comandos no LINUX são aplicações (pequenos programas).

OS

LM

dispositivos

aplicação

entrada

saída

erro (saída de erro)

retorno

opções argumentos

comando

KERNEL (OS)

saída

retorno

“arquivo”

cat

KERNEL

opções

entrada

erro (saída de erro)

saída

retorno

“arquivo”

KERNEL

opções

entrada

erro (saída de erro)cat

retorno

“arquivo”

KERNEL

opções

entrada

erro (saída de erro)

65 66 67 10 49 50 51 10 68 69 10 97 98 10

cat

retorno

“arquivo”

KERNEL

opções

entrada

erro (saída de erro)

65 66 67 10 49 50 51 10 68 69 10 97 98 10

cat

saída

0 (ZERO quer dizer OK)

“arquivo”

KERNEL

opções

entrada

erro (saída de erro)cat

- Pô mas o cat não serve para euver o conteúdo de um arquivo?

Tudo o que o cat cuspiu foram ostais numerinhos ...

65 66 67 10 49 50 51 10 68 69 10 97 98 10

- Tá certo isso ?

Por default, a saída padrão de um comando no SHELL é o terminal.

O cat não sabe para onde vai a sua saída,ele simplesmente manda a minhoca

para a saída que ele conhece.

E a gente já viu o que o device driver do terminalfaz com a minhoca de BYTES ...

devicedriver(terminal)

$ cat arquivoABC123DEab$

65 66 67 10 49 50 51 10 68 69 10 97 98 10

devicedriver

(printer)

ABC123DEab

$ cat arquivo > /dev/lp$

Impressora

Personal TABAJet

65 66 67 10 49 50 51 10 68 69 10 97 98 10

FileSystem

(disco)

$ cat arquivo > arquivo2$ (conteúdo de arquivo2)

65 66 67 10 49 50 51 10 68 69 10 97 98 10

65 66 67 10 49 50 51 10 68 69 10 97 98 10

O UNIX introduzo conceito de que

tanto arquivos quanto dispositivosmanipulam STREAMS de BYTES.

O UNIX revolucionou ao proporque as interfaces com os dispositivos físicosaparentassem ser arquivos no File System.

exemplos: /dev/mouse, /dev/modem, /dev/lp

Modelo geral de um device driver no UNIX:

controle

entrada saídadevicedriver

saída

retorno

“pau”

cat

KERNEL

opções

entrada

erro (saída de erro)

saída

retorno

“pau”

KERNEL

opções

entrada

erro (saída de erro)cat

retorno

“pau”

KERNEL

opções

entrada

erro (saída de erro)cat

saída

não existe!

retorno

“pau”

KERNEL

opções

entradacat

saída

erro (saída de erro)

retorno

“pau”

KERNEL

opções

entrada

cat: pau not foundcat

saída

saída

1 (UM quer dizer ERRO)

“arquivo”

KERNEL

opções

entrada

erro (saída de erro)cat

A saída padrão e a saída de erro padrão no UNIX

são dois “canais de minhocas” independentes.

Tudo o que vale para asaída padrão vale

para a saída de erro padrão.

Já que entradas e saídas paraarquivos e dispositivos são

STREAMS de BYTES,é possível ligar

a saída de um comandona entrada de outro comando.

Comandos, em princípio,não quebram esse padrão.

(out = in)

retorno

“arquivo”

cat

KERNEL

opções

errowc

-l argumentos

retorno

erro

465 66 67 10 49 50 51 10 68 69 10 97 98 10

PIPES são estruturas de processamentoem que

a saída padrão de um comandoé conectada

à entrada padrão do comando seguinte.

Um DIRETÓRIO é um conjunto de informaçõessobre arquivos e/ou outros diretórios.

baba oto

$dir1

Todo o processo no UNIX tem um diretório corrente (pwd).

Nosso exercício começa, quando de alguma forma, apósum cd fizemos do diretório dir1 o nosso diretório corrente.

Nesse exercício, ele será o diretório corrente o tempo todo.

Não revisaremos o comando cd.

baba oto

$ pwd/qualquer coisa.../dir1

dir1

baba oto

$ pwd/qualquer coisa.../dir1$

dir1

baba oto

$ pwd/qualquer coisa.../dir1$ clear

dir1

baba oto

$dir1

baba oto

$ lsbabaoto$

dir1

baba oto

$ lsbabaoto$ cp baba caco

dir1

baba oto

$ lsbabaoto$ cp baba caco

dir1

caco

baba oto

$ lsbabaoto$ cp baba caco

dir1

caco

baba oto

$ lsbabaoto$ cp baba caco

dir1

caco

baba oto

$ lsbabaoto$ cp baba caco$

dir1

caco

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco

dir1

caco

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco

dir1

caco

O SHELL entende o comando

$ cat caco oto > caco

como

$ cat caco oto > caco

Ele primeiro reseta o arquivo caco e depois concatenaas minhocas de caco e oto. Resultado: ele apaga o conteúdo do arquivo caco e depois usa ...

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco

dir1

caco

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$

dir1

caco

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$ cp baba caco$

dir1

caco

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$ cp baba caco$ cat oto >> caco

dir1

caco

O SHELL entende o comando

$ cat oto >> caco

como

$ cat oto >> caco

Ele primeiro posiciona o arquivo caco no final destee depois concatena a minhoca de oto.

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$ cp baba caco$ cat oto >> caco

dir1

caco

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$ cp baba caco$ cat oto >> caco$

dir1

caco

Chega de cat por hoje ...

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$ cp baba caco$ cat oto >> caco$ rm caco

dir1

caco

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$ cp baba caco$ cat oto >> caco$ rm caco

dir1

caco

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$ cp baba caco$ cat oto >> caco$ rm caco$

dir1

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$ cp baba caco$ cat oto >> caco$ rm caco$ mkdir dir12

dir1

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$ cp baba caco$ cat oto >> caco$ rm caco$ mkdir dir12

dir1

dir12

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$ cp baba caco$ cat oto >> caco$ rm caco$ mkdir dir12$

dir1

dir12

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$ cp baba caco$ cat oto >> caco$ rm caco$ mkdir dir12$ ls dir12$

dir1

dir12

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$ cp baba caco$ cat oto >> caco$ rm caco$ mkdir dir12$ ls dir12$ cp oto dir12

dir1

dir12

O comando cp descobre que dir12 é um diretório:

$ cp oto dir12

e então copia o arquivo oto nesse diretório.

Repare que se dir12 não existisse o comando cpobviamente criaria um arquivo chamado dir12.

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$ cp baba caco$ cat oto >> caco$ rm caco$ mkdir dir12$ ls dir12$ cp oto dir12$

dir1

dir12

oto

baba oto

$ lsbabaoto$ cp baba caco$ cat caco oto > caco$ cp baba caco$ cat oto >> caco$ rm caco$ mkdir dir12$ ls dir12$ cp oto dir12$ clear

dir1

dir12

oto

baba oto

$dir1

dir12

oto

baba oto

$ ls dir12oto$

dir1

dir12

oto

baba oto

$ ls dir12oto$ mv oto ito

dir1

dir12

oto

baba ito

$ ls dir12oto$ mv oto ito

dir1

dir12

oto

baba ito

$ ls dir12oto$ mv oto ito$

dir1

dir12

oto

baba ito

$ ls dir12oto$ mv oto ito$ rm dir12/oto

dir1

dir12

oto

baba ito

$ ls dir12oto$ mv oto ito$ rm dir12/oto

dir1

dir12

oto

baba ito

$ ls dir12oto$ mv oto ito$ rm dir12/oto$

dir1

dir12

baba ito

$ ls dir12oto$ mv oto ito$ rm dir12/oto$ mv baba ito dir12

dir1

dir12

O comando mv descobre que baba e ito são arquivose que dir12 é um diretório:

$ mv baba ito dir12

assim, ele move os dois arquivos para esse diretório.

Repare que se dir12 não existisse o comando mvresultaria em erro, pois ele não pode renomear doisarquivos para um terceiro.

baba ito

$ ls dir12oto$ mv oto ito$ rm dir12/oto$ mv baba ito dir12

dir1

dir12

baba ito

$ ls dir12oto$ mv oto ito$ rm dir12/oto$ mv baba ito dir12$

dir1

dir12

baba ito

$ ls dir12oto$ mv oto ito$ rm dir12/oto$ mv baba ito dir12$ ls dir12$

dir1

dir12

baba ito

$ ls dir12oto$ mv oto ito$ rm dir12/oto$ mv baba ito dir12$ ls dir12$ ls dir12babaito$

dir1

dir12

baba ito

$ ls dir12oto$ mv oto ito$ rm dir12/oto$ mv baba ito dir12$ ls dir12$ ls dir12babaito$ clear

dir1

dir12

baba ito

$dir1

dir12

baba ito

$ mv dir12/baba .dir1

dir12

baba

ito

$ mv dir12/baba .dir1

dir12

baba

ito

$ mv dir12/baba .$

dir1

dir12

baba

ito

$ mv dir12/baba .$ rm -r dir12

dir1

dir12

baba

ito

$ mv dir12/baba .$ rm -r dir12

dir1

dir12

baba

$ mv dir12/baba .$ rm -r dir12$

dir1

baba

$ mv dir12/baba .$ rm -r dir12$ ln baba oto

dir1

baba

$ mv dir12/baba .$ rm -r dir12$ ln baba oto

dir1

oto

baba

$ mv dir12/baba .$ rm -r dir12$ ln baba oto

dir1

oto

baba

$ mv dir12/baba .$ rm -r dir12$ ln baba oto$

dir1

oto

baba

$ mv dir12/baba .$ rm -r dir12$ ln baba oto$ ln oto caco

dir1

oto

baba

$ mv dir12/baba .$ rm -r dir12$ ln baba oto$ ln oto caco

dir1

oto caco

baba

$ mv dir12/baba .$ rm -r dir12$ ln baba oto$ ln oto caco$

dir1

oto caco

baba

$ mv dir12/baba .$ rm -r dir12$ ln baba oto$ ln oto caco$ rm oto

dir1

oto caco

baba

$ mv dir12/baba .$ rm -r dir12$ ln baba oto$ ln oto caco$ rm oto

dir1

caco

$ mv dir12/baba .$ rm -r dir12$ ln baba oto$ ln oto caco$

dir1

oto caco

NOTA: Se eu tivesse feito:

$ rm baba

O resultado seria o indicado.

Vimos os comandos:

cp COPYmv MOVEln LINKrm REMOVE

IMPORTANTE: Todos eles tem em comum o fato de alterarem as informações dos arquivos nos diretórios em que esses arquivos se localizam.

No LINUX ou no Windows,arquivos são concebidos e tratados

como STREAMS (minhocas) de BYTES.

65 66 67 10 49 50 51 10 68 69 10 97 98 10

exemplo: representação interna do conteúdo de um arquivo

Comandos no UNIX são aplicações.

OS

LM

dispositivos

aplicação

entrada saída

entrada

saída

erro (saída de erro)

retorno

opções argumentos

comando

KERNEL

A saída padrão e a saída de erro padrão no UNIX

são dois “canais de minhocas” independentes.

PIPES são estruturas de processamentoem que

a saída padrão de um comandoé conectada

à entrada padrão do comando seguinte.

O UNIX introduzo conceito de que

tanto arquivos quanto dispositivosmanipulam STREAMS de BYTES.

Para o UNIX,as interfaces com os dispositivos físicosaparentam ser arquivos no File System.

exemplos: /dev/mouse, /dev/modem, /dev/lp

Modelo geral de um device driver no UNIX:

controle

entrada saídadevicedriver

CPU Process Management

RAM Memory Management

disco File Systems

dispositivos Device Drivers

XNOTA: Isto aqui é como um campeonato:

Todo mundo joga contra todo mundo ...

PAPAI NOEL não existe.

O cat não sabe para onde vai a sua saída,ele simplesmente manda a minhoca

para a saída que ele conhece.

E a gente já viu o que o device driver do terminalfaz com a minhoca de BYTES ...

top related