Você está na página 1de 23

Modelo a usar nos relatórios técnico-científicos de

Sistemas Operativos
Rúben Júnior Gomes da Luz (28915 / ERSC)
Orientação Científica: Professor Doutor Vítor M. Ferreira
Maio 2022

Resumo
A noção de shell scripting como forma de automatizar tarefas diárias e de conhecer
os mais diferentes tipos de shell e como cada uma se comporta é crucial para um
estudante de computação, entender a variável exit-status e a sua importância para
detetarmos erros em nossos programas ou comandos que mandamos executar tudo
isso será estudado ao longo do trabalho de forma mais aprofundada.

Índice
1 Introdução 2
1.1 Objectivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Organização do relatório . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Estado-da-arte/Revisão bibliográfica 2
2.1 Shell scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1.1 Seleção da shell a ser usada . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2 Input e Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.3 Execução de uma shell script . . . . . . . . . . . . . . . . . . . . . 3
2.1.4 Passagem de Parâmetros . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.5 Operações aritméticas . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Comando test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1 Estruturas de Controlo . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 A Variável “Exit Status” . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.1 Noção de “True” e “False” . . . . . . . . . . . . . . . . . . . . . . . 5

3 Resolução dos exercícios propostos 5

4 Conclusões 17

1
A Todos os comandos usados 21

1 Introdução
Conhecer a programação em shell script é importantissimo para qualquer estudante de
qualquer area, e é crucial para aqueles que estão em areas relacionadas a Computaçào,
pois ela vai nos permitir automatizar varias tarefas diarias e administrar propriedades
internas do nosso sistema, coisa que uma interface grafica não oferece.

1.1 Objectivos
Ao longo da leitura execução deste trabalho se pretende adquirir as seguintes competencias:

• Reconhecer e identificar uma shell script

• Entender o conceito e forma de utilização das estruturas de controlo de fluxo “if” e


“case”.

• Entender o conceito e forma de utilização das estruturas de controlo “while”, “until”


e “for”.

• Ser capaz de criar pequenas “shell scripts”.

1.2 Organização do relatório


O presente relatório técnico-cientifico esta organizado em 4 secções, uma primeira de caráter
introdutória, onde se faz uma pequena revisão histórica e conceitual do que se trata uma
shell, na segunda, já de caráter teórica, que possui uma revisão teórica do conceito de
shell script, seus componentes principais e se faz uma introdução ao conceito de shell
script. A terceira secção possui as resolução propostas para resolver os exercícios da
folha de trabalho, com exemplificação através de figuras que demonstram a realização
destes exercícios. A quarta e última secção é de caráter conclusiva, onde se contrapõem os
objetivos definidos no inicio deste trabalho e se demonstra aquilo que se reteve da realização
do mesmo.

2 Estado-da-arte/Revisão bibliográfica
2.1 Shell scripts
Aos ficheiros que contém instruções para a shell, atribui-se geralmente o nome de shell
scripts, sendo este um ficheiro que contém um conjunto de comandos sequenciais para uma
determinada “shell”. Os scripts se tornam uma ferramenta muito poderosa, na medida que

2
permitem automatizar a maioria das tarefas de administração do sistema ou de utilização
quotidiana.

2.1.1 Seleção da shell a ser usada


Por existirem diversas shells, é necessário escolher o nome do interpretador no qual se
utilizará o script. Sempre na primeira linha de qualquer script deverá ter o nome do
interpretador desejado. Por isso, começa com os carateres #!, seguidos do nome do exe-
cutável do interpretador, utilizando endereçamento absoluto. No nosso caso em particular
pretendemos apenas usar a Bourne Again Shell, logo temos: #!/bin/bash
Caso seja omitido o nome da shell, será usada a “shel” padrão do nosso sistema operativo.
Para esse efeito o ficheiro /etc/shells, possui todas as “shells” que se encontram instaladas
no sistema.

