O documento fornece uma introdução aos sistemas operacionais, com foco no GNU/Linux. Apresenta a história dos sistemas operacionais desde os primórdios até o desenvolvimento do Unix e do Linux. Discorre sobre as principais características e componentes de um sistema operacional, como o kernel e os gerenciadores de janelas. Fornece também uma visão geral sobre as principais distribuições Linux, programas, comandos de terminal e conceitos como processos, permissões e montagem de sistemas de arquivos.
1. LTI/ICEx - UFMGLTI/ICEx - UFMG
Laboratório de Tecnologia da InformaçãoLaboratório de Tecnologia da Informação
Mini CursoMini Curso
Introdução ao Sistema OperacionalIntrodução ao Sistema Operacional
GNU/LinuxGNU/Linux
Alexandre Elias dos SantosAlexandre Elias dos Santos
aleniac@ufmg.braleniac@ufmg.br
Julho 2015Julho 2015
2. Sistemas OperacionaisSistemas Operacionais
1945 - 1955 – Na primeira geração de
computadores, o controle era feito de forma manual
via hardware, não havia SOs (sistemas
operacionais);
1955 - 1965 – Sistemas orientados por lotes (batch
systems) e uso de cartões perfurados;
1965 - desenvolvimento do Multics, sistema
interativo com compartilhamento de tempo, por Ken
Thompson, Dennis Ritchie, Douglas McIlroy e Peter
Weine;
Envolvidos no projeto do Multics: MIT
(Massachussets Institute of Technology), AT&T (Bell
Laboratories) e General Electric (GE).
3. Sistemas Operacionais UnixSistemas Operacionais Unix
1969 - Thompson desenvolve o Unics
reescrevendo o Multics através de um
minicomputador PDP-7 em Assembler;
1973, reimplementação do Unix em C
para um PDP-11 por Thompson e Richie;
Alguns SOs da famíla Unix (*nix):
TSS/360 (da IBM), Mac OS X, Solaris,
BSD(Universidade de Berkeley), Xenix
(Microsoft), System III e System V (Bell
Labs).
Outros sistemas operacionais
contemporâneos: CP/M, Apple DOS, MS
DOS.
Minicomputador PDP-11
4. Principais Características do UnixPrincipais Características do Unix
Capacidade multitarefas - execução de diversas
tarefas simultâneas;
Capacidade Multiusuário – possibilidade de vários
usuários utilizarem o mesmo computador ao mesmo
tempo;
Transportabilidade – facilidade de transportar o
sistema para outras arquiteturas de computadores;
Sistema orientado por arquivos - praticamente todos
elementos do computador é representado por
arquivos.
5. Projeto GNUProjeto GNU
Sistema Operacional compatível com
Unix e totalmente livre (direito de uso,
modificação e redistribuição);
GNU – Gnu is Not Unix;
Criado em 1984 por Richard Stallman;
Objetos iniciais do SO GNU:
compiladores de C, editores de texto,
etc;
GPL – General Public License.
6. GNU GPLGNU GPL
(General Pubic License)(General Pubic License)
A GPL se baseia em 4 termos:
1) liberdade de execução do programa para qualquer
propósito (liberdade # 0);
2) liberdade de estudar o funcionamento do programa e
adaptá-lo conforme suas necessidades (liberdade # 1);
3) liberdade de redistribuição de cópias (liberdade # 2);
4) liberdade de aperfeiçoar e redistribuir o programa
aperfeiçoado de modo que beneficie toda comunidade
(liberdade # 3).
⚠⚠ Acesso ao código fonte é um pré-requisito para as liberdades
#1 e #3.
7. Kernel de um Sistema OperacionalKernel de um Sistema Operacional
Kernel, núcleo de um sistema operacional;
Responsável pelo gerenciamento de recursos do sistema
(controle de processos, alocação de memória, entrada e saída
de dispositivos e outros);
Linux, o Kernel de Linux Torvalds criado em 1991;
GNU/Linux, o SO GNU com o kernel Linux.
8. Primeiras Distribuições LinuxPrimeiras Distribuições Linux
No começo, a instalação básica do sistema partia
da compilação do kernel através do Minix.
Boot/Root: conhecida como a primeira
distribuição do sistema pré-compilado, 1991.
MCC Interim Linux: Sucessor do Boot/Root,
1992.
SLS Linux: distribuição com muitos aplicativos em
modo texto, 1992.
Yggdrasil: precursora do live-CD e com ambiente
gráfico, 1992.
9. Árvore de Distribuições LinuxÁrvore de Distribuições Linux
➔ Debian
➔ aLinux
➔ Knoppix
➔ Kurumin
➔ Ubuntu
➔ Mint
➔ Kunbuntu
➔ Xubuntu
➔ Gentoo (Linux?)
➔ Red Hat
➔ Mandrake
➔ Conectiva
➔ SuSE
➔ Fedora Core
➔ Libertas
➔ Slackware
➔ Slacx
➔ Vector Linux
} Mandriva
Representação ilustrativa da árvore de distribuições Linux.
10. Gerenciadores de JanelasGerenciadores de Janelas
Servidor X:
➔ Desenvolvido em 1984 pelo MIT;
➔ Carrega a placa de vídeo, mouse e teclado;
➔ permite o uso de programas com bibliotecas
gráficas em sistemas Unix ou similares.
Gerenciadores de janelas:
➔ Requesita serviços do servidor X;
➔ Permite operações com janelas, como, por
exemplo, mover, minimizar, maximizar e fechar
a janela;
➔ Múltiplas áreas de trabalho e desktop 3D.
11. KDEKDE
KDE (K Desktop Enviroment):
➔ Interface gráfica que possui um visual bem atrativo, bastante
sedutora para usuários do Windows. O ambiente gráfico é
altamente intuitivo.
12. GnomeGnome
GNOME (GNU Network Object Model Environment):
➔ Ambiente gráfico bastante amigável com diversos recursos,
além de ser altamente personalizável.
13. UnityUnity
Unity:
➔ Interface gráfica padrão do Ubuntu, atualmente, muito
estilosa. O Unity é uma renovação do Gnome, contudo é
menos personalizável.
14. Compiz - Desktop 3DCompiz - Desktop 3D
Compiz:
➔ Foi o primeiro desktop com efeitos tridimensionais. O Compiz
Fusion, projeto mais recente, permite visulização de mútiplas
áreas de trabalho em diversos formatos espaciais: cúbicos,
esféricos e outros.
15. Alguns ProgramasAlguns Programas
Pacote de programas de escritório: Libre Office
(antigo Open Office).
Multimídia: Audacious, VLC, Brasero.
Compiladores: Gcc, G++, Gpc.
Editores de textos: Kedit, Kate, leafpad.
Editor/compilador de Latex: Kile.
Acadêmicos: R, Scilab, Eclipse.
Utilitários em modo texto: Vim, Links, Moc, Mutt.
Gráfico: Gimp, Gthumb, Ristretto.
16. Uso de Console no LinuxUso de Console no Linux
Console (terminal): interface em modo texto
que permite a interpretação de comandos
através de um shell.
Shell: interpretador de comandos ou conjunto
de comandos (modo programado em Shell
Script).
Tipos de Shell: Bash, Ash, Dash, Sh e outros.
17. Alguns ComandosAlguns Comandos
ls listar o conteúdo do diretório
rm remoção de arquivos/diretórios
cd muda para um determinado diretório
man mostra informações sobre um comando
cat exibe o conteúdo de um arquivo na saída padrão
less permite a visualização de arquivo de texto
cp copia arquivos ou diretórios
mkdir cria um diretório
du -sh mostra o tamanho do diretório
ps aux exibe todos processos que estão sendo executados
top permite visualizar os recursos usados pelos processos
abertos.
18. Gerenciamento de ProcessosGerenciamento de Processos
Um processo é a representação de um comando em
execução.
Características específicas de um processo:
➢ PID – Identificador do Processo
➢ PPID – PID do processo pai
➢ Proprietário do processo
➢ Estado (em espera, em execução, etc)
➢ Prioridade de execução
➢ Recursos de Memória
Visualização de todos processos em execução:
aleniac@terminal-frost:~$ ps aux
19. Gerenciamento de ProcessosGerenciamento de Processos
Alguns sinais de um processo:
➢ STOP – usado para interromper um processo.
➢ CONT – para continuar um processo interrompido.
➢ SEGV – informa erros de endereço de memória.
➢ TERM – para terminar um processo.
➢ ILL – informa erros de instrução ilegal.
➢ KILL – para matar um processo.
Fechando um processo com o comando kill:
:~$ kill -TERM pid do processo # nem sempre termina!
Matando (todos) processos por nome:
:~$ killall -KILL firefox # mata mesmo todos firefox abertos!
20. Instalação de Pacotes/ProgramasInstalação de Pacotes/Programas
O que são os repositórios?
São servidores que disponibilizam pacotes para download.
Formas de instalaçao de programas:
Via apt-get: a instalação de programas pode ser feita
usando o comando apt-get que obtém em repositórios
previamente reconhecidos pelo sistema os pacotes do
programa a serem instalados;
Gerenciador de pacote (Synaptic): semelhante ao apt-
get, porém através de uma interface gráfica;
Manual: através do código fonte pelos procedimentos
./configure; make; make install. Geralmente, são
programas que não estão nos repositórios.
21. Estrutura de Diretórios GNU/LinuxEstrutura de Diretórios GNU/Linux
Representação ilustrativa de diretórios e arquivos do sistema
de arquivos da distribuição Ubuntu.
22. Sistema de Arquivos e PartiçõesSistema de Arquivos e Partições
# / was on /dev/sda1 during installation
UUID=26a34652-710b-46c1-87d9-08aa186d4d3d / ext3 errors=remount-ro 0 1
# /media/dados was on /dev/sda5 during installation
UUID=0ab24c3b-f61f-4b85-b1bf-1da679331ead /home ext3 defaults 0 2
# swap was on /dev/sda2 during installation
UUID=cd5a32ed-e52f-4858-a210-fd2244095ae3 none swap sw 0 0
# /media/backup on /dev/sdb1
/dev/sdb1 /media/backupext3 defaults 0 2
# / was on /dev/sda1 during installation
UUID=26a34652-710b-46c1-87d9-08aa186d4d3d / ext3 errors=remount-ro 0 1
# /media/dados was on /dev/sda5 during installation
UUID=0ab24c3b-f61f-4b85-b1bf-1da679331ead /home ext3 defaults 0 2
# swap was on /dev/sda2 during installation
UUID=cd5a32ed-e52f-4858-a210-fd2244095ae3 none swap sw 0 0
# /media/backup on /dev/sdb1
/dev/sdb1 /media/backupext3 defaults 0 2
Arquivo /etc/fstab
23. Alguns Arquivos ImportantesAlguns Arquivos Importantes
/etc/passwd – contém dados de contas dos usuários
/etc/group – contém os grupos de usuários
/etc/shadow – senhas criptografadas dos usuários
/etc/fstab – tabela de sistema de arquivos
/etc/crontab – tabela de agendamento de tarefas do cron
/etc/fstab – tabela de sistema de arquivos
/etc/apt/sources.list – lista de repositórios
/etc/resolv.conf – contém endereços dos servidores de DNS
/etc/network/interfaces – configurações de rede
/etc/skel/ – arquivos básicos para home de novos usuários.
24. Especificação de RotasEspecificação de Rotas
Não se perca onde um comando é executado ou onde se
encontra um determinado arquivo ou diretório.
O path é o caminho onde se encontra um determinado arquivo ou
diretório no sistema de arquivos.
O path pode ser referenciado de duas formas: através da rota
absoluta, o caminho completo; ou através da rota relativa, isto é,
em relação ao diretório em uso por um shell.
Exibindo o path em uso:
:~$ pwd # onde estou?
Rota absoluta, exemplo:
:~$ ls /home/fulano/Documentos
Rota relativa (parcial), exemplo:
:~$ ls Documentos
25. Utilizando Rotas Absolutas EUtilizando Rotas Absolutas E
RelativasRelativas
Retorne de
onde eu estava.
Em qual diretório
estou?
O que contém no meu
diretório pai?
O que tem no diretório
no qual estou?
O que contém em
Documentos?
O que contém no meu
diretório avô,
o diretório ”/”?
Vá para meu
diretório pai.
Exemplo de uso de rotas absolutas e relativas.
26. Montagem de Sistema de ArquivosMontagem de Sistema de Arquivos
Montando todos sistemas de arquivos incluídos em /etc/fstab:
Montando o dispositivo /dev/sda2 pré-definido em /etc/fstab:
Montando /dev/sda2 do tipo ntfs e não definido em /etc/fstab:
root@terminal-frost:~# mount -t ntfs /dev/sda2 /media/windowsxproot@terminal-frost:~# mount -t ntfs /dev/sda2 /media/windowsxp
root@terminal-frost:~# mount /dev/sda2root@terminal-frost:~# mount /dev/sda2
root@terminal-frost:~# mount -aroot@terminal-frost:~# mount -a
Dispositivo Local de montagem
27. Setando os bits xwr, exemplo:
Conversão binária para decimal:
usuário (xwr)
1*20
+ 1*21
+ 1*22
= 7
grupo (x-r)
1*20
+ 0*21
+ 1*22
= 5
outros (---)
0*20
+ 0*21
+ 0*22
= 0
Permissões de ArquivosPermissões de Arquivos
valor símbolos Permissão
0 --- nenhuma
1 --x execução
2 -w- escrita
3 -wx escrita e execução
4 r-- leitura
5 r-x leitura e execução
6 rw- leitura e escrita
7 rwx leitura, escrita e execução
aleniac@crisolita:~$ chmod 750 exemplo.txt; ls -l exemplo.txt
-rwxr-x--- 1 aleniac aleniac 562 Fev 20 11:12 exemplo.txt
aleniac@crisolita:~$ chmod 750 exemplo.txt; ls -l exemplo.txt
-rwxr-x--- 1 aleniac aleniac 562 Fev 20 11:12 exemplo.txt
Bit x w r octal
u 1 1 1 7
g 1 0 1 5
o 0 0 0 0
29. Operadores de Redirecionamento deOperadores de Redirecionamento de
Entrada e Saída (Entrada e Saída (<<,, >> ee >>>>))
:~$ mutt -s ”Relatório” -a report.txt -- aleniac@ufmg.br
< mensagem.txt
:~$ mutt -s ”Relatório” -a report.txt -- aleniac@ufmg.br
< mensagem.txt
Enviando email com o utilitário mutt usando como
mensagem o conteúdo de um arquivo:
:~$ echo ”Arquivos do meu diretório:” > report.txt
:~$ echo >> report.txt
:~$ ls -lh >> report.txt
:~$ echo ”Arquivos do meu diretório:” > report.txt
:~$ echo >> report.txt
:~$ ls -lh >> report.txt
Redirecionando saída do ls para o arquivo através
de concatenação:
30. Sed – Editor de texto não interativoSed – Editor de texto não interativo
O Sed facilita a automatição de tarefas que envolvem
processamento de textos.
Forma geral do comando:
sed '[ endereço, [endereço ]] [!] comando [argumentos]'
Exemplos:
$ sed 's/aa/bb/g' file.txt # substitui todas ocorrências encontradas do
padrão 'aa' por 'bb' em toda as linhas.
$ sed '/GNU/d' file.txt # deleta somente linhas que contém GNU.
$ sed '/^BEGIN/,/END$/p' file.txt # imprime entre as linhas que
iniciam com BEGIN e terminam com END.
$ sed '/SELECT/!d' file.txt # apaga todas que NÃO contém SELECT.
$ sed '/BEGIN/,/END/!s/zip/zap/g' file.txt # substitui todas
ocorrências, exceto entre as linhas que contém BEGIN e END.
$ sed 's/aa/bb/g' file.txt # substitui todas ocorrências encontradas do
padrão 'aa' por 'bb' em toda as linhas.
$ sed '/GNU/d' file.txt # deleta somente linhas que contém GNU.
$ sed '/^BEGIN/,/END$/p' file.txt # imprime entre as linhas que
iniciam com BEGIN e terminam com END.
$ sed '/SELECT/!d' file.txt # apaga todas que NÃO contém SELECT.
$ sed '/BEGIN/,/END/!s/zip/zap/g' file.txt # substitui todas
ocorrências, exceto entre as linhas que contém BEGIN e END.
31. Metacaracteres e Expressões RegularesMetacaracteres e Expressões Regulares
Metacaracteres: são caracteres com significado especial
dependendo do contexto;
São usados em expressões regulares (regex) para localizar um
determinado padrão utilizando-se comandos como o sed, o grep e
o tr.
Padrão de
pesquisa
Expressão procurada
X*
gnu.linux
.*
[0-9]
[a-zA-Z]*
^GNU
Linux$
^.$
[[:alfnum:]]
[aeiou1-3]
x{n,m}
qualquer quantidade do caractere precendente, X, inclusive zero
qualquer tipo de caractere entre as palavras gnu e linux
zero ou mais caracteres de qualquer tipo
somente dígitos
zero ou mais caracteres alfabéticos
linhas cujo início seja a palavra GNU
linhas cujo final tenha a palavra Linux
linhas que contém apenas um caractere qualquer
caracteres alfanuméricos
vogais ou números 1 ou 2 ou 3
frequência de n a m do caractere precedente, x
Quadro com algumas expressões regulares.
32. Exemplos de Uso de MetacaracteresExemplos de Uso de Metacaracteres
aleniac@crisolita:~$ cat /etc/crontab | grep cron....ly
25 6 * * * roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
aleniac@crisolita:~$ cat /etc/crontab | grep cron....ly
25 6 * * * roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
aleniac@crisolita:~$ grep cron....ly /etc/crontab | sed 's/^[0-9]{1,2} [0-9]{1,2}/21 18/'
21 18 * * * roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
aleniac@crisolita:~$ grep cron....ly /etc/crontab | sed 's/^[0-9]{1,2} [0-9]{1,2}/21 18/'
21 18 * * * roottest -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
Busca linhas contendo a palavra cron seguida de 4
caracteres quaisquer mais a palavra ly:
Exibe modificação da linha acima do arquivo do crontab
alterando o horário de execução da tarefa diária para às
18:21 horas:
⚠⚠ O significado literal do comando sed acima é: substitua as linhas que começam
com 1 ou 2 dígitos seguidos de espaço seguidos de 1 ou 2 dígitos por ”21 18”.
33. SSH - Acesso RemotoSSH - Acesso Remoto
Acessando o computador remoto com o comando ssh:
Copiando arquivo para um computador remoto com o
comando scp:
Copiando arquivo do computador remoto para o local:
$ ssh -p 22 usuario@host_remoto$ ssh -p 22 usuario@host_remoto
$ scp -P 22 relatorio.txt usuario@host_remoto:~/$ scp -P 22 relatorio.txt usuario@host_remoto:~/
$ scp -P 22 usuario@host_remoto:~/lah.txt ./aqui.txt$ scp -P 22 usuario@host_remoto:~/lah.txt ./aqui.txt
●Final
35. Programação em Shell BashProgramação em Shell Bash
Comando de saída, exemplo:
➔ $ echo ”Olá, Tux!”
Comando de entrada, exemplo:
➔ $ read nome
Criando variáveis:
➔ $ time=”Galo”
Visualizando variáveis:
➔ $ echo $time
36. Variáveis de AmbienteVariáveis de Ambiente
Variáveis de ambiente são variáveis utilizadas
pelo sistema, Exemplo:
➔ PATH – contém os possíveis caminhos(locais) de
comandos e programas executados no Shell;
➔ PWD – contém o endereço do diretório ativo;
➔ USER – armazena o nome do usuário.
Visualizando uma variável de ambiente,
exemplo:
➔ $ echo $PATH
37. Criando um Shell ScriptCriando um Shell Script
Passos para criar um Script Shell:
➔ Criar e salvar o arquivo contendo o código do
script utilizando um editor de texto de preferência;
➔ Mudar o modo do arquivo, tornando-o executável,
por exemplo:
$ chmod 755 meuscript
➔ Executar o script da seguinte forma:
$ ./meuscript
⚠⚠ O par de caracteres ”./” aponta para o diretório corrente em uso
no terminal.
38. Código em Shell ScriptCódigo em Shell Script
#!/bin/bash
# Buscando nome de arquivos através de uma
# palavra-chave (pode-se usar metacaracteres).
echo "Entre com a palavra chave:"
read chave # ler entrada
find ../ -name "$chave" # busca arquivo
echo "Terminei a busca." # exibe saida
#!/bin/bash
# Buscando nome de arquivos através de uma
# palavra-chave (pode-se usar metacaracteres).
echo "Entre com a palavra chave:"
read chave # ler entrada
find ../ -name "$chave" # busca arquivo
echo "Terminei a busca." # exibe saida
#!/bin/bash
# Meu primeiro script em Shell Bash
printf "Olá mundo!n"
#!/bin/bash
# Meu primeiro script em Shell Bash
printf "Olá mundo!n"
Dois exemplos de código em Bash:
39. Teste de Expressões LógicasTeste de Expressões Lógicas
a=”GNU/Linux”
b=”Windows Microsoft”
[ ”$a” = ”$b” ]; echo $?
[ ”$a” != ”$b” ]; echo $?
a=”GNU/Linux”
b=”Windows Microsoft”
[ ”$a” = ”$b” ]; echo $?
[ ”$a” != ”$b” ]; echo $?
Expressões Lógicas Literais (strings):
⚠⚠ É um bom hábito usar as aspas duplas (”);
Deve-se deixar espaço entre a expressão de teste e os colchetes.
40. Teste de Expressões LógicasTeste de Expressões Lógicas
Operadores Lógicos para Expressões
Aritméticas:
➔ -eq (equal): igual;
➔ -ne (not-equal): diferente);
➔ -lt (less than): menor que (<);
➔ -le (less than or equal): menor ou igual ( <= );
➔ -gt (greater than): maior que (>);
➔ -ge (greater than or equal): maior ou igual (>=).
41. Teste de Expressões LógicasTeste de Expressões Lógicas
Expressões Lógicas numéricas, exemplo:
Expressão literal ou numérica?
⚠⚠ Note que o resultado da avaliação utilizando-se o operador ”=”
não necessariamente produz o mesmo utilizando-se ”-eq”.
valor1=-1; valor2=1
[ ”$valor1” -eq ”$valor2” ]; echo $?
valor1=-1; valor2=1
[ ”$valor1” -eq ”$valor2” ]; echo $?
x=002; y=2 # x e y são iguais?
[ ”$x” -eq ”$y” ]; echo $?
[ ”$x” = ”$y” ]; echo $?
x=002; y=2 # x e y são iguais?
[ ”$x” -eq ”$y” ]; echo $?
[ ”$x” = ”$y” ]; echo $?
42. Teste CondicionalTeste Condicional
Forma geral do comando if... then... else... fi:
if [ condição ]
then
...
comandos
...
else
...
comandos
...
fi
if [ condição ]
then
...
comandos
...
else
...
comandos
...
fi
43. Comando de Iteração WhileComando de Iteração While
Forma geral do comando while:
while [ condição ]
do
...
comandos
...
done
while [ condição ]
do
...
comandos
...
done
44. Comando de Iteração WhileComando de Iteração While
Exemplo do uso do while:
x=0 # valor inicial de x
while [ "$x" -lt 9 ]
do
echo ”linha: $x”
x=$(($x+1)) # x = x + 1
done
x=0 # valor inicial de x
while [ "$x" -lt 9 ]
do
echo ”linha: $x”
x=$(($x+1)) # x = x + 1
done
45. Comando de Iteração ForComando de Iteração For
Forma geral do comando for:
for <variável> in <v1 v2 v3 ... vn>
do
...
comandos
...
done
for <variável> in <v1 v2 v3 ... vn>
do
...
comandos
...
done
46. Comando de Iteração ForComando de Iteração For
Exemplos de uso do comando for:
# exibe uma sequência de 10 iterações
for i in $(seq 1 10)
do
echo ”iteração: $i”
done
# exibe uma sequência de 10 iterações
for i in $(seq 1 10)
do
echo ”iteração: $i”
done
# lista todos arquivos ”txt” no diretório corrrente
for x in *.txt
do
echo ”achei o arquivo $x”
done
# lista todos arquivos ”txt” no diretório corrrente
for x in *.txt
do
echo ”achei o arquivo $x”
done
47. Comando de Iteração ForComando de Iteração For
Exemplo de uso do for com vetores:
v=("one" "two" "three" "four") # vetor
cont=0 # contador
# v[@] são todos elementos de v
for x in ${v[@]}
do
echo ”conteúdo de v[$cont] = $x”
let cont++
done
v=("one" "two" "three" "four") # vetor
cont=0 # contador
# v[@] são todos elementos de v
for x in ${v[@]}
do
echo ”conteúdo de v[$cont] = $x”
let cont++
done
48. Filosofia UnixFilosofia Unix
Escreva programas que façam
apenas uma coisa mas que façam
bem feito;
Escreva programas que trabalhem
juntos;
Escreva programas que manipulem
streams de texto, pois esta é uma
interface universal.
Ou, simplesmente: "faça apenas uma coisa e faça bem".
49. Filosofia UnixFilosofia Unix
KISS,KISS, keep it simple stupid!keep it simple stupid!
"Tudo deve ser feito da forma mais simples possível,"Tudo deve ser feito da forma mais simples possível,
mas não mais simples que isso."mas não mais simples que isso." (Albert Eistein)(Albert Eistein)
Tomoyasu Hotei - Battle Without Honor or HumanityTomoyasu Hotei - Battle Without Honor or Humanity
(Kill Bill Vol. 1 Soundtrack)(Kill Bill Vol. 1 Soundtrack)
50. ReferênciasReferências
Introdução ao Shell Script, Aurélio Marinho Jargas
Linux – O guia essencial, E. Siever, A.Weber, S. Figgins, R.
Love e A. Robbins
O livro oficial do Ubuntu, Benjamin Mako Hill e outros
Unix - Guia do Usuário, Rebecca Thomas
wiki.forumdebian.com.br
www.linuxnared.com.br
www.guiadohardware.net
www.vivaolinux.com.br
www.vivaolinux.com.br/~aleniac
http://pt.wikipedia.org/wiki/Unix
http://www. inf.ufpr.br/afms03/shell3.html
http://pt.wikipedia.org/wiki/LINUX_Guia_de_Comandos
http://www.infowester.com/linprocessos.php