Você está na página 1de 16

Licenciatura em Engª Informática, FCT

Universidade do Algarve

Ano letivo 2018/2019

Sistemas Operativos

Relatório TP1
Linguagem Bash

Docentes:
Prof. Dr. Amine Berquia

Discente:
Luís Silva, nº42030, a42030@ualg.pt
Relatório TP1 – Linguagem Bash

Índice
Índice de figuras ........................................................................................................... - 3 -
Índice de termos............................................................................................................ - 3 -
Introdução ..................................................................................................................... - 4 -
Exercícios: .................................................................................................................... - 9 -
P1. Faça scripts em bash para: .................................................................................. - 9 -
P1-1. Listar os ficheiros com uma extensão definida pelo utilizador. .................. - 9 -
P1-2. Identificar os diretórios cujo tamanho seja superior a uma dada dimensão,
especificada pelo utilizador como parâmetro do script. ....................................... - 9 -
P1-3. Listar os ficheiros cuja data esteja compreendida num intervalo de tempo
definido pelo utilizador. ...................................................................................... - 10 -
P1-4. Listar o login e nome dos utilizadores do sistema. ................................... - 10 -
P1-5. Listar os ficheiros que contenham uma dada expressão como por exemplo
“Sistemas Operativos” ........................................................................................ - 10 -
P2. Faça um script que implemente o cálculo do fatorial. ...................................... - 11 -
P3. Escrever um script para alterar sistematicamente a extensão de uma série de
ficheiros. Desejamos por exemplo alterar todos os arquivos “.htm” para “.html” no
diretório atual. ......................................................................................................... - 12 -
P4. Escrever um script que adiciona dois arquivos file1 e file2 para um novo arquivo
file3 e exibe o número total de linhas. .................................................................... - 12 -
P5. Criar um script chamado "Mult-tab.sh" para a exibição de tabelas de
multiplicação. Por exemplo "Mult-tab.sh 5 4" irá resultar na apresentação:.......... - 13 -
P6. Escrever um script que recebe como parâmetro um ano, e dá o número de dias do
mês de fevereiro desse ano. .................................................................................... - 14 -
Conclusão ................................................................................................................... - 15 -
Bibliografia ................................................................................................................. - 16 -
Referências ................................................................................................................. - 16 -

-2-
Relatório TP1 – Linguagem Bash

Índice de figuras
Figura 1 - Print P1-1 Listar os ficheiros com uma extensão definida pelo utilizador .. - 9 -
Figura 2 - Print P1-2 Identificar os diretórios cujo tamanho seja superior a uma dada
dimensão ....................................................................................................................... - 9 -
Figura 3 - Print P1-3 Listar os ficheiros cuja data esteja compreendida num intervalo de
tempo definido ............................................................................................................ - 10 -
Figura 4 - Print P1-4 Listar o login e nome dos utilizadores do sistema .................... - 10 -
Figura 5 - Print P1-5 Listar os ficheiros que contenham uma dada expressão .......... - 11 -
Figura 6 - Print P2 script que implemente o cálculo do fatorial ................................. - 11 -
Figura 7 - Print P3 script para alterar sistematicamente a extensão de uma série de
ficheiros ...................................................................................................................... - 12 -
Figura 8 - Print P4 script que adiciona dois arquivos file1 e file2 para um novo arquivo
file3 e exibe o número total de linhas ......................................................................... - 12 -
Figura 9 - Print P5 script para a exibição de tabelas de multiplicação ....................... - 13 -
Figura 10 - Print P6 script que recebe como parâmetro um ano, e dá o número de dias
do mês de fevereiro desse ano .................................................................................... - 14 -

Índice de termos
Script, Sistemas Operativos, Ubuntu, Bash, Shell, Terminal, Kernel, UNIX, Windows,
Linux, macOS, VUI, multitasking, multi-user

-3-
Relatório TP1 – Linguagem Bash

Introdução

Este relatório tem como objetivo apresentar uma breve introdução à linguagem Bash e
um exemplo de soluções do guião TP1. Ao longo deste relatório são descritos os métodos
implementados para o desenvolvimento das soluções aos exercícios propostos, assim
como as possíveis soluções.