2.1.2 Input e Output


Numa script, o comando usado para enviar dados para o standard output é o comando
echo. Já para ler dados do standard input, e atribuir este valores a variáveis, utiliza-se
o comando. read.
Para pedirmos que o utilizador introduza dados, que posteriormente podemos guardar
em variáveis combina-se os comandos echo e read.
Por exexmplo, seja a “script":

#!/bin/bash
echo "Introduza o seu primeiro nome"
read NOME
echo "Olá $NOME tudo bem consigo?"

2.1.3 Execução de uma shell script


Existem diversas formas diferentes de se executar uma shell script, porém existem 3 formas
que são as mais utilizadas:

1. A mais utilizada, ela consistem em transformar o script num programa executável,


e para isso basta usar o comando “chmod"e ativar as permissões de execução do
ficheiro:
$ chmod 754 programa $ ./programa

2. Pode-se também executá-lo invocando o nome da shell:


$ bash programa

3. Pode-se executá-la invocando a shell padrão do sistema:


$ source programa

3
2.1.4 Passagem de Parâmetros
Assim como outros programas as “shell scripts"podem receber parâmetros e opções. Ou
seja, através da linha de comandos podemos passar parâmetros para a “shell script"após
o seu nome. Para fazer referencia aos parâmetros utiliza-se o operador $, seguido numero
que indica a sua posição na linha de comandos:

• $* - representa a lista de de todos os parâmetros que um script recebe;

• $ - representa o numero de parâmetros recebidos;

• $0 - representa o nome do próprio script;

• $1 - representa primeiro argumento;

• $2 - representa o segundo argumento;


... assim por diante

2.1.5 Operações aritméticas


A shell possui um comando denominado de let, que permite executar operações aritméticas,
sem que seja necessário o uso do operador $ para indicar o valor da variável:

let 2*7 ;Imprimirá 14


let "RES = 2 * 7" ;Atribui o valor 14 à variável RES
let "RES = RES + 1" ;Incrementará a variável RES
let "RES < 6" ;Verifica se o valor da variável RES é inferior a 6

