Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução .......................................................................................................1
Conceitos Iniciais............................................................................................1
Arquivos e os sistemas de arquivos do Linux .................................................1
A estrutura de diretórios..................................................................................2
Restrições e permissões de acesso ..................................................................3
Comandos básicos...........................................................................................4
Rudimentos de programação C-Shell ........................................................8
O Shell script..........................................................................................9
O básico do editor vi .....................................................................................12
Endereços interessantes na Internet ..............................................................14
Bibliografia ...................................................................................................14
Introdução
O Linux foi criado em 1991 por Linus Torvalds, que, na época, era estudante da Universidade de Helsinque. Linus
Torvalds buscava obter uma versão do sistema Unix que pudesse ser executada no seu PC. Atualmente milhares de
programadores em todo o mundo trabalham no núcleo (kernel) do Linux, enviando a melhoria e ampliações a Linus, que
decide se inclui ou não estes códigos no núcleo do Linux. A designação Linux é uma combinação do nome Linus com
Unix.
O sistema operacional Linux foi um dos grandes propulsores do conceito de software aberto e livre, podendo ser
obtido gratuitamente por download em diferentes sitios da rede. Embora muitos achem que o Linux é exclusivamente
utilizado em universidades, isto tem mudado rapidamente, sendo agora usado por grandes empresas, principalmente em
aplicações ligadas à Internet. Estima-se que existem dez milhões de computadores rodando Linux no mundo.
Conceitos Iniciais
• Sistema Operacional: É o componente do software que faz a interface entre os programas do usuário e o
computador; gerenciando itens como recursos, periféricos, segurança, comunicações e outros.
• Licenças: Existe uma série de termos de uso que regulamenta, softwares. Cada autor de software é livre para
escolher o tipo de licença que adotará (comercial, shareware, etc). A licença típica do Linux é a GPL (General
Public Licence), que permite livre uso, alteração e redistribuição, desde que as cópias redistribuídas adotem a
mesma licença do original. Outra licença típica de sistemas abertos (sistemas cujo código está disponível e pode ser
modificado livremente) é a BSD, que permite livre uso e redistribuição e dá a opção para que se altere os termos da
licença.
• Distribuição Linux: Uma distribuição Linux é a reunião do kernel do Linux a um conjunto de softwares
desenvolvido por terceiros, respeitando os termos de licenciamento. Qualquer pessoa pode criar uma distribuição
Linux, porém apenas um pequeno grupo delas tem presença significativa no mercado. Algumas das principais
distribuições são: Slackware, Conectiva, Red Hat, Debian, Mandrake e Suse.
• LSB: Linux Standards Base. È um conjunto de padrões (facultativos) aos quais as distribuições devem aderir para
facilitar o desenvolvimento de software que não seja específico de uma dada distribuição.
Um arquivo é uma seqüência de bytes qualquer gravada na memória secundária do computador (discos rígidos,
discos flexíveis etc) . O conceito de arquivo é implementado, manipulado e gerenciado pelo sistema operacional. Quando
um processo cria um arquivo dá a ele um nome; quando o processo termina sua execução o arquivo permanece gravado,
podendo ser usado por outros processos. Em geral arquivos representam programas e dados e podem ser gravados como
texto legível ou na forma binária.
O Linux distingue entre letras maiúsculas e minúsculas, não há limite de número de caracteres utilizados para dar
nome ao arquivo e estes podem ter uma ou mais extensões que devem ser separadas por um ponto.
O Linux suporta arquivos regulares, de diretórios, especiais de caracteres e arquivos especiais bloqueados.
Arquivos regulares são aqueles que contém informações de usuários. Arquivos diretórios são usados na manutenção do
sistema de arquivos. Arquivos especiais de caracteres são usados para dispositivos de entrada/saída, como terminais,
impressoras e rede. Os arquivos especiais bloqueados são usados para modelar dispositivos.
Um sistema de arquivos é o método e a estrutura de dados que um sistema operacional utiliza para administrar
arquivos. O Linux organiza o seu sistema de arquivos em uma arvore hierarquizada, que agrega todas as informações
relativas ao sistema de arquivos e onde cada nó da arvore representa um arquivo.
Uma das características mais importantes do Linux é o suporte para vários sistemas de arquivos diferentes, o que
lhe dá muita facilidade para interagir com outros sistemas operacionais. Dentre estes sistemas destacamos:
Minix: É o mais antigo e presumivelmente o mais confiável, porém limitado em características e restrito em capacidade de
armazenamento.
Ext2: O mais poderoso e popular sistema de arquivos do Linux. Desenhado para ser compatível com os avanços das novas
versões sem a necessidade de recriar os sistemas de arquivos existentes.
Ext: Versão mais antiga do ext2 que não é mais compatível com as versões atuais.
Nfs: Sistema de arquivos em redes que permite o compartilhamento e o acesso aos arquivos entre diversos computadores em
rede.
Reisefs: Criado nos laboratórios da Suse em conjunto com outras empresas para oferecer um sistema de arquivos seguro e
confiável.
A estrutura de diretórios
O Linux tem uma estrutura de diretórios peculiar, objeto de uma série de padronizações e similar à que se encontra
em versões comerciais do Unix. A figura abaixo apresenta uma estrutura hierárquica típica.
2
/sbin Similar ao /bin, porém os comandos não são destinados aos usuários
comuns.
/usr Este diretório é normalmente grande uma vez que a maioria dos
programas do sistema são aí instalados. Programas locais são
instalados em /usr/local, o que torna a atualização do sistema
possível sem que seja necessário instalar todos os programas
novamente.
3
A cada arquivo e diretório é associado um conjunto de permissões. Geralmente as permissões são descritas em uma
seqüência de 10 caracteres, sendo que o primeiro indica o tipo de arquivo (d para diretório, l link, c ou b dispositivo, -
demais arquivos) e os demais formam 3 grupos de 3 caracteres indicando os privilégios de cada classe de usuários.
Vê-se por exemplo que a seqüência –rwxr-xr-x indica que o usuário proprietário do arquivo comum (denotado
por “-“ na primeira posição) tem direitos de leitura, escrita e execução, o grupo proprietário tem direitos de leitura e
execução e os demais usuários tem também direitos de leitura e execução. As permissões de acesso podem ser alteradas pelo
comando chmod.
Comandos básicos
alias Permite criar nomes simbólicos para comandos
Sintaxe: alias nome comando
cat Usado para concatenar arquivos. Também pode ser usado para exibir o conteúdo de arquivos de uma só
vez.
Sintaxe:
cat arq1 arq2 ... arqn : exibe os arquivos arq1 arq2 ... arqn
cat arq1 arq2 > arq3 : concatena os arquivos arq1 e arq2 e coloca o resultado em arq3
cd Muda o diretório atual
Sintaxe: cd diretório
onde diretório é o nome do diretório para o qual se deseja mudar. O símbolo “.” refere-se ao diretório atual
e “..” refere-se ao diretório pai (diretório imediatamente acima na árvore)
chgrp Modifica o grupo a que pertence um arquivo ou diretório
Sintaxe: chgrp [-f] [-h] [-R] gid nome_do_arquivo
“gid” pode ser um número decimal especificando o “group id” ou um nome de grupo encontrado no arquivo
“/etc/group”. Você deve ser o proprietário do arquivo ou o superusuário para utilizar este comando.
Opções saída:
-f : Não informa erros
-h : Se o arquivo for um link simbólico, esta opção modifica o grupo do link. Sem esta opção o grupo do
arquivo referenciado pelo link simbólico é modificado.
-R: Opção recursiva. “chgrp” percorre o diretório e os subdiretórios, modificando o gid à medida que
prossegue.
chmod Modifica as permissões de um arquivo ou diretório. Você deve ser o proprietário do arquivo ou diretório ou
ser o superusuário para modificar as suas permissões.
Sintaxe:
chmod permissões nome_do_arquivo
onde permissões podem ser modificadas da seguinte forma:
(1) Utilize u para usuário, g para grupo, o para outros e a para todos os anteriores
(2) Utilize “+” para adicionar permissões, “−” para removê-las.
(3) Indique as permissões envolvidas com (r, read; w, write; x, execute)
Exemplo: Para dar permissão de leitura ao proprietário do arquivo ABC e remover a permissão de
escrita do grupo para este mesmo arquivo escreveremos:
4
chmod u+r g-w ABC
chown Modifica o proprietário de um arquivo ou diretório. Você deve ser o proprietário do arquivo ou o
superusuário.
Sintaxe: chown [-fhR] proprietário nome-do-arquivo
proprietário é um número decimal especificando o userid do usuário ou um “login name” encontrado no
arquivo “/etc/passwd”
Opções saída:
-f : Não informa erros
-h : Se o arquivo for um link simbólico, esta opção modifica o grupo do link. Sem esta opção o grupo do
arquivo referenciado pelo link simbólico é modificado.
-R :Opção recursiva. “chown” percorre o diretório e os subdiretórios, modificando o gid à medida que
prossegue.
cp Copia arquivos para um outro arquivo ou diretório
origem... são os arquivos fontes que serão copiados para destino. O arquivo fonte e destino não podem ter o
mesmo nome. Se o arquivo destino não existe “cp” criará um arquivo com o nome especificado. Se destino
já existe e não for um diretório, “cp” escreverá por cima do conteúdo já existente.
Opções
-p : Preserva o proprietário original, grupo, permissões, tempo da ultima modificação e o tempo do último
acesso.
csplit Separa os arquivos sempre que encontrar uma combinação entre seus argumentos e o conteúdo do arquivo.
Sintaxe: csplit [-f] prefixo arquivo string
-f prefixo : Prefixo dos arquivos de saída. O sufixo varia de 00 a 99.
Exemplo: O arquivo “livro” contém:
Introdução, Capitulo 1, Capitulo 2, Resumo
csplit –f capit livro “/Capitulo /” “/Capitulo /” retornará:
capit00 (contendo Introdução), capit01 (contendo Capitulo 1)
capit02 (contendo Capitulo 2 e Resumo)
cut Imprime, na saída padrão, partes selecionadas de linhas em arquivos.
Sintaxe: cut [-cdfs] arquivo
-cx-y : define caractere inicial (x) e caractere final (y)
-dChar : define delimitador (Char)
-fx,y : define campo inicial (x) e campo final (y)
-s : suprime linhas que não contém delimitador. Deve ser usado com a opção –d
date Exibe a data configurada no sistema.
du Exibe o espaço ocupado por um diretório e todos os seus subdiretórios, em unidades de 512 bytes.
Sintaxe: du [-aks] [arquivo...]
-a : Exibe a contagem para todos os arquivos encontrados.
5
-k : Usa a unidade de 1024 bytes em vez do padrão 512 bytes.
-s : Exibe apenas o espaço usado para arq e não para seus subdiretórios.
echo Escreve argumentos na saída padrão (stdout)
Sintaxe: echo [-n] string
-n : Não adiciona uma nova linha após escrever o string.
file Exibe o tipo de um arquivo.
Sintaxe: file arquivo
ftp Inicia o cliente ftp. Transferência de arquivos.
Sintaxe: ftp endereço_remoto
grep Exibe todas as linhas dos arquivos especificados que contém um certo padrão.
Sintaxe: grep [-i] [padrão] arquivo...
padrão é uma expressão regular e arquivo... são os arquivos nos quais a busca será feita.
-i : Ignora a distinção entre letras maiúsculas e minúsculas.
head Exibe as primeira 10 linhas em um arquivo.
Sintaxe: head [-cn] [arquivo...]
-c m: seleciona as m primeiras colunas em arquivo
-n : seleciona as n primeiras linhas em arquivo
Se arquivo não for especificado head ler a entrada padrão.
join Junta dois arquivos combinado linha a linha. Os arquivos devem estar ordenados.
Sintaxe: join [-at] arq1 arq2
-a num_arq : Produz uma linha na saída para cada linha do arquivo especificado por num_arq, onde
num_arq é 1 ou 2 correspondendo a arq1 ou arq2.
-tChar : Define o delimitador de campo (Char).
ls Exibe informações sobre arquivos nomeados e diretórios. É usado para visualizar o conteúdo de um
diretório.
Sintaxe: ls [-adlR] arquivo...
-a : Inclui na listagem os arquivos com o nome iniciando com “.”
-d : Lista nome de diretórios como arquivos no lugar de seus conteúdos.
-l : Escreve o modo do arquivo, o numero de ligações para o arquivo, o nome do proprietário, o nome do
grupo, o tamanho do arquivo (em bytes), o rotulo de tempo e o nome do arquivo.
-R : Lista os diretórios recursivamente.
man Exibe as páginas do manual on-line.
Sintaxe: man comando
mkdir Cria novos diretórios.
Sintaxe: mkdir [-mp] diretório...
-m (modo) : Permite ao usuário especificar o modo a ser usado para os novos diretórios.
-p : Cria o nome do diretório através da criação de todos os diretórios-pais não existentes
primeiro.
more Exibe o conteúdo de arquivos fazendo pausas a cada tela cheia.
Sintaxe: more [-c] arquivo...
-c : Limpa a tela antes de exibir o conteúdo do arquivo.
mv Move arquivos para um outro arquivo ou diretório.
6
Sintaxe: mv [-fi] origem... destino
-f : Apaga destinos existentes sem perguntar ao usuário.
-i : Pergunta ao usuário antes de sobrescrever o arquivo de destino.
passwd Modificam a senha pessoal.
Sintaxe: passwd [username]
ps Mostra o estado dos processos que estão rodando.
pwd Exibe o seu diretório atual.
rm Remove arquivos e diretórios.
Sintaxe: rm [-fir] arquivo...
-f : Remove os arquivos (mesmo com proteção de escrita) sem pedir confirmação do usuário.
-i : Solicita confirmação antes de apagar os arquivos.
-r : Remove um diretório e todo o seu conteúdo, incluindo os subdiretórios se existentes.
ssh Inicia o cliente SSH. Permite conectar com computador remoto
Sintaxe: ssh [-l nome_de_login] endereço_remoto
sort Ordena e combina múltiplos arquivos.
Sintaxe: sort [-bdfmnrut] arquivos
-b : Ignora espaços em branco para encontrar a primeira ou última coluna do campo.
-d : Classifica usando ordem alfabética. Somente letras dígitos e espaços são considerados na comparação.
-f : Altera todas as letras minúsculas para maiúsculas antes da comparação.
-m : Junta todos os arquivos de entrada em um só.
-n : Ordena ao arquivo em ordem decrescente.
-u : Apaga linhas duplicadas.
-t : Define delimitador.
Exemplos:
sort -nru arquivo : ordena arquivo em ordem numérica decrescente e apaga as linhas duplicadas.
sort -m arq1 arq2 : junta arq1 e arq2 e ordena
split Divide um arquivo em partes.
Sintaxe: split [-n] arquivo [prefixo]
-n : Especifica o número de linhas de cada arquivo de saída. O padrão é 1000 linhas por arquivo.
prefixo : Prefixo dos arquivos criados. Os sufixos serão aa, ab, ...
tail Exibe as 10 linhas finais de um arquivo.
Sintaxe: tail [-nf] [arquivo...]
-n : seleciona as n últimas linhas
-f : mostra as linhas à medida que são adicionadas ao arquivo
top Mostra as tarefas em realização no Linux
touch Atualiza o ultimo tempo de acesso e/ou modificação de um arquivo. Um arquivo vazio será criando se o
nome especificado ainda não existir.
Sintaxe: touch [-acm] [-t time] nome-do-arquivo
-a : Altera a data de acesso do arquivo
-c : Não cria o arquivo
-m : Altera a data de modificação do arquivo.
-t time: Usa a data especificada (time) como novo valor para o(s) rótulo(s) de tempo alterado. O
7
argumento é um numero decimal na forma [[CC]YY]MMDDhhmm[.SS] com significado obvio.
wc Conta linhas, palavras e caracteres em arquivos.
Sintaxe: wc [-clw] arquivo
-c : conta caracteres
-l : conta linhas
-w : conta palavras
Características do C-Shell
• Semelhante à linguagem C
• Possui history que armazena comandos á medida que são digitados permitindo que sejam reutilizados sem
necessitar redigitação.
!! re-executa o último comando
!n re-executa o comando n
!ftp re-executa o último comando iniciado por ftp
!echo:p lista o último comando echo executado
• Possui aliases, isto é permite ao usuário criar nomes simbólicos para comandos
• Permite que se mova as tarefas d primeiro para o segundo plano e vice-versa.
Para iniciar um comando em segundo plano coloque o caractere & após o comando
8
Para listar os comando que estão sendo executados digite jobs
Para trazer o comando para o primeiro plano digite fg n, onde n é o número do processo obtido no comando jobs
Sempre que se executa um comando estamos usando o Shell iterativamente sendo que as entradas/saída padrão
(stdin/stout) e a saída de erro padrão (stder) são direcionadas para o terminal. Pode-se também alterar as saídas padrão
utilizando operadores que redirecionam a saída do comando.
< arquivo Utiliza arquivo no lugar da entrada padrão (stdin)
> arquivo Utiliza arquivo no lugar da saída padrão (stdout)
>> A saída do comando é direcionada cumulativamente para arquivo
arquivo
& Reúne stderr e stdout
! Escreve sobre arquivos ignorando uma eventual proteção
| Conecta stdout de um comando a stdin de outro (Conduto). Exemplo: ls –
la|more (conecta a saída do comando ls a entrada do comando more)
O Shell script
Utilize o vi ou outro editor de texto para criar o arquivo com o “script”.
Na primeira linha indique o qual o Shell que irá interpretar o comando. Para utilizar o C-Shell digite #!/bin/csh.
Após a criação do script use o seguinte comando para que o sistema reconheça o seu script como um executável: chmod
u+x nome_do_script.
Variáveis no C-Shell
Para processar as informações é necessário manter certos dados na memória RAM do computador. A memória
RAM é dividida em pequenas partes e cada parte possui um número chamado endereço de memória. A estes endereços de
memória podemos atribuir nomes que chamamos de variáveis. No Shell Linux existem dois tipos de variáveis:
Variáveis do sistema (globais) – criadas e mantidas pelo sistema. Estas variáveis são representadas em letras maiúsculas.
Variáveis definidas pelo usuário (locais) – Criadas e mantidas pelos usuários. Representadas em letras minúsculas.
Nomes de variáveis devem começar com caracteres alfanuméricos ou caractere underscore (_)
Nomes de variáveis não podem conter hífen (-)
Os nomes de variáveis distinguem letras maiúsculas e minúsculas
Não use ?,* etc, no nome de variáveis
Não utilize espaços à direita ou à esquerda do sinal de igual quando na definição de variáveis.
9
Para utilizar o valor de uma variável devemos utilizar o sinal $ antes de seu nome (exemplo: set v1=casa, echo $v1 –
escreve na tela o valor da variável v1, isto é “casa”)
Atribuído valores a variáveis:
Tipo string:
set var=expressão (exemplos: set v=”física”, set ano=2004)
Tipo inteiro:
@ var=expressão ( Exemplo: @ ano=2004 , @ v1=2, @ v2=3 )
Incrementar e decrementar:
@ v1++ (soma 1 à variável $v1)
@ v2-- (subtrai 1 da variável $v2)
Passagem de parâmetros:
$#argv Retorna o número de argumentos passados
$1, $2, $3,... Argumentos posicionais
$0 Retorna o nome do programa
$* Retorna todos os argumentos
$$ Retorna o número do processo do comando
atual
Operadores
Compara variáveis numéricas == (igual) != (diferente)
ou strings
Compara somente strings =~ (igual) !~ (diferente)
Lógicos and, && (e); or, || (ou)
10
>, < (maior, menor)
>=, <= (maior ou igual, menor ou igual)
Operadores aritméticos +, -, *, /
Teste para arquivos (V/F) -e arquivo (V se arquivo existe)
-r arquivo (V se arquivo é legível)
-w arquivo (V se arquivo pode ser escrito)
-x arquivo (V se arquivo é executável)
-d dir (V se dir existir)
-z arquivo (V se arquivo existir com
tamanho zero)
11
end echo $pessoa
end
while Exemplo:
while (expressão) while ($a<=10)
comandos echo “Valor = $a”
end $a++
end
O básico do editor vi
O vi (visual editing) é o editor de texto básico do Unix/Linux. Ele é fornecido com todas as versões do sistema
operacional. O vi possui três modos de edição: o modo de comandos, o modo de inserção e o modo de movimentação do
cursor.
- uma vez no modo de movimentação do cursor, digite "i" para entrar no modo de inserção e ":" para entrar no
modo de comandos.
Para iniciar o vi
vi arquivo abre ou cria arquivo
vi +18 arquivo abre arquivo na linha 18
vi +/”string” arquivo abre arquivo na primeira ocorrência de string
view arquivo abre o arquivo somente para leitura
Comandos de cursor
h move à esquerda
j move para baixo
k move para cima
l move à direita
w move uma palavra à direita
W move uma palavra à direita (além da pontuação)
b move uma palavra à esquerda
B move uma palavra à esquerda (além da pontuação)
[Return] move uma linha abaixo
[Back Space] move um caractere à esquerda
[Espaço] move um caractere à direita
H move para o início da tela
M move para o meio da tela
L move para o fim da tela
[Ctrl-F] avança uma tela
[Ctrl-D] avança meia tela
[Ctrl-B] retorna uma tela
[Ctrl-U] retorna meia tela
Modificações de texto
cw altera palavra à direita do cursor
cc altera a linha
C altera parte da linha à direita do cursor
s substitui o caractere no qual o cursor está posicionado
J junta a linha atual com a linha abaixo
xp troca o caractere em que o cursor está com o caractere
à direita
u desfaz o comando anterior
U desfaz todas as alterações na linha
x apaga caractere
dw apaga palavra à direita do cursor
dd apaga a linha
D apaga parte da linha à direita do cursor
:5,10 d apaga da linha 5 até a linha 10
yy ou Y marca linha a ser copiada
p copia a linha marcada abaixo da linha atual
P copia a linha marcada acima da linha atual
dd apaga a linha
:1,2 co 3 copia as linhas 1-2 e coloca-as depois da linha 3
:4,5 m 10 move as linhas 4-5 e coloca-as depois da linha 10
Busca e substituição
set nu mostra as linhas numeradas
set nonu inibe a numeração das linhas
G vai para a última linha do arquivo
21G vai para a linha 21
/string/ procura string
?string? procura string no texto acima
n procura a próxima ocorrência de string
:g/string1/s//string2/gc procura por string1 e substitui por string2
consultando antes
[Ctrl-L] limpa a tela
:r arquivo insere o conteúdo de arquivo depois do cursor
:34 r: arquivo insere o conteúdo de arquivo após a linha 34
13
Salvando e saindo do vi
:w salva as alterações no “buffer”
:w arquivo grava o conteúdo do “buffer” em arquivo
:wq ou :zz salva as alterações e sai do vi
:q! sai do vi sem salvar as alterações
Maquinas de Busca:
www.cade.com.br
www.google.com.br
www.scholar.google.com
Linux:
www.mandrakelinux.com/pt-br Página do Mandrake
www.suse.com Página do Suse
www.redhat.com Página do Redhat
www.conectiva.com.br Página do Conectiva
www.kuruminlinux.com.br Fórum Kurumin
www.slackware.com Página do Slackware
Software:
www.driversguide.com Drivers diversos
www.grisoft.com AVG antivírus
www.superdownloads.com.br Possui diversos programas que podem ser
descarregados
www.macfee.com Mcafee antivírus
housecall.trendmicro.com Antivírus com varredura “on-line”
Científico:
www.scithdaily.com Apresenta “link” de noticias cientificas
selecionadas
http://www.periodicos.capes.gov.br Portal de periódicos da CAPES
www.nist.gov National Institute of Standards and
Technology
cienciahoje.uol.com.br Revista de ciências “on-line”
www.scite.pro.br/ Banco de recursos didáticos de ciências
Bibliografia
[1] Augusto C. Campos, “Introdução ao Linux”, www.br-linux.org
[2] Rodrigo O.R. Antunes, Instituto de Informática – Departamento de Ciências da Computação – PUC-MG,
www.i2.com.br/~rora/aulas/topicos/arquivos.
[3] Adriano Silveira da Silva, Ivan Leitzke Pagel, “Sistemas de arquivos no Linux”, Escola de Informática- Universidade
Católica de Pelotas.
[4] Cristiana Munhoz Eugênio, Lillian Palermo, “UNIX Avançado – Programação C-Shell”, UNICAMP, SP-Br.
[5] Aurélio Marinho Jargas, “Canivete suíço do programador Shell”, http://aurelio.net/shell/canivete.html
14