Sistema Operativo (SO) [1]

O SO é um programa ou um conjunto de programas cuja função é gerir os recursos do


sistema (definir qual o programa que recebe a atenção do processador, gerir memória,
criar um sistema de ficheiros, etc.), fornecendo uma interface entre o computador e o
usuário. Um SO possui as seguintes funções:
• Gestão de processos;
• Gestão de memória;
• Gestão de Recursos;
• Sistema de ficheiros;
• Entrada e saída de dados.
Para além destas funções, o SO possui componentes importantes como os seguintes:
• Kernel;
• Rede;
• Segurança;
• Interfaces de Uso.

Kernel

É, juntamente com os drivers e o firmware, o que tem controlo sobre todos os


componentes hardware da máquina. Ele gere os processos, determina quais destes tem
maior prioridade e quais os recursos do hardware que as aplicações podem aceder.

Rede

Permite a ligação com outras máquinas, incluindo máquinas que estão ligadas à internet.

Segurança

É uma caraterística fundamental do SO, pois tem meios para proteger a informação, para
que os processos acedam a zonas de memórias permitidas, etc.

Interfaces de Uso
Os sistemas operacionais fornecem abstração de hardware para que seus recursos
possam ser usados de maneira correta e padronizada, mas para ser possível operar um

-4-
Relatório TP1 – Linguagem Bash

computador, é necessário fornecer também uma interface para que o usuário possa
desfrutar dos recursos do sistema. Atualmente as principais interfaces de uso são as
seguintes:
• Interface de terminal;
• Interface de texto;
• Interface gráfica;
• Interface de voz(VUI);

Shell [2]
Shell é um software que fornece uma interface para que os utilizadores de um sistema
operativo forneçam acesso aos serviços do kernel.

Em sistemas operativos baseados em Unix ou Linux, a shell pode ser chamada através
do comando shell na interface de linha de comando (CLI), permitindo que os
utilizadores direcionem as operações por meio de comandos, texto ou scripts.

Shells também existem para linguagens de programação, fornecendo-lhes autonomia do


sistema operativo e permitindo compatibilidade entre plataformas.

Bash [3] [4] [5]


Bash (Bourne-Again Shell), uma das grandes vantagens da utilização desta linguagem é
a possibilidade de criar um ficheiro com um ou mais comandos, evitando a introdução
dos mesmos no Terminal. O Bash apresenta recursos e características de uma linguagem
de programação de alto nível. É compatível com as normas POSIX, de forma que os
scripts Bash possam ser executados por sistemas do tipo “Unix”. O bash é o shell que se
tornou padrão nas diversas distribuições Linux.

Para executar um ficheiro Bash é necessário executar o seguinte comando no Terminal.


~./Nome do arquivo

Os scripts têm 3 propriedades:

• R (Read) – Apenas podemos ler o ficheiro;


• W (Write) – Podemos escrever e modificar o ficheiro.
• X (Execute) – Os ficheiros podem ser executados, modificados
e podem ser lidos e escritos;

Os Sistemas Operativos semelhantes ao Unix, como o Linux, diferem de outros sistemas


de computação, pois não são apenas multitasking, mas também multi-user.
O que significa isso exatamente? Isso significa que o computador pode ser utilizado por
mais do que um utilizador ao mesmo tempo. Para alterar estas propriedades usamos o

-5-
Relatório TP1 – Linguagem Bash

comando “chmod”. O comando chmod é usado para alterar as permissões de um ficheiro


ou diretório. Para usá-lo, especificamos as configurações de permissão desejadas e o
ficheiro ou ficheiros que desejamos modificar.

É fácil pensar nas configurações de permissões como uma série de bits (que é como o
computador pensa sobre eles). Exemplo:
rwx rwx rwx = 111 111 111
rw- rw- rw- = 110 110 110
rwx --- --- = 111 000 000

e mais...

rwx = 111 em binário = 7


rw- = 110 em binário = 6
r-x = 101 em binário = 5
r-- = 100 em binário = 4

Valor Significado