Existe ainda outra maneira diferente de realizar estas operações aritméticas, esta con-
siste em utilizar os comandos “$[“e"]"para limitar as expressões. Neste caso diferentemente
do anterior as variáveis são precedidas pelo caráter $:

RES=$[ 2 * 7 ] ;Atribui o valor 14 à variável RES


RES=$[$RES + 1] ;Incrementa RES

2.2 Comando test


O comando test, é usado para comparar valores inteiros, strings e realizar operações lógicas.
A sua sintaxe é a seguinte:

\centering
test valor1 -option valor2
teste string1 operador string2

Ao invés de usar a palavra “test", pode-se utilizar os parênteses retos:

4
\centering
test $VAL -eq 16 também pode ser escrito como: [ $VAL -eq 16 ]

O detalhe importante a ressaltar, é que deve-se colocar espaços antes e depois dos
parênteses retos.

2.2.1 Estruturas de Controlo


As estruturas de controlo utilizam-se para repetir comandos ou decidir sobre que comandos
devem ser executados. Uma estrutura de controlo é composta por 2 componentes: teste e
comandos. Se o teste for verdadeiro então os comandos são executados. As três estruturas
de controlo de ciclos da bash são:“while”,“until” e “for”. As duas estruturas de condição
são:“if” e “case”. As estruturas “if”,“while” e “until” têm, como teste, a execução de um
comando.Todos os comandos devolvem um estado de retorno (exit status) após a sua
execução.

2.3 A Variável “Exit Status”


Quando um programa/comando UNIX termina, implicitamente (e não explicitamente como
iremos ver) retorna um valor ao programa que o lançou (normalmente, a shell) informando-
o se foi ou não executado com sucesso. Esse valor é um número e é chamado o “exit
status” do programa/comando.Esse valor, o “exit status”, é normalmente ignorado, quer
pela shell quer pelo utilizador. No entanto, na construção de “shell scripts” este valor é
muito importante. Normalmente, se o valor do “exit status” for igual a 0 significa que
o programa foi executado com sucesso, enquanto que se for diferente de 0 significa que
ocorreu um erro. Então coloca-se a seguinte questão: como examinar o valor do “exit
status”? O valor do “exit status” do último programa/ comando executado é gravado na
variável “?” e pode ser consultada a qualquer momento através do comando: echo $?

2.3.1 Noção de “True” e “False”


Deste modo, torna-se útil na construção de “shell scripts” pensar que: se o valor do “exit
status” for 0, temos o equivalente ao termo lógico “true” e se for diferente de 0, temos o
equivalente ao termo lógico “false”

3 Resolução dos exercícios propostos


Nesta secção tem-se como objetivo central demonstra as resoluções utilizadas para cada
questão pedida no guião do referido trabalho, utilizando figuras e uma explicação mais
clara possível.

1. Crie na sua área de trabalho, dentro do diretório “PL", o ficheiro com


nome “trab6", onde deve entrar e realizar todos o trabalho pratico.

5
Figura 1: Criando o diret’rio de trabalho PL/trab6

Figura 2: Shells presentes no meu sistema operativo

Assim como em todos os trabalhos iniciamos criando a nossa diretoria respetiva ao


trabalho que se vai realizar, usando o comando mkdir, para cria-lo, e como pode-se
ver na figura 1, usando o comando pwd, pode-se ver que estamos d facto dentro do
diretório que criamos para este trabalho.

2. Verifique no seu sistema quais são as shells, que estão instaladas e guarde
essa informação num novo ficheiro chamado “system_shells". Como já é de
nosso conhecimento o ficheiro /etc/shells, guarde a informação de todas as shells
presentes no nosso sistema operativo, e fazendo uso do comando cat, como mostra
a figura 2, podemos visualiza-las, porém queremos guardar essa informação num
ficheiro, portanto usamos o operador “>” para redirecionar essa informação para o
ficheiro “system_shells" como mostra a figura 3.

3. Crie uma shell script, chamado myfirst, que peça ao utilizador o seu nome
e consiga imprimir no ecrã a seguinte mensagem: O seu nome é «NOME».
Para criar essa shell script utilizou-se o editor VIM, como mostra a figura 4, foi
utilizado o comando vi myfirst.sh, e fazendo um ls -l, podemos ver que foi criado
um ficheiro. Como se pode ver no código 1, para resolver este exercício apenas se
usou os comandos de “input” e “output” (echo e read). Porem antes de executar
este código como pode-se visualizar na figura 5, o dono não possui permissões de
executar o ficheiro portanto foi usado o seguinte comando para alterar e conceder
permissões totais ao dono e de execução ao grupo, sendo que os outros suas permissões

Figura 3: Guardando informação das shells do sistema no ficheiro “system_shells"

6
Figura 4: Criação da primeira shell script

Figura 5: Alteração das permissões de execução do codigo

permaneceram intactas:

chmod 754 myfirst.sh

Depois como é demonstrado na figura 6, executamos o script e após a sua execução


verificamos o valor da variável exit-status, e o sue valor foi 0, ou seja foi executado
com sucesso o nosso script.

4. Crie uma outra shel script, chamada exer64, que imprime na tela os pri-
meiros 4 argumentos passados na linha de comando. O script deve ser
invocado da seguinte forma:

./exer64 a raposa correu até o rio

Neste caso criamos um novo script denominado de exer64, que era uma copia do
ficheiro criado no exercício anterior para que pudéssemos manter as mesmas confi-
gurações de permissão, e a partir daqui todos os exercícios seguiram dessa forma.
Como mostra a figura 7, abrimos o ficheiro no VIM, e o código pode ser consultado
em 2 e a execução do mesmo nas figuras 8 e 9.

5. Crie uma shell script (exer65) que indique o numero de argumentos da


linha de comandos e os imprima. Deve ser invocada dessa seguinte forma:

Figura 6: Resultado do primeiro script

7
Listing 1: Primeira shell script

1 #A primeira linha indica a shell que irá executar a shell script


2 #!/bin/bash
3

4 clear #Scrolling da prompt para a primeira linha do nosso ecrã


5

6 echo "Qual é o seu nome?"


7 read NOME
8

9 echo "O seu nome é $NOME."


10

11 sleep 2
12

13 exit 0

Figura 7: Criação de script exer64

Figura 8: Execução do script exer64.sh

Figura 9: Erro apresentado quando não são passados parâmetros ao script exer64

8
Listing 2: Script do exer64.sh

1 #A primeira linha indica a shell que irá executar a shell script


2 #!/bin/bash
3

4 clear #Scrolling da prompt para a primeira linha do nosso ecrã


5

6 if test $# -gt 4
7 then
8 echo "Estes são os 4 primeiros parametros passados na linha de comando: $1, $2, $3, $4"
9 else
10 echo "Deve passar pelo menos 4 argumentos na linha de comandos"
11 fi
12 sleep 2
13

14 exit 0

Figura 10: Testes do script exer65

./exer64 vou contar os argumentos passados a esta script

Durante a criação da lógica deste script usamos os parâmetros $# e $*, que repre-
sentam numero de parâmetros recebidos e a lista de de todos os parâmetros que um
script recebe, respetivamente. Como se pode ver no código ??, primeiro testamos se
o numero de parâmetros recebidos no momento de invocação da shell script é maior
que 1 então se sim usamos $# para retornar o numero de parâmetros inseridos e $*
para retorna a lista destes parâmetros, caso o numero de parâmetros for menor que 1
então imprime na tela uma mensagem de erro, os teste executados deste script estão
na figura 10.

6. Repita o exercıcio anterior usando uma estrutura de controlo de ciclos


”for”
Desta vez vamos repetir o mesmo do exercício 4 porém usando a lógica do for que na
shell funciona de forma diferente, onde nos temos que indicar juntamente da variável
um array ao qual o for vai percorrer ate que este termine e o for termine também. O
código pode ser consultado em 4 e o resultado na figura ??

9
Listing 3: Shell script exer65.sh

1 #A primeira linha indica a shell que irá executar a shell script


2 #!/bin/bash
3

4 clear #Scrolling da prompt para a primeira linha do nosso ecrã


5

6 NumMinArg=1
7

8 if test $# -gt $NumMinArg


9 then
10 echo "Estes são os $# argumentos passados na linha de comandos: \"$*\""
11 else
12 echo "Não foram passados argumentos na linha de comandos"
13 fi
14

15 sleep 2
16

17 exit 0

Figura 11: Resultado exercício 7

7. Escreva uma shell script (exer66) que peça ao utilizador duas strings, que
as compare e indique se são ou não iguais.
O código deste exercício esta em 6 e o resultado exibido na figura 12.

8. Escreva uma shell script (exer67) que peça uma frase, imprime-a e per-
gunta se quer continuar enquanto a resposta for ”sim”, ”SIM”, ”s” ou ”S”.
O código deste exercício esta em ??.

9. Escreva uma shell script (exer68) que mostre ao utilizador 3 opões de menu:

• Lista a informação da diretoria de forma longa (ls -l)


• Lista ficheiros escondidos (ls -la)
• Lista ficheiros C (ls *.c)

10
Listing 4: Script exercício 6

1 #A primeira linha indica a shell que irá executar a shell script


2 #!/bin/bash
3

4 clear #Scrolling da prompt para a primeira linha do nosso ecrã


5

6 NumMinArg=1
7

8 if test $# -gt $NumMinArg


9 then
10 echo "Estes são os $# argumentos passados na linha de comandos:"
11 for ARG in $*
12 do
13 echo $ARG
14 done
15 else
16 echo "Não foram passados argumentos na linha de comandos"
17 fi
18

19 sleep 2
20

21 exit 0

Figura 12: Testes do shell script exer66

11
Listing 5: Shell script exer66.sh

1 #A primeira linha indica a shell que irá executar a shell script


2 #!/bin/bash
3

4 clear #Scrolling da prompt para a primeira linha do nosso ecrã


5

6 echo "Escreva uma frase?"


7 read STR1
8

9 echo "Escreva uma segunda frase?"


10 read STR2
11

12 if [ "$ST1" = "$STR2" ]; then


13 echo "As frases $STR1 e $STR2 são iguais!"
14 else
15 echo "As frases $STR1 e $STR2 são diferentes!"
16 fi
17

18 sleep 2
19

20 exit 0

Listing 6: Shell script exer66.sh

12
Listing 7: Shell script exer67.sh

1 #A primeira linha indica a shell que irá executar a shell script


2 #!/bin/bash
3

4 clear #Scrolling da prompt para a primeira linha do nosso ecrã


5

6 echo "Escreva uma frase?"


7 read STR1
8

9 RESP="SIM"
10

11 while test $RESP = "SIM" -o $RESP = "sim" -o $RESP = "S" -o $RESP = "s"
12 do
13 echo "Escreva uma frase"
14 read FRASE
15 echo "Quer continuar?"
16 read RESP
17 done
18

19 echo "Obrigado a sua resposta foi $RESP"


20

21 sleep 2
22

23 exit 0

13
Figura 13: Testes do shell script exer68

Figura 14: Testes do shell script exer68

Conforme a opção escolhida deve executar o comando respetivo. Se a opção escolhida


não for nenhuma destas deve imprimir ”Opção invalida”. A consola deve ser limpa
antes da apresentação do menu.
O código deste exercício esta em 8 e o resultado exibido nas figuras 13, 14 e 15.
10. Escreva uma shell script (exer69) que pede dois números ao utilizador,
compara-os, imprime se são iguais ou diferentes e se algum deles é nega-
tivo.
O código deste exercício esta em 9 e o resultado exibido na figura 16.
11. Escreva uma shell script (exer610) que pede ao utilizador dois números
(A e B) e apresenta o resultado da opera¸c~ao (A + B B 24 + A 10).
Neste exercício foi utilizado o comando let, que como foi ressaltado na revisão teórica,
este é um comando que nos permite calcular o valor numérico de expressões numérica,

14
Figura 15: Testes do shell script exer68

Listing 8: Shell script exer611.sh

1 #A primeira linha indica a shell que irá executar a shell script


2 #!/bin/bash
3

4 clear #Scrolling da prompt para a primeira linha do nosso ecrã


5

6 echo "Escolha uma das opções:"


7 echo "1 - Deseja listar o diretório atual de forma longa: (ls -la)"
8 echo "2 - Deseja listar o diretorio atual de forma longa incluindo os ficheiros escondidos? (ls -la)"
9 echo "3 - Deseja listar no diretorio atual todos os ficheiros C? (ls *.c)"
10 read OP
11

12 case $OP in
13 "1") ls -l
14 ;;
15 "2") ls -la
16 ;;
17 "3") ls *.c
18 ;;
19 *) echo "Escolha invalida"
20 ;;
21

