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