777 (rwxrwxrwx) Não há restrições em permissões. Qualquer um pode fazer


qualquer coisa. Geralmente não é um cenário aconselhável.
(rwxr-xr-x) O proprietário do arquivo pode ler, gravar e executar o
755 arquivo. Todos os outros podem ler e executar o arquivo. Essa
configuração é comum para programas usados por todos os usuários.
(rwx ------) O proprietário do arquivo pode ler, gravar e executar o
arquivo. Ninguém mais tem direitos. Essa configuração é útil para
700
programas que somente o proprietário pode usar e deve ser mantido
privado dos outros.
666 (rw-rw-rw-) Todos os usuários podem ler e gravar o arquivo.
(rw-r - r--) O proprietário pode ler e gravar um arquivo, enquanto todos
os outros podem apenas ler o arquivo. Uma configuração comum para
644
arquivos de dados que todos podem ler, mas somente o proprietário pode
mudar.
(rw -------) O proprietário pode ler e gravar um arquivo. Todos os outros
600 não têm direitos. Uma configuração comum para arquivos de dados que o
proprietário deseja manter em sigilo.
Tabela 1 – Lista de configurações básicas; [5]

-6-
Relatório TP1 – Linguagem Bash

Em todos os exercícios propostos no enunciado, houve necessidade de utilizar o