22

23 esac
24

25 sleep 2
26

27 exit 0

15
Listing 9: Shell script exer611.sh

1 #A primeira linha indica a shell que irá executar a shell script


2 #!/bin/bash
3

4 clear #Scrolling da prompt para a primeira linha do nosso ecrã


5

6 echo "Escreva um numero?"


7 read NUM1
8

9 echo "Escreva um segundo número?"


10 read NUM2
11

12 if test $NUM1 -eq $NUM2; then


13 echo "Os numeros $NUM1 e $NUM2 são iguais"
14 else
15 echo "Os numeros $NUM1 e $NUM2 são diferentes"
16 fi
17

18 if [ $NUM1 -lt 0 ]
19 then
20 echo "O numero $NUM1 é negativo"
21 fi
22

23 if [ $NUM2 -lt 0 ]
24 then
25 echo "O numero $NUM2 é negativo"
26 fi
27

28 sleep 2
29

30 exit 0

16
Figura 16: Testes do shell script exer69

Figura 17: Testes do shell script exer610

portanto neste exercício vamos pedir dois valores do utilizador A e B e usar o let
para calcular e guardar esse valor numa variável, o código pode ser consultado em
10 e o resultado na figura ??.

12. Escreva uma shell script (exer611) que imprima os números pares entre
20 e 50.
O código deste exercício esta em 11 e o resultado exibido na figura 18.

