Você está na página 1de 6

Universidade Federal de São João Del-Rei

Aula Prática de Sistemas Embarcados


Prof. Adriano S. V. Cardoso
Profa . Mariana G. Moreira

Primeiros passos no Linux


Considerações iniciais
Um sistema operacional qualquer poder ser decomposto em três componentes fundamentais:
1. núcleo (kernel ), responsável por prover mecanismos de acesso aos recursos computacionais
(processador, memória e periféricos);
2. bibliotecas básicas (libs), contendo componentes essenciais de programas, comuns a diversos
tipos de situação, como por exemplo, soluções de funções trigonométricas e logarı́tmicas,
algoritmos de criptografia;
3. aplicação (task ), que corresponde ao programa ou conjunto de programas que tem por
finalidade utilizar dos recursos computacionais para execução de alguma tarefa.
O sistema operacional Linux consiste de um conjunto de componentes em código aberto, baseados
no kernel desenvolvido e mantido por Linus Torvalds (www.kernel.org), na extensa biblioteca de
ferramentas mantidas pela GNU (www.gnu.org), organizados por grupos mantenedores denom-
inados distribuições, como por exemplo, Debian, Gentoo e Ubuntu. Cada distribuição é dotada
de suas particularidades, porém todas estão alicerçadas nos elementos previamente descritos.
O Linux implementa a estrutura do Unix, que apresenta as seguintes caracterı́sticas gerais:
1. organização dos arquivos não está vinculada a um dispositivo fı́sico. Dispositivos de ar-
mazenamento locais ou remotos são atribuı́dos a pontos de acesso dentro da árvore do
sistema. Ex.: /media/pendrive, /net/remote/data;
2. cada arquivo do sistema possui um proprietário, que define suas permissões de acesso
individual e coletiva;
3. os arquivos de configuração do sistema são quase sempre em formato texto, permitindo sua
reconfiguração através de um editor de texto comum;
4. o processamento tende a ocorrer em etapas, realizadas por diferentes programas, cuja en-
trada e saı́da são usualmente arquivos texto, de maneira que a execução em linha (pipeline)
é facilmente alcançada;
5. o sistema é nativamente multi-tarefa e multi-usuário.

Usuário e acesso ao sistema


O primeiro passo é realizar o login no sistema. Nos computadores do laboratório, utilizar o
usuário aluno, cuja senha deverá ser informada pelo professor.
O super-usuário de um sistema Unix/Linux (root) conta com privilégios de acesso, de maneira
que ele pode modificar as permissões de todos os outros usuários. Desta forma, seu acesso é ir-
restrito. Por esta razão, não se deve utilizar um sistema Linux como root (diretiva de segurança)
exceto em casos particulares. (Se você não tem uma boa razão para realizar um procedimento
com super-usuário, não o faça!)

O terminal
Embora praticamente todas as distribuições Linux contem com interface gráfica de usuário, um
recurso importantı́ssimo para o programador é o terminal. Nele é possı́vel enviar comandos
diretamente para o kernel, além de possibilitar a operação remota sem necessidade de conexão
banda larga.
Para abrir um terminal, localize o ı́cone na tela ou tecle Ctrl+Alt+T simultaneamente.

Árvore de diretórios do sistema