comentário (#) !/bin/bash, para identificar a linguagem utilizada.
Alguns dos comandos fundamentais para a realização deste trabalho:

• echo “” #Imprime o que está entre aspas;


• echo $1 #Imprime o valor da variável 1;
• ls #Lista todos os ficheiros da diretoria em questão;
• find #Permite encontrar ficheiros;
• pwd #Mostra qual o diretório corrente;
• cat #Mostra o conteúdo de ficheiros;
• grep #Procura o conteúdo que se segue e imprime o nome dos ficheiros que
possuem tal caraterística;
• -x $file #File é um ficheiro com permissão de execução;
• -w $file #File é um ficheiro com permissão de escrever;
• -r $file #File é um ficheiro com permissão de leitura;
• man qualquer comando, por exemplo echo/ls #mostra o manual com as
instruções do comando que está entre aspas.

Operações em Bash [6]


Sejam x e y dois números inteiros:

• Soma echo $(( x + y ));


• Subtração echo $((x - y));
• Divisão echo $(( x / y ));
• Multiplicação echo $(( x * y ));
• Resto echo $(( x % y )).
Incrementação
• echo $(( x++ ))

Estruturas de controlo
Ciclo for [7]
• for (( c=1; c<=5; c++ )) do (...) done

-7-
Relatório TP1 – Linguagem Bash

Ciclo while [8]


• while [ TRUE ]; do (...) done
Estruturas If-Else
• if..then..fi statement (Simple If)
Comparadores
• -lt #menor do que;
• -le #menor ou igual a;
• -eq #igual a;
• -gt #maior do que;
• -ne #diferente;
• -o #ou;
• -a #e.

-8-
Relatório TP1 – Linguagem Bash

Exercícios:
P1. Faça scripts em bash para:
P1-1. Listar os ficheiros com uma extensão definida pelo utilizador.

Figura 1 - Print P1-1 Listar os ficheiros com uma extensão definida pelo utilizador

P1-2. Identificar os diretórios cujo tamanho seja superior a uma dada dimensão,
especificada pelo utilizador como parâmetro do script.

Figura 2 - Print P1-2 Identificar os diretórios cujo tamanho seja superior a uma dada dimensão

-9-
Relatório TP1 – Linguagem Bash

P1-3. Listar os ficheiros cuja data esteja compreendida num intervalo de tempo definido
pelo utilizador.

Figura 3 - Print P1-3 Listar os ficheiros cuja data esteja compreendida num intervalo de tempo definido

P1-4. Listar o login e nome dos utilizadores do sistema.

Figura 4 - Print P1-4 Listar o login e nome dos utilizadores do sistema

P1-5. Listar os ficheiros que contenham uma dada expressão como por exemplo
“Sistemas Operativos”

- 10 -
Relatório TP1 – Linguagem Bash

Figura 5 - Print P1-5 Listar os ficheiros que contenham uma dada expressão

P2. Faça um script que implemente o cálculo do fatorial.

Figura 6 - Print P2 script que implemente o cálculo do fatorial

- 11 -
Relatório TP1 – Linguagem Bash

P3. Escrever um script para alterar sistematicamente a extensão de uma série de


ficheiros. Desejamos por exemplo alterar todos os arquivos “.htm” para “.html”
no diretório atual.

Figura 7 - Print P3 script para alterar sistematicamente a extensão de uma série de ficheiros

P4. Escrever um script que adiciona dois arquivos file1 e file2 para um novo
arquivo file3 e exibe o número total de linhas.

Figura 8 - Print P4 script que adiciona dois arquivos file1 e file2 para um novo arquivo file3 e exibe o número total de linhas

- 12 -
Relatório TP1 – Linguagem Bash

P5. Criar um script chamado "Mult-tab.sh" para a exibição de tabelas de


multiplicação. Por exemplo "Mult-tab.sh 5 4" irá resultar na apresentação:
0x5=0
1x5=5
2 x 5 = 10
3 x 5 = 15
4 x 5 = 20

Figura 9 - Print P5 script para a exibição de tabelas de multiplicação

- 13 -
Relatório TP1 – Linguagem Bash

P6. Escrever um script que recebe como parâmetro um ano, e dá o número de


dias do mês de fevereiro desse ano.

Figura 10 - Print P6 script que recebe como parâmetro um ano, e dá o número de dias do mês de fevereiro desse ano

- 14 -
Relatório TP1 – Linguagem Bash

Conclusão

Com o desenvolvimento deste trabalho prático nº1 “Linguagem Bash”, aprofundei os


meus conhecimentos relativos a Sistemas Operativos, nomeadamente a Shell, a
linguagem Bash e o funcionamento de um sistema operativo que já havia sido abordado
durante as aulas teóricas.
Não encarei muitas dificuldades no desenvolvimento da resolução deste trabalho, no
entanto não consegui desenvolver o exercício P7. Com base na resolução e na pesquisa
que fiz, posso afirmar que fazer scripts pode ser um processo bastante útil, principalmente
na automatização de tarefas de um Sistema Operativo.
No final deste relatório posso concluir que a sintaxe da linguagem Bash tem algumas
particularidades, sobretudo na utilização de espaços e que o Shell funciona como um
intermediário entre o utilizador e o hardware. Pude verificar que esta abordagem inicial
à linguagem Bash é apenas uma pequena parte do que se pode fazer com a mesma.

O ambiente de desenvolvimento foi macOS, que é uma distribuição UNIX.

- 15 -
Relatório TP1 – Linguagem Bash

Bibliografia
[1] A. Berquia, “Enunciado do trabalho TP1,”
https://tutoria.ualg.pt/2018/pluginfile.php/51391/mod_resource/content/1/TP1-18-19.pdf

Referências

[1] Wikipedia. s.d. h https://pt.wikipedia.org/wiki/Sistema_operativo (acedido em 13 de


Outubro de 2018).
[2] Techopedia s.d. https://www.techopedia.com/definition/3427/shell (acedido em 13
de Outubro de 2018).
[3] Wikipedia. s.d. https://pt.wikipedia.org/wiki/Shell_script (acedido em 13 de Outubro
de 2018).
[4]. s.d. http://linuxcommand.org/lc3_lts0090.php (acedido em 14 de Outubro de 2018).
[5] Computer Plumber. s.d. https://computerplumber.com/2009/01/using-the-chmod-

command-effectively/ (acedido em 14 de Outubro de 2018).

[6] Cyberciti. s.d. https://bash.cyberciti.biz/guide/Perform_arithmetic_operations


(acedido em 7 de março de 2018).
[7] Cyberciti. s.d. https://www.cyberciti.biz/faq/bash-for-loop/ (acedido em 7 de março

de 2018).

[8] TLDP. s.d. http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html (acedido em 7


de março de 2018).

- 16 -

Você também pode gostar