13. Escreva uma shell script (exer612) que imprima os números ´ımpares, a
decrescer, de 99 para 51.
O código deste exercício esta em 12 e o resultado exibido na figura 19.

14. Escreva uma shell script (exer13) que liste o conteúdo de uma diretoria
passada como parâmetro, indicando para cada elemento, explicitamente,
se ´e ficheiro, diretoria ou link.

4 Conclusões
Ao longo do trabalho constatei que a shell é um dos componentes centrais de qualquer
sistema operativo, hoje somos abençoados com interfaces gráficas simples e rápidas de se
mexer e aprender o seu funcionamento, porem a utilização da shell e da linha de comandos
nos permite estabelecer uma conexão mais fiel e rápida com a maquina, apesar da linha de

17
Listing 10: Shell script exer610.sh

1 #A primeira linha indica a shell que irá executar a shell script


2 #!/bin/bash
3

4 clear #Scrolling da prompt para a primeira linha do nosso ecrã


5

6 echo "Vamos calcular a expressão (A+B-B*24+A*10)"


7 echo "A="
8 read A
9

10 echo "B="
11 read B
12

13 let "RESULT=A+B-B*24+A*10"
14 echo "O resultado é $RESULT"
15

16 sleep 2
17

18 exit 0

Figura 18: Testes do shell script exer611

