Programação I

Aula Prática 1 (parte A)

Sumário


Noções sobre o Linux

O Linux é um sistema operativo. Um sistema operativo é um conjunto de programas que gerem os recursos do computador, permitindo-nos trabalhar com ele.

O Linux é um sistema operativo multi-utilizador e multi-tarefa (significa que várias pessoas podem usar o mesmo computador ao mesmo tempo e correndo programas diferentes).

O Linux tem um mecanismo de segurança que impede os utilizadores normais de danificarem ficheiros que são essenciais para o bom funcionamento do sistema. Portanto, não tenham medo de experimentar. O computador "não morde", e o pior que pode acontecer é perderem os vossos ficheiros pessoais.

Cada utilizador tem um nome (login name) e uma password, que o identifica no sistema. Tem também uma área de trabalho só dele, a que se chama home, aqui encontram-se todos os ficheiros que lhe pertencem.

O Linux é sensível às maiúsculas e minúsculas.

Comandos Básicos do Linux

Grande parte dos comandos são abreviaturas de palavras inglesas.

Comandos de uso geral

login - identifica os utilizadores que entram no sistema.
        Login:  nome do utilizador
        Password: ***********

exit - para terminar a sessão de trabalho.

        $ exit
yppasswd - para alterar a password.
        $ yppasswd 
        Password Actual:
        Password Nova:
        Password Nova (confirmação):
Nota: É importante não esquecer a password.

man - para pedir ajuda sobre um comando (man de manual).

        $ man nome_comando
Para sair da ajuda, tecla q (quit).

Comandos sobre directorias

As directorias servem para agrupar os ficheiros por temas, permitindo uma melhor organização da informação.

pwd - para indicar a directoria corrente (pwd de print working directory).

        $ pwd
ls - para ver o conteúdo das directorias (ls de list).
        $ ls nome_directoria    - mostra os ficheiros e outras directorias 
                                  no interior da directoria indicada.

        $ ls -F nome_directoria - coloca / à frente das directorias, 
                                  e * à frente dos ficheiros executáveis.

        $ ls -l nome_directoria - mostra mais informação sobre cada 
                                  ficheiro (permissões, links, dono, grupo, 
                                  tamanho, data, hora, nome do ficheiro).
cd - para mover entre directorias (cd de change directory).
        $ cd /                  - vai para a raíz.

        $ cd ..                 - sobe um nível, vai para a directoria a cima.

        $ cd .                  - a própria directoria.

        $ cd nome_directoria    - vai para a directoria indicada.

        $ cd                    - vai para a home.

mkdir - para criar novas directorias (mkdir de make directory).
        $ mkdir nome_directoria
rmdir - para apagar directorias (rmdir de remove directory).
        $ rmdir nome_directoria         - apaga apenas se a directoria 
                                          estiver vazia.
nome_directoria: Caminho desde a raíz (/) até á directoria desejada. Para cada novo nível na árvore coloca-se uma nova /.

Comandos sobre ficheiros

cp - para copiar ficheiros (cp de copy).
        $ cp nome_directoria_origem/nome_ficheiros nome_directoria_destino
mv - para mover ficheiros (mv de move).
        $ mv nome_dirertoria_origem/nome_ficheiros nome_direrctoria_destino/nome_ficheiros
Cuidado porque não pede confirmação e pode-se escrever por cima de dados importantes.

rm - para apagar ficheiros (rm de remove).

        $ rm nome_directoria/nome_ficheiros     - apaga os ficheiros da directoria indicada.

        $ rm nome_directoria -r                 - apaga a directoria mesmo sem estar vazia.
more - para ver o conteúdo de ficheiros.
        $ more nome_directoria/nome_ficheiros
Mostra no écran o contéudo do(s) ficheiro(s).
Comandos essenciais do more:    
        Space - ir para a próxima página
        b - ir para a página anterior
        q - quit (sair)

Metacaracteres (* e ?)

Os metacaracteres podem ser utilizados com qualquer um dos comandos de ficheiros, e facilitam bastante quando se pretende fazer a mesma operação sobre ficheiros que têm algo em comum no seu nome.

O * representa uma cadeia de caracteres.

O ? representa um caracter.

Permissões de Ficheiros

O Linux tem um mecanismo que nos permite proteger os nossos ficheiros dos outros utilizadores. A esse mecanismo chama-se Permissões de ficheiros.
Existem 3 tipos de Permissões:
        r - Leitura (read), pode ler o ficheiro;
        w - Escrita (write), pode escrever no ficheiro;
        x - Execução (execute), pode executar o ficheiro;


Podem ser aplicadas a ficheiros e directorias.


Existem 3 classes de utilizadores, cada classe com o seu tipo de permissões:
        O dono do ficheiro,
        O grupo a que o dono pertence,
        Os outros utilizadores.
chmod - para mudar as permissões, só o dono o pode fazer.
        $ chmod { a, u, g, o } { +, - } { r, w, x } nome_ficheiros 


Significado:

        { a, u, g, o }  - para definir que classes de utilizadores vai afectar.
                                a - all; u - user (dono); g - group; o - other;

        { + , - }       - para definir se atribui (+) ou retira (-) a permissão.        

        { r, w, x }     - para definir os tipos de permissões a mudar.
                                r - leitura; w - escrita; x - execução;  

Para ver as permissões existentes:
        $ ls -l 

Surge:
        -  rwx  r--  r--  user  group  tamanho  data  nome_ficheiro

Significado:

        (-)       - tipo do ficheiro

        (rwx)     - permissão do dono (user)
                    Neste caso, pode ler, escrever e executar o ficheiro.

        (r--)     - permissão do grupo
                    Neste caso, os utilizadores do grupo do dono só podem ler.

        (r--)     - permissão dos outros utilizadores
                    Neste caso, igual ao do grupo

        (user)    - quem é o dono

        (group)   - a que grupo pertence

        (tamanho) - tamanho do ficheiro

        (data)    - data do ficheiro
Nota: As permissões de um ficheiro dependem também das permissões da directoria em que se encontra.

O Ambiente de Trabalho

Para criar um programa numa linguagem de programação qualquer, existem quatro passos que têm sempre que acontecer:
  1. Pensar no problema, de preferência com papel e lápis.
  2. Escrever o programa, para isso é necessário um editor de texto.
  3. Verificar se o código que se escreveu não tem erros, para isso é necessário um compilador da linguagem de programação usada.
  4. Quando o programa estiver livre de erros, criar o ficheiro executável e correr o programa.
Em Linux, como se podem realizar os três últimos passos?

2 - Editar ficheiros

Existem muitos editores de texto em Linux. O vi, o joe, o emacs, o gedit, são apenas alguns deles.

Podem usar qualquer um deles, e até podem gravar os ficheiros numa disquete e continuar a trabalhar com eles em casa.

3 e 4 - Compilar e executar programas

Para compilar/executar um programa devem chamar o compilador gcc na linha de comandos:
        Compilar e tornar executável:   
        

                $ gcc -o nome_ficheiro_executável nome_ficheiro.c 


        Correr o programa: 

                $ nome_ficheiro_executável