Uma vez que seu acesso foi autorizado, você estará dentro do diretório de seu usuário (/home/aluno).
Nele você tem permissão para criar ou deletar arquivos e diretórios e executar programas locais.
Para visualizar seu diretório corrente no terminal, use o comando:
$ pwd
Para criar um novo diretório, use o comando:
$ mkdir nome-do-diretorio
Dica: a fim de facilitar o operação no terminal e evitar transtornos devidos a diferentes con-
figurações de padrão de caracteres, evite a utilização de caracteres acentuados nos nomes dos
diretórios e arquivos. Não utilize espaço nos nomes dos diretórios e arquivos.
Para acessar o novo diretório, use o comando:
$ cd nome-do-diretorio
Para retornar ao novo diretório acima, use o comando:
$ cd ..
Para criar um arquivo vazio, use o comando:
$ touch nome-do-arquivo
Para visualizar o conteúdo do diretório corrente, use o comando:
$ ls
Para deletar um arquivo, use o comando:
$ rm nome-do-arquivo
Lembrete: o comando de deletar não solicita confirmação. Uma vez removido, não é possı́vel
recuperar o arquivo.
Exemplo:
$ pwd
/home/aluno
$ mkdir WaltDisney
$ cd WaltDisney
$ pwd
/home/aluno/WaltDisney
$ touch Mickey
$ touch Minnie
$ touch Donald
$ ls
Donald Mickey Minnie
$ rm Donald
$ ls
Mickey Minnie
$ cd ..
$ pwd
/home/aluno
Permissões
Cada usuário no Linux pertence a um grupo. Para consultar os grupos ao qual seu usuário
pertence, use o comando:
$ groups
O primeiro grupo mostrado é o seu grupo corrente. Para selecionar outro grupo dentre os quais
seu usuário pertence, use o comando:
$ sg outro-grupo
Cada arquivo possui um dono, o qual define permissões para si, para o grupo ao qual pertence e
para demais usuários (fora do grupo). Para ver as permissões dos arquivos do diretório corrente,
use o comando:
$ ls -l
Considere o seguinte exemplo:
$ groups
alunos lab_a lab_b
$ cd WaltDisney
$ pwd
/home/aluno/WaltDisney
$ ls
Mickey Minnie
$ ls -l
total 0
-rw-r--r-- 1 aluno alunos 0 Aug 10 16:26 Mickey
-rw-r--r-- 1 aluno alunos 0 Aug 10 16:26 Minnie
$ sg lab_a
$ touch Daisy
$ ls -l
total 0
-rw-r--r-- 1 aluno lab_a 0 Aug 10 16:29 Daisy
-rw-r--r-- 1 aluno alunos 0 Aug 10 16:26 Mickey
-rw-r--r-- 1 aluno alunos 0 Aug 10 16:26 Minnie

Todos os arquivos pertencem ao usuário aluno (coluna 3).


Os arquivos Mickey e Minnie estão vinculados ao grupo alunos (coluna 4), pois foram criados
antes do comando sg.
O arquivo Daisy pertence ao grupo lab a, pois foi criado após o comando sg. Todos os arquivos
criados após este comando ficarão vinculados ao grupo lab a.
A coluna 9 contém o nome do arquivo.
A coluna 1 registra o tipo e as permissões do arquivo, codificados da seguinte maneira, da
esquerda para direira:
- rw-
|{z} r--
|{z} r--
|{z}
tipo dono grupo demais
O primeiro caracter indica se é um arquivo, diretório ou dispositivo: - indica um arquivo regular;
d indica um diretório; l indica um link para arquivo...
Os conjuntos de três caracteres indicam as permissões do arquivo, definidas para o dono do
arquivo, grupo vinculado e outros, respectivamente. Cada conjunto de permissões está codificado
com as letras rwx, onde:
r indica permissão de leitura, w permissão de escrita e x permissão de execução. - indica ausência
de permissão. Por exemplo:
$ ls -l
total 0
-rw-r--r-- 1 aluno lab_a 0 Aug 10 16:29 Daisy
-rw-r--r-- 1 aluno alunos 0 Aug 10 16:26 Mickey
-rw-r--r-- 1 aluno alunos 0 Aug 10 16:26 Minnie

O arquivo Daisy pode ser lido ou escrito pelo dono do arquivo (aluno), pode ser lido por
qualquer usuário do grupo lab a e também por usuários de outros grupos (demais) e não pode
ser executado por ninguém.
Os arquivos Mickey e Minnie podem ser lidos ou escritos pelo dono do arquivo (aluno), podem
ser lidos por qualquer usuário do grupo alunos e por usuários de outros grupos (demais) e não
podem ser executados por ninguém.
A alteração das permissões dos arquivos é feita através do comando chmod. Para modificar as
permisões do arquivo Daisy de forma que usuários de usuários de outros grupos (exceto lab a)
não possam ler o arquivo, use o comando:
$ chmod o-r Daisy
(o indica outros (grupos), - indica exclusão (subtração), r indica permissão de leitura.)
Para modificar as permissões do arquivo Minnie de forma que os usuário do grupo aluno possam
também escrever no arquivo, use o comando:
$ chmod g+w Minnie
(g indica grupo, + indica inclusão (adição) e w indica escrita.)
Para modificar as permissões do arquivo Mickey de forma que somente o dono possa ler e escrever
no arquivo, use os comandos:
$ chmod o-r Mickey
$ chmod g-r Mickey
Para verificar as alterações:
$ ls -l
total 0
-rw-r----- 1 aluno lab_a 0 Aug 10 16:29 Daisy
-rw-rw-r-- 1 aluno alunos 0 Aug 10 16:26 Mickey
-rw------- 1 aluno alunos 0 Aug 10 16:26 Minnie