18
Listing 11: Shell script exer611.sh

1 #A primeira linha indica a shell que irá executar a shell script


2 #!/bin/bash
3

4 clear #Scrolling da prompt para a primeira linha do nosso ecrã


5

6 MIN=20
7 MAX=50
8

9 echo "Os numeros pares entre $MIN e $MAX:"


10

11 while test $MIN -lt $MAX; do


12 echo "$MIN"
13 let "MIN = MIN + 2"
14 done
15

16 sleep 2
17

18 exit 0

Figura 19: Testes do shell script exer612

19
Listing 12: Shell script exer612.sh

1 #A primeira linha indica a shell que irá executar a shell script


2 #!/bin/bash
3

4 clear #Scrolling da prompt para a primeira linha do nosso ecrã


5

6 MIN=51
7 MAX=99
8

9 echo "Os numeros impares em ordem decrescente entre $MAX e $MIN:"


10

11 while test $MAX -gt $MIN; do


12 echo "$MAX"
13 let "MAX = MAX - 2"
14 done
15

16 sleep 2
17

18 exit 0

20
comandos ser utilizada apenas por programadores ou entusiastas na sua grande maioria eu
proponho que qualquer um deva utilizar a linha de comando, para que possa aprender e
compreender como coisas de mais baixo nível funcionam, dando a ela um entendimento mais
aprofundado e amplo daquilo que faz e pode fazer. A utilização da shell não se limita apenas
a interatividade com o utilizador podendo também ser utilizada para criar shell scripts,
pequenos programas que nos oferecem a oportunidade de programar e automatizar tarefas
simples e gerenciar propriedades do sistema usando uma linguagem simples e intuitiva.
A manipulação da variáveis de ambiente e da prompt permitem-nos moldar a nosso belo
prazer claro limitados a aquilo que já esteja pré-definido o nosso ambiente de trabalho,
desde o que apresentar e como apresentar na prompt ou na nossa linha d comando. a
shell também nos oferece a possibilidade de criar e redefinir comandos, podendo criar a
sua própria lista de comandos, ou traduzi-las para uma forma que seria mais simples de
se entender para um leigo ou uma criança. Finalizando a shell é um mundo de várias
possibilidades que na minha opinião deveriam ser exploradas por todos.

Referências
[1] F. Pereira, Linux Curso Completo, 3rd ed. FCA- Editora de Informatica.

[2] V. Ferreira, “Revisão teórica do trabalho no. 6.” [Online]. Available: https:
//elearning.ipvc.pt/ipvc2021/mod/resource/view.php?id=31128

[3] ——, “Trabalho prático no. 6 sistemas operativos 2011/2012.” [Online]. Available:
https://elearning.ipvc.pt/ipvc2021/mod/resource/view.php?id=31212

[4] R. Fricks and M. Pedro, “Shell script.” [Online]. Available: http://www.inf.ufes.br/


~vitorsouza/archive/2020/wp-content/uploads/teaching-lp-20162-seminario-shell.pdf

[5] shell | guia linux. [Online]. Available: https://guialinux.uniriotec.br/shell/

[1] [2] [3] [4] [5]

A Todos os comandos usados


373 cd PL/trab6
374 pwd
375 vi .vimrc
376 cat /etc/shells
377 cat /etc/shells > system_shells
378 ls -ls
379 vi .vimrc
380 vi myfirst.sh
381 ls -l

21
382 chmod 754 myfist.sh
383 chmod 754 myfirst.sh
384 ls -l
385 PATH=PATH:`pwd`
386 ./myfirst.sh
387 clear
388 vi myfirst.sh
389 logout
390 cd PL/trab6
391 vi myfirst.sh
392 ./myfirst.sh
393 echo $?
394 cp myfirst.sh exer64.sh
395 vi exer64.sh
396 ./exer64.sh
397 ./exer64.sh a raposa ate o rio
398 logout
399 cd PL/trab6
400 vi exer64.sh
401 cd PL/trab6
402 vi exer64.sh
403 ./exer64.sh
404 cp exer64 exer65
405 cp exer64.sh exer65.sh
406 vi exer65.sh
407 ./exer65
408 ./exer65.sh
409 ./exer65.sh ruben junior aluno de redes
410 cp exer64.sh exer66.sh
411 vi exer66
412 cp exer65.sh exer66.sh
413 vi exer66.sh
414 cp exer66.sh exer651.sh
415 ./exer651.sh vou contar os argumentos passados a este script
416 vi exer66.sh
417 ./exer66.sh
418 vi exer66.sh
419 ./exer66.sh
420 cp exer66.sh exer67.sh
421 vi exer67.sh1
422 vi exer67.sh
423 ./exer67.sh
424 vi exer67.sh

22
425 cp exer67.sh exer68.sh
426 vi exer68.sh
427 ./exer68.sh
428 vi exer68.sh
429 cp exer66.sh exer69.sh
430 vi exer69.sh
431 ./exer69.sh
432 vi exer69.sh
433 ./exer69.sh
434 cp exer69.sh exer610.sh
435 vi exerc610.sh
436 vi exer610.sh
437 ./exer610.sh
438 cp exer69.sh exer611.sh
439 vi exer611.sh
440 ./exer611.sh
441 vi exer611.sh
442 ./exer611.sh
443 cp exer69.sh exer612.sh
444 vi exer612.sh
445 cp exer611.sh exer612.sh
446 vi exer612.sh
447 ./exer612.sh
448 vi exer612.sh
449 logout
450 history
451 cd PL/trab6
452 history > historytrab6

23

Você também pode gostar