Permissão de execução
Todo arquivo com permissão de execução é um programa. Caso comandos do shell sejam escritos
em um arquivo com permissão de execução, os mesmos serão executados em lista quando for
solicitada a execução do arquivo. Por exemplo:
$ touch Goofie
$ chmod u+x Goofie
$ ls -l
total 0
-rw-r----- 1 aluno lab_a 0 Aug 10 16:29 Daisy
-rwxr--r-- 1 aluno lab_a 0 Aug 10 16:35 Goofie
-rw-rw-r-- 1 aluno alunos 0 Aug 10 16:26 Mickey
-rw------- 1 aluno alunos 0 Aug 10 16:26 Minnie

O arquivo Goofie foi criado e foi acrescentada permissão de execução. Trata-se de um arquivo
vazio. Para editá-lo, use um editor de texto, como por exemplo o gedit:
$ gedit Goofie &
O caracter & indica que o programa executado (gedit) deverá rodar em segundo plano, e por
isso, o terminal deve ser liberado antes de sua conclusão. Edite o conteúdo do arquivo da seguinte
maneira. Não se esqueça de salvar as alterações:
echo "Gorsh!"
ls -l
Para executar o programa, no terminal:
$ ./Goofie
Gorsh!
total 0
-rw-r----- 1 aluno lab_a 0 Aug 10 16:29 Daisy
-rwxr--r-- 1 aluno lab_a 20 Aug 10 16:36 Goofie
-rw-rw-r-- 1 aluno alunos 0 Aug 10 16:26 Mickey
-rw------- 1 aluno alunos 0 Aug 10 16:26 Minnie
O comando echo foi executado (mostra na tela a mensagem entre aspas) e o comando ls -l foi
executado em seguida.
Ferramentas úteis
O comando cat pode ser usado para mostrar no terminal o conteúdo do arquivo. Por exemplo:

$ cat Goofie
echo "Gorsh!"
ls -l

Repare que o conteúdo do arquivo foi mostrado, mas o arquivo não foi executado.
Para fazer cópia de arquivos, use o comando:
$ cp origem destino
Por exemplo:

$ cp Mickey Donald
$ ls
Daisy Donald Goofie Mickey Minnie

Outra ferramenta bastante útil é a compactação e descompactação de aquivos. Para compactar,


use o comando:
$ zip nome-do-arquivo-compactado lista-de-arquivos-incluidos
Por exemplo:

$ zip meninas.zip Daisy Minnie


adding: Daisy (stored 0%)
adding: Minnie (stored 0%)
$ zip todos.zip *
adding: Daisy (stored 0%)
adding: Donald (stored 0%)
adding: Goofie (stored 0%)
adding: Mickey (stored 0%)
adding: Minnie (stored 0%)
adding: meninas.zip (stored 0%)
$ ls -l
total 0
-rw-r----- 1 aluno lab_a 0 Aug 10 16:29 Daisy
-rw-rw-r-- 1 aluno alunos 0 Aug 10 16:37 Donald
-rwxr--r-- 1 aluno lab_a 0 Aug 10 16:36 Goofie
-rw-rw-r-- 1 aluno alunos 0 Aug 10 16:26 Mickey
-rw------- 1 aluno alunos 0 Aug 10 16:26 Minnie
-rw-r--r-- 1 aluno lab_a 250 Aug 10 16:38 meninas.zip
-rw-r--r-- 1 aluno lab_a 310 Aug 10 16:38 todos.zip

Para descompactar, use o comando:


$ unzip nome-do-arquivo-compactado
Para que os arquivos descompactados não sobreponham aos existentes, façamos em outro di-
retório. Por exemplo:

$ mkdir temp
$ cp todos.zip temp/
$ cd temp
$ unzip todos.zip
Archive: todos.zip
extracting: Daisy
extracting: Donald
extracting: Goofie
extracting: Mickey
extracting: Minnie
extracting: meninas.zip
$ ls -l
total 0
-rw-r----- 1 aluno lab_a 0 Aug 10 16:29 Daisy
-rw-rw-r-- 1 aluno alunos 0 Aug 10 16:37 Donald
-rwxr--r-- 1 aluno lab_a 0 Aug 10 16:36 Goofie
-rw-rw-r-- 1 aluno alunos 0 Aug 10 16:26 Mickey
-rw------- 1 aluno alunos 0 Aug 10 16:26 Minnie
-rw-r--r-- 1 aluno lab_a 250 Aug 10 16:38 meninas.zip
-rw-r--r-- 1 aluno lab_a 310 Aug 10 16:38 todos.zip