Você está na página 1de 42

PONTIFCIA UNIVERSIDADE CATLICA DE MINAS GERAIS Instituto de Informtica e Cincias Exatas Engenharia de Computao Laboratrio 01 - Sistemas Operacionais - Professor:

Paulo Amaral Alunas: Aline Norberta de Brito Josiane Fernandes Alves e) Exerccios e1) Verificar, fazer uma breve descrio e mostrar exemplos (Use o sistema de ajuda do Linux, comando type para determinar o tipo (externo, interno, keyword), livros, manuais e a web) dos seguintes comandos do Linux: alias, as, bc, break, case, cat, clear, chmod, continue, do, echo, eval, exit, find, for, gcc, g++, grep, history, if, kill, ld, locate, logout, man, more, mtools, mv, ps, pwd, read, scp, shift, sort, ssh, touch, type, top, vi, wc, while. OBS: Pode-se usar os comandos (de ajuda) man, info e nome_do_comando --help Exemplos: info ls, ls --help e/ou info ls man mtools, info mtools e/ou alias Comando interno do interpretador. Descrio: Permite a voc criar novos comandos baseados em comandos j existentes. Exemplos: Temos o comando ls color=auto, para ver a listagem de comandos coloridas e diferenciados. possvel usar alias para facilitar digitando: $ alias ls='ls --color=auto'. Agora ao digitar ls, a listagem ser mostrada em cores. Temos o comando apt-get install vim, para instalao do vim. Podemos criar um alias para apt-get install, assim toda vez que tivermos uma pacote a ser instalado utilizaremos o alias seguido do nome do pacote. $ alias instalar=apt-get install Agora, para instalao do vim por exemplo basta digitarmos: instalar vim as Comando externo do interpretador (/usr/bin/as). Descrio: um montador GNU porttil, destinado principalmente para montar a sada do compilador GNU C. Exemplos: Monta a sada do compilador para o arquivo .asm dados, sem exibir warnings.
$as -W dados.asm

bc Comando externo do interpretador (/usr/bin/bc). Descrio: O bc no exatamente uma calculadora, mas sim uma linguagem para clculos, que lembra vagamente a linguagem C. O que significa que podemos ter construes como 'if', 'for', 'while', que um programa pode pedir informaes para um usurio, e que podemos usar "programas" escritos para o 'bc' como se usssemos um shell script. Por padro realiza as operaes inteiras de adio, subtrao, multiplicao e diviso. Quando carregamos o bc com a opo '-l', temos alguns comandos matemticos com operaes de ponto flutuante: s(x): o seno de x (x em radianos) c(x): o cosseno de x (x em radianos) a(x): o inverso da tangente de x (retorna radianos). Se y = tangente de x (tg x), a(y) = x l(x): o logaritmo natural de x. (ln x) e(x): a funo exponencial ( e^x ) (exp x) Podemos definir algumas funes extras a partir da definio matemtica: define sin(x) {return s(x)} define cos(x) {return c(x)} tg x = sen x / cos x: define tan(x) {return s(x)/c(x)} log10 x (logaritmo na base 10 de x) = ln x / ln 10: define l10(x) {return l(x)/l(10)} Converso entre radianos e graus: d2r: graus para radianos r2d: radianos para graus pi = 3.14159265 define d2r(n) { return n * (pi/180); } define r2d(n) { return n / (pi/180); } Exemplos: Aps digitar o comando bc, ser aberto uma console para que os clculos sejam realizados e, para finalizar e sair da console da calculadora, deve-se digitar na linha de comando o comando quit.
$ bc -l bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 100/3 33.33333333333333333333

s(90) .89399666360055789051 c(90) -.44807361612917015236 c(0) 1.00000000000000000000 quit

break Comando interno do interpretador. Descrio:O comando BREAK utilizado basicamente em conjunto com duas estruturas - as estruturas de iterao (for, while e do while) e com o switch. Sendo utilizado para sair abruptamente da estrutura ou de n repeties da mesma. Exemplos: L linhas fornecidas pelo usurio at que o usurio digite o '.' para sair.
while : #comando nulo; sempre verdadeiro do printf "Type . to finish ==> " read line case $line in .) echo "Message done" break;; *) echo $line;; esac done

case Palavra chave do interpretador (keyword). Descrio: Realiza uma determinada sequncia de comandos de acordo com o valor recebido na entrada. Exemplos:
case "$1" in 'start') echo "Iniciando o servio..." <comandos para iniciar o servio> ;; 'restart') echo "Reinicializando o servio..." <comandos para reinicializar o servio> ;; 'stop') echo "Parando o servio..." <comandos para parar o servio> ;; *) echo "Opo invalida!" echo "As opes vlidas so: start, stop e restart";; esac

cat Comando externo do interpretador (/bin/cat).

Descrio: Mostra o contedo de um arquivo e, em conjunto com os operadores redirecionador de sada (>) e redirecionador append (>>) capaz de criar, editar e concatenar arquivos. Exemplo: $ cat dados.txt ( para ver o contdo do arquivo dados.txt) $ cat> arquivo.txt (cria e edita o arquivo.txt) $cat arquivo1.txt > arquivo2.txt (O contedo do segundo .txt ser sobrescrito pelo primeiro, e, se no existir, ser criado) $cat arquivo1.txt >> arquivo2.txt (O contedo do primeiro .txt ser adicionado ao segundo) clear Comando externo do interpretador (/usr/bin/clear). Descrio: Elimina todo o contedo visvel, deixando a linha de comando no topo, como se o terminal acabasse de ter sido acessado. Exemplos: $ clear chmod Comando externo do interpretador (/bin/chmod). Descrio: Comando para alterar as permisses de arquivos e diretrios. Configurao da Permisses O primeiro caractere da string indica o tipo de arquivo: se for "d" representa um diretrio, se for "-" equivale a um arquivo. Entretanto, outros caracteres podem aparecer para indicar outros tipos de arquivos, conforme mostra a tabela abaixo: d => diretrio b => arquivo de bloco c => arquivo especial de caractere p => canal s => socket - => arquivo "normal" Os demais so divididos em trs grupos de trs, cada um representado o proprietrio, o grupo e todos os demais, respectivamente. Desconsiderando o primeiro caractere e dividindo a string restante em 3 partes temos: a primeira parte significa permisses do proprietrio. a segunda parte significa permisses do grupo ao qual o usurio pertence a terceira parte significa permisses para os demais usurios H, basicamente, trs tipos de permisses: leitura, gravao e execuo. r => significa permisso de leitura (read) w => significa permisso de gravao (write) x => significa permisso de execuo (execution) - => significa permisso desabilitada

Permisso ----x -w-wx r-r-x rwrwx

Binrio 000 001 010 011 100 101 110 111

Decimal 0 1 2 3 4 5 6 7

A tabela abaixo mostra uma lista de configuraes bastante utilizadas: --------r-------r--r--r-rw-----rw-r--r-rw-rw-rwrwx-----rwxr-x--rwxr-xr-x rwxrwxrwx 000 400 444 600 644 666 700 750 755 777

As trs ltimas permisses da tabela so comumente usadas para programas e diretrios. Chmod -R seta as permisses no diretrio e nos arquivos dentro dele. Exemplos: Temos um diretrio qualquer chamado trabalhos que eu quero permisso total para o dono [eu], permisso de apenas leitura para o meu grupo e nenhuma permisso para o resto do mundo. O comando para executar essa ao : $ chmod 740 /trabalhos (7=rwx, 4=r e 0=nada) Para adicionar permisso de gravao no arquivo teste.txt para um usurio. Ento o comando a ser digitado ser: $ chmod u+w teste.txt continue Comando interno do interpretador . Descrio: O comando continue pode ser visto como sendo o oposto do break. Ele s funciona dentro de um loop. Quando o comando continue encontrado, o loop pula para a prxima iterao, sem o abandono do loop, ao contrrio do que acontecia no comando break.

Exemplos:
numero=0 while [ $numero -lt 11 ] do echo -n "Digite um numero de 0 a 10: " read numero if [ "$numero" -gt 10 ] then continue fi if [ "$numero" -lt 11 ] then echo "Voce digitou $numero" fi done echo fi

do Palavra chave do interpretador (keyword). Descrio: Precede a sequncia de comandos em uma instruo for, while, until ou select. Exemplos: O exemplo abaixo mostra um contador:
x = 0 while [ "$x" -le 10 ]; do echo "Execuo nmero: $x"?; x = $((x+1)); done;

echo Comando interno do interpretador. Descrio: Escreve uma string na sada padro. Exemplos:
$ echo teste de impresso

eval Comando interno do interpretador. Descrio: Tem a seguinte sintaxe: eval args, e normalmente usado em scripts shell e args uma linha de cdigo que contm variveis do shell. O comando eval obriga a expanso de varivel ocorrer primeiro e depois executa o comando resultante. Essa varredura dupla til sempre que as variveis do shell contm smbolos de redirecionamento de entrada/sada, alis ou outras variveis de shell. Exemplos:
for option do case $option in #Define para onde vai a sada save) out=' > $newfile' ;; show) out=' |more' ;; esac done eval sort $file $out

exit Comando interno do interpretador. Descrio: Sa de um script shell com o estado n (por exemplo, exit 1). n pode ser 0 (sucesso) ou no-zero (falha). Se n no for dado, o estado de sada ser o do comando mais recente. O comando exit pode ser executado na linha de comando para fechar uma janela (desconectar). Os estados de sada podem ter um valor que varia de 0 a 255. Exemplos:
if [ $# -eq 0 ] then echo Usage: $0 [-c] [-d] file(s) 1>&2 exit 1 #Sinaliza o erro fi

find Comando externo do interpretador (/usr/bin/find). Descrio: utilizado para localizar grupos de arquivos em particular. Ele desce na rvore de diretrios, comeando em cada nome de caminho, e localiza os arquivos que satisfazem as condies especificadas. Exemplos: $find $HOME print (Lista todos os arquivos (e subdiretrios) presentes no seu diretrio base.) $find /trabalho name capitulo1 (Lista todos os arquivos chamados capitulo 1 no diretrio /trabalho.) for Palavra chave do interpretador (keyword). Descrio: necessrio fornecer uma lista de nomes e ele executa os comandos para cada nome na lista. Conforme a sintaxe abaixo:
for <var> in <lista>; do comandos done;

O For associa o primeiro item da lista de nomes varivel <var> e executa os comandos. Em seguida, associa novamente o segundo item da lista <var> e executa novamente os comandos... e assim por diante, at acabar a lista. Exemplos:
$ for x in Compra Venda Aluguel; do echo $x; done; for x in $(seq 10); #(Exibe na tela a sequncia de 1 a 10) do echo $x; done;

gcc Comando externo do interpretador (/usr/bin/gcc). Descrio: Compila um ou mais arquivos-fonte de programao em cdigo de mquina. Ele compila as linguagens C, C++, Objective-C, Ada, FORTRAN e Java.

Exemplos: Compila o arquivo gcc.c e, caso no ajam erros, executa o arquivo de sada.
$ gcc teste.c $ ./teste.out

g++ Comando externo do interpretador (/usr/bin/g++). Descrio: Ativa o comando gcc com as opes necessrias para faz-lo reconhecer C++. Exemplos: Compila o arquivo teste.cpp e gera o executvel de sada teste.exe
$ g++ -c teste.cpp -o teste.exe

grep Comando interno do interpretador. Descrio: Procura, em um ou mais arquivos, linhas que casem com uma expresso regular padro. O status de sada ser 0, se todas as linhas casarem; 1, se nenhuma casar; e 2 para erros. Exemplos: $grep -1 ^#include /usr/include/* (Lista os arquivos de cabealho que tm pelo menos uma diretiva #include.) history Comando interno do interpretador. Descrio: Verso do Bash. Imprime comandos da lista de histrico ou gerencia o arquivo de de histrico. Sem nenhuma opo ou argumento, exibe a lista de histrico com nmeros de comando, com um argumento cont, imprime apenas esse nmero de comandos mais recentes. Exemplos: Exibe a listagem dos ltimos comandos digitados
$ history

Limpa a listagem dos ltimos comandos:


$ history -c

if Palavra chave do interpretador (keyword). Descrio: Executa uma sequncia de comandos apenas se uma condio for satisfeita, Pode conter uma clusula else onde executa comandos se a condio if no for satisfeita. Exemplos: Insere 0 antes dos nmeros menores do que 10:
if [ $counter -lt 10 ] then number=0$counter else number=$counter fi

Cria um diretrio, se ele no existir:


if [ ! -d $dir ]; then mkdir $dir chmod 755 $dir fi

kill Comando interno do interpretador. Descrio: Envia um sinal para encerrar uma ou mais IDs de processo. Exemplos: Mata o processo com PID (Process IDentification ou Process ID) 1234:
$ kill 1234

ld Comando externo do interpretador (/usr/bin/ld). Descrio: Combina vrios arquivos .obj na ordem especificada, em um nico mdulo de objeto executvel. ld o ligador e frequentemente ativado de forma automtica pelos comandos do compilador. Exemplos: Para linkar o arquivo /lib/crt0.o com teste.o, produzindo o arquivo output:
$ld -o <output> /lib/crt0.o hello.o -lc

locate Comando externo do interpretador (/usr/bin/locate). Descrio: Pesquisa bancos de dados de contedo do sistema que atualizado periodicamente de nomes de arquivo e imprime as correspondncias. Exemplos: Cria a base de dados local onde o locate ir pesquisar e em seguida procura por todos os arquivos com a palavra dados no nome.
$ updatedb $ locate dados

logout Comando interno do interpretador. Descrio: Somente para o Bash. Sai de um shell de login. O comando falhar se o shell corrente no for de login. Exemplos: Sa da sesso atual
$ logout

man Comando externo do interpretador (/usr/bin/man). Descrio: Exibe informaes dos manuais de referncia on-line. O comando man localiza e imprime o ttulo nomeado da seo de referncia designada. Exemplos: Exibe as informaes sobre o prprio manual:
$man man $man ld

Exibe informaes sobre o comando ld: more Comando externo do interpretador (/bin/more). Descrio: Exibe os arquivos nomeados em um terminal, uma tela inteira por vez. Exemplos: Percorre o arquivo no modo limpar e exibe prompts.
$ more cd arquivo

mtools Comando externo do interpretador (/usr/bin/mtools). Descrio: Funciona como um conjunto de ferramentas para trabalhar com arquivos e sistemas de arquivos MS-DOS, especialmente para acessar arquivos em disquetes sem mont-los como sistemas de arquivos Unix. Exemplos: Copia file1 e file2 do arquivo de imagem my_image_file.bin para o diretrio /tmp.
$mcopy -i my_image_file.bin ::file1 ::file2

mv Comando externo do interpretador (/bin/mv). Descrio: Move ou muda o nome de arquivos e diretrios. A origem e o destino determinam o resultado. Exemplos: Renomeia o arq1.txt para arq2txt
$ mv arq1.txt arq2.txt

ps Comando externo do interpretador (/bin/ps). Descrio: Mostra os processos ativos. Exemplos:


$ ps

pwd Comando interno do interpretador. Descrio: Imprime o nome de caminho completo do diretrio de trabalho corrente. Exemplos:
$ pwd

read Comando interno do interpretador. Descrio: L linha da entrada padro e atribui cada palavra varivel correspondente, com todas as palavras restantes atribudas ltima varivel. Se apenas uma varivel for especificada, a linha inteira ser atribuda a essa varivel. Exemplos: L trs variveis:
$read first last address Josiane Alves Guarapari, 1010 $echo $last, $first\n$address Alves, Josiane Guarapari, 1010

Pede para que voc mesmo digite duas temperaturas(verso do sheel Korn):
$ read n1?High low: n2 High low: 65 33

scp Comando externo do interpretador (/usr/bin/scp). Descrio: Copia arquivos entre hosts em uma rede, com segurana, usando ssh. Faz parte do conjunto OpenSSH de ferramentas de rede. Exemplos: Copia o arquivo local user.server1.pub no sistema remoto server2, colocando-o no diretrio de base de james.
$ scp user.server1.pub James@server2:/home/james/

shift Comando interno do interpretador. Descrio: Desloca argumentos de posio. Pode ser usado com um argumento n que desloca n casas para a esquerda. Exemplos: Usa o resultado da expresso como contagem de deslocamento.
$ shift $(($1 + $6))

sort Comando externo do interpretador (/usr/bin/sort). Descrio: Ordena as linhas dos arquivos nomeados. Compara os campos especificados para cada par de linhas; se nenhum campo for especificado, as compara por byte, na sequncia da paginao da mquina. Se nenhum arquivo for especificado ou se o arquivo for -, a entrada ser extrada da entrada padro. Exemplos: Coloca a lista de palavras em ordem alfabtica, remove as duplicadas e imprime a frequncia de cada palavra.
$sort -fd listapalavras | uniq c

ssh Comando externo do interpretador (/usr/bin/ssh). Descrio: Conecta um usurio em um sistema remoto com segurana e executa comandos nesse sistema. Exemplos: Acessa uma mquina remotamente a partir de outras mquinas Linux usando o comando "ssh", seguido do login usurio (na mquina remota) e o endereo:
$ ssh gdh@192.168.1.192

touch Comando interno do interpretador. Descrio: Atualiza o horrio de acesso e o horrio(e as datas) de modificao com o horrio e data correntes, para um ou mais arquivos. Exemplos: Modifica a data e hora de acesso e modificao de um arquivo:
$ touch -t AAAAMMDDhhmm.ss arquivo

type Comando interno do interpretador. Descrio: Mostra se cada nome de comando um comando do Unix, um comando interno, um alias, uma palavra-chave do shell ou uma funo de shell definida. Exemplos:
$ type type

top Comando externo do interpretador (/usr/bin/top). Descrio: Mostra os processos que usam a CPU mais intensamente. Digite q para sair. Exemplos: Mostra o uso da CPU atualizado a cada 10s.
$top -d 10

vi Comando externo do interpretador (/usr/bin/vi). Descrio: um editor de textos orientado para tela, baseado no ex. O vi tem dois modos: um modo de comando e um modo de insero. Exemplos: Abre o arquivo dados.c no editor, podendo o mesmo ser visualizado e editado, teclando i ao abrir o arquivo:
$ vi dados.c

wc Comando externo do interpretador (/usr/bin/wc). Descrio: Imprime as contagens de byte, palavra e linha de cada arquivo. Imprime uma linha de total para vrios arquivos. Exemplos: Conta o nmero de usurios conectados.
$ who | wc -1

while Palavra chave do interpretador (keyword). Descrio: Enquanto uma condio for satisfeita, executa uma sequncia de comandos. Exemplos: Mostra na tela a contagem dos nmeros de 0 40.
cont=0 while [ $cont -le 40 ] do echo $cont cont=`expr $cont + 1` done

_________________________________________________________ e2) Crie 3 arquivos de texto: arq1, arq2, arq3, conforme abaixo: arq1 a d g j p arq2 b e c l r arq3 f h i o z

Criando os arquivos: /home/aline# vi arq1.txt /home/aline# vi arq2.txt /home/aline# vi arq2.txt

Crie a seguinte rvore de diretrios no seu home, com os respectivos arquivos armazenados: dir1/ subdir1 subsubdir11 arq1.txt subsubdir12 arq2.txt subdir2 subsubdir21 subsubdir22 arq3.txt subdir3 subsubdir3 subsubsubdir3 Criando diretrios: /home/aline# mkdir -p dir1/subdir1/subsubdir11 /home/aline# mkdir -p dir1/subdir1/subsubdir12 /home/aline# mkdir -p dir1/subdir2/subsubdir21 /home/aline# mkdir -p dir1/subdir2/subsubdir22 /home/aline# mkdir -p dir1/subdir3/subsubdir3/subsubsubdir3

Movendo arquivos para seus respectivos diretrios: /home/aline# mv arq1.txt dir1/subdir1/subsubdir11 /home/aline# mv arq2.txt dir1/subdir1/subsubdir12 /home/aline# mv arq3.txt dir1/subdir2/subsubdir22 _________________________________________________________ Faa e verifique se cada comando funcionou: 1. A partir de dir1, v para subsubdir12 com um nico comando; /home/aline/dir1# cd subdir1/subsubdir12

2. A partir de subsubdir12, v para subsubdir22 com um nico comando; /home/aline/dir1/subdir1/subsubdir12# cd ../../subdir2/subsubdir22 3. Copie arq3 para subsubsubdir3 com um nico comando; /home/aline/dir1/subdir2/subsubdir22# cp arq3.txt ../../subdir3/subsubdir3/subsubsubdir3/ 4. Mova arq1 para subsubdir21 com um nico comando; /home/aline/dir1/subdir2/subsubdir22# mv ../../subdir1/subsubdir11/arq1.txt ../subsubdir21/ 5. Renomeie arq1 em subsubdir21para arq21 /home/aline/dir1/subdir2/subsubdir22# mv ../subsubdir21/arq1.txt ../subsubdir21/arq21.txt 6. Copie arq21 para subsubsubdir3 com o nome arq3333 com um nico comando. /home/aline/dir1/subdir2/subsubdir22# cp ../subsubdir21/arq21.txt ../../subdir3/subsubdir3/subsubsubdir3/arq3333.txt Diretrio Dir/ /home/aline/dir1/ subdir1 subsubdir11 subsubdir12 arq2.txt subdir2 subsubdir21 arq21.txt subsubdir22 arq3.txt subdir3 subsubdir3 subsubsubdir3 arq3333.txt arq3.txt 7. Crie um diretrio TheDir no seu home; /home/aline# mkdir TheDir 8. Mova todo o contedo de subdir3 para o subdiretrio TheDir /home/aline# mv dir1/subdir3/subsubdir3/ TheDir/

Diretrio TheDir: TheDir/ subsubdir3 subsubsubdir3 arq3333.txt arq3.txt 9. Remova os arquivos arq3 e arq333 do seu respectivo diretrio; /home/aline# rm TheDir/subsubdir3/subsubsubdir3/arq3.txt /home/aline# rm TheDir/subsubdir3/subsubsubdir3/arq3333.txt 10. Remova o arquivo arq2 do seu respectivo diretrio; /home/aline# rm dir1/subdir1/subsubdir12/arq2.txt 11. Remova o diretrio subsubdir2; /home/aline# rm -r dir1/subdir2/subsubdir2* 12. Remova os diretrios subdir1 e subdir2; /home/aline# rm -r dir1/subdir2/ dir1/subdir1 13. Remova o diretrio dir1; /home/aline# rm -r dir1/ 14. Remova o diretrio TheDir; rm -r TheDir/

a4) Exerccios: Escreva e execute script mostrado a seguir. Escreva e explique (justificando) no relatrio cada linha que ser impressa na tela: #Limpa todas as informaes presentes na linha de comando # Apenas so resultados deste script ser visualizado. clear #Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # # Script para imprimir usurios logados, data e hora atuais. # #Imprime usurio logado echo "Ola $USER" #imprime a data corrente sem saltar linha echo -e "Hoje \c"; date #Imprime a quantidade de usuririos logados sem saltar linha. echo -e "Numero de usurios logados: \c" ; who | wc -l #Imprime o calendrio, uma linha abaixo do ttulo 'Calendar' echo "Calendar" cal #Sai do script exit 0 Sada do script: Eng. Computao - Lab01 - SO Alunas: Aline Norberta Brito Josiane Fernandes Alves Ola root Hoje Qui Ago 16 23:02:10 BRT 2012 Numero de usurios logados: 1 Calendar Agosto 2012 Do Se Te Qu Qu Se S 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

b) Exerccios (entregar) Descreva (justificando) o que acontece com as sequncias de comandos abaixo: b1) Sequncia 1 clear #Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # Copia comandos presentes no histrico para o arquivo ARQTESTE1 cp .bash_history ARQTESTE1 # OBS: no diretrio HOME do usurio /home/usuario # Conta a quantidade de caracteres(-c), a quantidade de palavras (-w) e # a quantidade de linhas presentes no arquivo ARQTESTE1. wc -cwl ARQTESTE1 # O comando ls -la lista os arquivos, inclusive os ocultos contidos no diretrio, com # informaes de permisso, usurio, grupo, etc. # O comando ls -la | wc -clw, retorna a quantide de linhas presentes na listagem(-l), # a quantidade de palavras (-w) e a quantidade de caracteres (incluindo espaos e quebras # de linha. ls -la | wc -clw #Cria e preenche o arquivo LISTADIR com as informaes retornadas pelo comando ls -la; #ou seja, a listagem dos arquivos contidos no diretrio, inclusive arquivos ocultos, # no formato longo (permisses, tamanho, quantidade de subdiretrios, etc.) ls -la > LISTADIR # O comando cat lista o contedo do arquivo ARQTESTE1 criado anteriormente. # Juntamente com o comando wc - clw, temos como retorno a quantidade de linhas, palavras # e caracteres presentes no arquivo referenciado, ou seja: # p/ ARQTESTE1: quantidade de palavras, linhas e caracteres presentes na listagem de comandos do # hitrico. # # p/ LISTADIR: quantidade de palavras, linhas e caracteres presentes na listagem dos arquivos # presentes no diretrio atual no formato longo. cat ARQTESTE1 | wc -clw cat LISTADIR | wc -clw # O comando grep man Nome_arq retorna as linhas no arquivo com a presena da string 'man', no #arquivo referenciado. # Juntamente com wc -lcw, retornado a quantidade de linhas, palavras e caracteres presentes # nesta listagem, neste caso para os arquivos ARQTESTE1 E LISTADIR1. grep man ARQTESTE1 | wc -lcw grep drw LISTADIR | wc -lcw

b2) Sequncia 2 clear #Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # O comando mna mostra a pgina do manual de um comando especfico. # Se seguido de um nmero, indica em qual captulo est a informao. # Os captulos existentes so: #1 Programas executveis ou comandos do shell #2 Chamada do sistema (funes originadas do Kernel) #3 Chamada de Biblioteca (funes dentro de bibliotecas dos programas) #4 Arquivos especiais (normalmente encontrados em /dev) #5 Formatos de arquivos e convenes, exemplo /etc/passwd #6 Jogos #7 Diversos (incluindo pacotes de macros e convenes), exemplo man(7), groff(7) #8 Comandos de administrao de sistema (normalmente somente para o root) #9 Rotinas do Kernel [No padro] # O comando abaixo cria e escreve no arquivo sc o captulo 2 do manual para o # comando syscal. man 2 syscalls>sc # O comando abaixo busca a presena da palavra system no arquivo sc e retorna a # quantidade de linhas em que esta palavra foi encontrada. grep system sc | wc -l b3) Sequncia 3 clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # cp .bash_profile ARQTESTE1 # OBS: no diretrio HOME do usurio /home/aluno # Copia contedo do arquivo oculto .profile (arquivo de configurao do usurio root) para ARQTESTE1. cp .profile ARQTESTE1 # OBS: no diretrio HOME do usurio /home/aluno/a123456 # Retorna a quantidade de palavras, linhas e caracteres presentes em ARQTESTE1. wc -cwl ARQTESTE1 # O comando ls -la lista os arquivos, inclusive os ocultos contidos no diretrio, com # informaes de permisso, usurio, grupo, etc. # O comando ls -la | wc -clw, retorna a quantide de linhas presentes na listagem(-l), # a quantidade de palavras (-w) e a quantidade de caracteres (incluindo espaos e quebras # de linha.

ls -la | wc -clw # Cria e preenche o arquivo LISTADIR com a lista de diretrio e arquivos presentes, no # formato longo. ls -la > LISTADIR # Retorna a quantidade de palavras, linhas e caracteres presentes nos arquivos ARQTESTE1 e LISTADIR # respectivamente. cat ARQTESTE1 | wc -clw cat LISTADIR | wc -clw # Busca as linhas em que foram encontradas a palavra man e ARQTESTE1, e retorna quantas linhas foram # encontradas e a quantidade de palavras e caracteres nas mesmas. grep man ARQTESTE1 | wc -lcw # Busca as linhas em que foram encontradas a palavra drw e ARQTESTE1, e retorna quantas linhas foram # encontradas e a quantidade de palavras e caracteres nas mesmas. grep drw LISTADIR | wc -lcw b4) Sequncia 4 clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # Copia o captulo 2 do manual, referente ao comando fork, para o arquivo # arqfork. # fork(): cria uma cpia exata a partir do ponto em que o comando executado e dois # processos executam ao mesmo tempo, o processo pai (aquele que chama o comando # fork() ) e o processo filho (o que foi gerado pela chamada do fork()). man 2 fork > arqfork # Busca a presena da palavra processo no arquivo arqfork e retorna a quantidade de # encontradas. grep processo arqfork | wc -l b5) Sequncia 5 clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n"

# Imprime o contedo da varivel PATH. # A varivel PATH uma varivel do sistema Linux que indica trajetria # dos binrios (executveis dos programas), que podem ser executados # sem indicar o caminho completo (geralmente ele muito longo) da onde eles esto. echo $PATH # Retorna o diretrio pessoal do usurio em questo. echo $HOME # Define o terminal padro. echo $TERM # Retorna o valor do prompt primrio. # A varivel de ambiente PS1 a responsvel pelo prompt apresentado para o usurio # na linha de comando do Bash. Alm desta varivel, existe tambm a PS2, que indica # como ser a string utilizada para o prompt secundrio que exibido quando o # comando precisa de mais informaes para ser finalizado (> o valor padro). # Como voc j deve ter deduzido, para alterar a string do prompt, basta alterar # o valor desta varivel. O prompt primrio no Conectiva Linux tem como padro # a sintaxe [usurio@host diretrio]. Utilizando o comando export, podemos mudar # o prompt para exibir data e hora, por exemplo: # $export PS1=[\\\d\ \\@\ \\\u]\$ echo $PS1 # Imprime o valor da varivel $IFS, que por defaul um epao em branco. # Todos os parmetros (assim como a lista do for) so delimitados # pelo contedo da varivel #IFS. echo $IFS b6) Sequncia 6 clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # O comando abaixo cria e escreve no arquivo sc o captulo 2 do manual para o # comando syscal. man 2 syscalls > sc # Busca as linhas com a presena da palavra system no arquivo sc, e retorna # a quantidade de linhas desta listagem. grep system sc | wc -l

e) Exerccios Digite e execute os programas p2 a p6 programas mostrados a seguir, escreva e explique (justificando) cada linha que ser impressa na tela e1) clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # nome do programa: p2.sh # programadores: Aline Norberta de Brito # Josiane Fernandes Alves # descricao: mostra a sintaxe do if...else no formato padrao # entrada(s) : dois nmeros fornecidos pelo usuario # saida(s): exibe na tela mensagem # para executar e testar digite: bash p2.sh # # inicio do programa: # # Mensagem solicitando ao usurio a insero de dois nmeros. echo n " Informe os valores de x e y :" # Leitura dos dois valores digitados pelo usurio. Valores # armazenados nas variveis x e y. read x y # Testa se x menor que y. if [ $x -lt $y ]; then echo " x = $x eh menor que y = $y" # Caso a sentena acima seja falsa, testa se x igual a y. elif [ $x -eq $y ]; then echo " x = $x eh igual a y = $y " # Caso as sentenas acima sejam falsas, testa se x maior que y. else echo " x = $x eh maior que y = $y " # Fim do teste. Fi

e2) clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # nome do programa: p3.sh # programadores: Aline Norberta de Brito # Josiane Fernandes Alves # descricao: mostra a sintaxe do if...else no formato C # entrada(s) : dois nmeros fornecidos pelo usuario # saida(s): exibe na tela mensagem # inicio do programa: # Mensagem para usurior digitar dois nmeros echo -n "Informe os valores de x e y: " # Leitura dos nmeros digitados pelo usurio. Nmeros armazenados # nas variveis x e y. read x y # Testa se x menos que y. if (( x < y)); then echo "x=$x eh menor que y=$y" # Caso primeira sentena seja falsa, testa se x igual a y. elif (( x == y)); then echo "x=$x eh igual a y=$y" # Caso sentenas acima sejam falsas, testa se x maior que y. else echo "x=$x eh maior que y=$y" #Fim dos testes. fi

e3) clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # nome do programa: p4.sh # programadores: Aline Norberta de Brito # Josiane Fernandes Alves # descricao: mostra a sintaxe do if...else # entrada(s) : nome e nota do aluno # saida(s):exibe na tela mensagem # # inicio do programa: # echo -n "Informe seu nome : " read NOME # ler o nome e armazenar na variavel NOME echo -n "Informe sua nota final : " read NOTA # ler um valor e armazenar na variavel NOTA # Testa se a nota digitada maior ou igual a 90, e informa situao # ao aluno. if [ $NOTA -ge 90 ]; then # inicio do if echo "Parabens $NOME, voce foi aprovado com uma nota excelente!" # Testa se a nota maior que 60 e informa situao ao aluno. elif [ $NOTA -gt 60 ]; then echo "Parabens $NOME, voce foi aprovado!" # Testa se a nota igual a 60, e informa situao ao aluno. elif [ $NOTA -eq 60 ]; then echo " $NOME,voce foi aprovado com nota mnima, estude mais !" # Caso nenhuma da sentenas acima sejam verdadeira, informa que o # aluno foi reprovado. else echo " $NOME,infelizmente voce foi reprovado!" #Fim do if fi

e4) clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # nome do programa: p5.sh # programadores: Aline Norberta de Brito # Josiane Fernandes Alves # descricao: mostra a sintaxe do if...else # entrada(s) : sim ou nao # saida(s): exibe na tela mensagem # inicio do programa: echo "Ainda menos de meio-dia (sim/no)? " read resposta #armazena resposta na varivel . # Se resposta igual a sim, mesnsagem de "Bom dia" impressa. if [ $resposta = "sim" ]; then # observe os espaos echo "Bom dia" #Caso contrrio, mensagem de "Boa tarde" impressa. else echo "Boa tarde " #Fim fo if fi exit 0 e5) #!/bin/sh # nome do programa: p6.sh # programadores: Aline Norberta de Brito # Josiane Fernandes Alves # descricao: mostra a sintaxe do if...else # entrada(s) : sim ou nao # saida(s): exibe na tela mensagem # # inicio do programa: # clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n"

echo "Ainda menos de meio-dia (sim/no)? " #Informa ao usurio a pergunta que dever ser respondida read resposta #L a resposta fornecida pelo usurio, e armazena na varivel resposta if [ $resposta = "sim" ]; then #Compara se a varivel resposta igual a string sim echo "Bom dia" #Caso seja verdade, exibe ao usurio a mensagem de Bom Dia elif [ $resposta = "nao" ]; then #Caso o usurio informe no, echo "Boa tarde " #Sera apresentada a mensgem de Boa Tarde. else #Caso o usurio tenha digitado uma string invlida, echo "Desculpe , $resposta nao reconhecida. Responda sim ou nao" #Avisa ao usurio exit 1 # script termina com valor 1, que indica erro fi #fim do if exit 0 #Caso o programa consiga terminar o if, significa que a execuo ocorreu corretamente e ele termina com o cdigo de sucesso 0. #Obs.:A funo exit deve ser usada quando se quer terminar a execuo do programa, retornando para o sistema operacional um indicativo. #O retorno 0 (zero) indica para o sistema operacional que o programa terminou corretamente, um retorno diferente de 0 (zero) indica um erro. #Para testar o retorno do programa no Linux basta usar o comando #$ echo $? f1 .1) clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # # nome do programa: p7.sh # programadores: Aline Norberta de Brito # Josiane Fernandes Alves # data: 27/08/2012 # descricao: mostra a sintaxe do while e exibe na tela a variao do valor de x, de 1 at o nmero digitado # entrada(s): um nmero fornecido pelo usurio # saida(s): exibe na tela mensagem # # inicio do programa: # X=1 # declara variavel X e atribui o valor 1 S=0 # declara variavel S e atribui o valor 0 echo #Imprime na tela uma linha em branco echo -n "Informe um numero inteiro menor ou igual a 20 : " #Imprime na tela, avisando o usurio para digitar um nmero read Y # ler um valor e armazenar na variavel Y while (( X <= Y )); do # inicio da repeticao -- Enquanto X, que comea em 1, for menor que o nmero digitado echo "O valor de X eh $X" #Imprime o valor da varivel X na tela

(( S = S + X )) #Atualiza o valor da varivel S, que comea de 0 e vai armazenando o somatrio de x (( X = X + 1 )) #Acrescenta 1 no valor de X, fazendo com que aparea na tela a contagem sequancial de 1 at o nmero digitado. done # fim da repeticao echo #Imprime na tela uma linha em branco f1 .2) clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # nome do programa: p8.sh # programadores: Aline Norberta de Brito # Josiane Fernandes Alves # data: 27/08/2012 # descricao: Informa se a matrcula par ou impar, exibe o nmero da matrcula de trs para frente, uma unidade por vez, e, o valor de X, que ser zerado durante a execuo e de S, que contm o somatrio dos dgitos da matrcula. # entrada(s): nome e numero de matricula do aluno (6 dgitos) # saida(s): exibe na tela mensagem (( S = 0 )) # atribui o valor 0 a variavel S echo -n "INFORME SEU NUMERO DE MATRICULA : " #Imprime na tela, avisando o usurio para digitar a matrcula read NMAT # entrada de dados (( X = NMAT )) #Atribui a varivel X o nmero de matrcula echo -n "INFORME SEU NOME : " #Imprime na tela, avisando o usurio para digitar seu nome read NOME # entrada de dados (( M = X % 2 )) #A varivel M recebe o resto da diviso do nmero de matrcula por 2 if [ $M -eq 0 ]; then #Se o resto da diviso for 0 echo -n " $NOME NMAT = $NMAT EH PAR : " #O nmero par else #Se o resto for diferente de 0(1) echo -n " $NOME NMAT = $NMAT EH IMPAR : " #O nmero impar fi #Fim do if echo; echo -n "REPETICAO : " #Avisa ao usurio o resultado da diviso # calculos while (( X > 0 )); do #Enquanto x for maior que 0, ou seja, enquanto no exibir todas as unidades (( Y = X % 10 )) #Pega o resto da diviso por 10, que equivale a pegar o valor da unidade echo -n $Y #Imprime a unidade, que seria o ltimo smbolo (( X = X / 10 )) #Divide o nmero de matrcula por 10, o que equivale a retirar a casa da unidade (( S = S + Y )) #Soma o valor da unidade exibida na tela done echo ; echo "X = $X S = $S" #Imprime o valor de X, que foi zerado, pois todos os dgitos foram exibidos, e o valor de S, que contm o somatrio dos dgitos da matrcula.

f1 .3) clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # nome do programa: p9.sh # programadores: Aline Norberta de Brito # Josiane Fernandes Alves # data: 27/08/2012 # descricao: exemplo de passagem de parametros na linha de comando (lc) # entrada(s) : parametros na linha de comandos (lc), sendo: # o numero de matricula (6 dgitos)e o nome completo do aluno # saida(s): exibe na tela os parametros na linha de comandom (lc) # # o caracter # eh usado para comentario no shell script # # para executar e testar digite: # bash p9.sh 231650 joao manuel fragoso # descricao de parametros na lc (variaveis pre-definidas do shell): # $1 primeiro parametro posicional na lc # $2 e $9 segundo e nono parametros posicionais na lc # $# numero de parametros na lc # $* lista dos parametros na lc # $0 parametro zero na lc: nome do arquivo do programa (arglc104.sh) # # inicio do programa: # ARGS_ORIG=$* # declara variavel e atribui o valor de $* echo "NO INICIO:" # escreve (ecoa) mensagem na tela echo "NUMERO DE ARGUMENTOS NA LC = $# " #Exibe o nmero de parmetros recebidos echo "ELES SAO : $*" #Exibe quais so todos os parmetros echo "NOME DO ARQUIVO : $0" #Exibe o nome do arquivo echo "PRIMEIRO PARAMETRO: $1" #Exibe o primeiro parmetro da lc X=2 # declara variavel X e atribui o valor 2 shift $X # desloca X parametros na lc echo "DEPOIS DE SHIFT $X, FICAM $# ARGUMENTOS NA LC " #Desloca os argumentos da lc de 2, ou seja, $1 recebe o valor de $3, $2 recebe $4, e assim sucessivamente, at o fim dos parmetros, sendo os valores antigos de $1 e $2 perdidos. echo "ARGUMENTOS RESTANTES: $*" #Exibe os argumentos que restaram aps o deslocamento echo "ARGUMENTOS ORIGINAIS = $ARGS_ORIG" #Exibe os argumentos originais, pois j tinham sido salvos em uma varivel, caso contrrio, os valores deslocados no poderiam ser recuperados. echo "fim do teste"

f2) Exerccios 1) Salve o script abaixo chamado meu_script_1 e execute o arquivo do shell: clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # nome do programa: meu_script_1.sh # programadores: Aline Norberta de Brito # Josiane Fernandes Alves # data: 27/08/2012 # descricao: mostra a sintaxe do for # entrada(s): nenhuma # saida(s): exibe na tela os valores de i for i in 1 2 3 Joao Jose Pedro Maria do echo i=$i #Exibe na tela todos os valores listados no in done 2) Salve o script abaixo chamado meu_script_2 e execute o arquivo do shell: clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # nome do programa: meu_script_2.sh # programadores: Aline Norberta de Brito # Josiane Fernandes Alves # data: 27/08/2012 # descricao: mostra a sintaxe do for # entrada(s): nenhuma # saida(s): exibe na tela o contedo dos arquivos .txt for file in *.txt #Para todos os arquivos .txt no diretrio atual do cat $file #Exibe o seu contedo done

3) Salve o script abaixo chamad o meu_script_3 e execute o arquivo do shell: clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # nome do programa: meu_script_3.sh # programadores: Aline Norberta de Brito # Josiane Fernandes Alves # data: 27/08/2012 # descricao: mostra a sintaxe do for com o uso de variveis # entrada(s): Nome, fornecido pelo usurio # saida(s): exibe na tela mensagem echo Oi! Qual seu nome\? read name #L a entrada e armazena em name for N in $name do echo Oi $N #Exibe mensagem na tela done 4) Salve o script abaixo chamado meu_script_4 e execute o arquivo do shell: clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # nome do programa: meu_script_4.sh # programadores: Aline Norberta de Brito # Josiane Fernandes Alves # data: 27/08/2012 # descricao: mostra a sintaxe do case # entrada(s): Nome, fornecido pelo usurio # saida(s): exibe na tela mensagem echo -n "Oi! Qual sua resposta (s\n)?" read resposta #L do teclado e armazena em respota case "$resposta" in #Testa a varivel resposta s* | S*) echo "A resposta foi sim" ;; #Imprime se a mensagem iniciar em s ou S n* | N*) echo "A resposta foi nao" ;; #Imprime se a mensagem iniciar em n ou N *) echo "A resposta foi talvez" ;; #Imprime para outros casos esac #Fim do case

5) Salve o script abaixo chamado meu_script_5 e execute o arquivo do shell: clear # Imprime o cabealho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo "Aline Norberta Brito" echo -e "Josiane Fernandes Alves\n\n" # nome do programa: meu_script_5.sh # programadores: Aline Norberta de Brito # Josiane Fernandes Alves # data: 27/08/2012 # descricao: Mostra a sintaxe do while com o uso de variveis # entrada(s): nenhuma # saida(s): exibe na tela valor de i echo "Teste do while" i=10 #Atribui o valor 10 a varivel i while [ $i -ne 0 ] #Enquanto a varivel i no for igual a 0 do echo $i #Imprime i i=$[i-1] #Decrementa a varivel i de 1 unidade. done #Fim do while ________________________________________________________________________________ Exerccio Escreva um script que seja um menu de opes de comandos, conforme tela abaixo. A cada opo escolhida, o comando correspondente deve ser executado e a tela fica parada esperando um enter (para se poder ver o resultado do comando). Aps digitado o enter, a tela limpa e o menu volta a aparecer. Tela do script: Escolha uma opo: [1] DATE [2] WHO [3] PS -AUX [4] LS [5] LS LA [6] PWD [7] SAI Obs: ao sair do script, imprima Saindo do script ... . Obs.: Script em anexo. (opcoes.sh) ________________________________________________________________________________

g) Exerccios Fazer programas em shell script, para: g1) Ler pelo teclado uma seqncia de nmeros inteiros positivos de tamanho indeterminado (fornecidos pelo usurio via teclado) e imprima a soma destes nmeros (SOMA), a mdia (MEDIA) e o tamanho da seqncia (N) . Para indicar o fim da seqncia use como FLAG (terminador) um nmero negativo (p. ex. 1). Obs.: Script em anexo. (g1.sh) g2) Pesquisar em um inte rvalo fechado de nmeros inteiros [MIN ... MAX], ou seja, delimitado pelos valores inteiros MIN e MAX recebidos obrigatoriamente atravs parmetros na linha de comando, e imprimir os nmeros que so simultaneamente mpar, mltiplo de 7 e no mltiplo de 5. Exemplo (com: MIN = 2 e MAX = 10): ENTRADA bash intervalo.sh 2 10 e ./ intervalo.sh 2 10 SADA: 7 Obs.: Script em anexo. (g2.sh) g3) Implementar uma calculadora das quatro operaes aritmticas inteiras bsicas (+, -, x e /). Os operandos e o operador so recebidos obrigatoriamente atravs parmetros na linha de comando. Exemplo: ENTRADA:bash calcshell.sh 2 x 3 e ./calcshell.exe 2 x 3 SADA: 2 x 3 = 6 Obs.: Script em anexo. (g3.sh) g4) Determinar aproximadamente e mostrar o nmero de arquivos e o nme ro de diretrios de um diretrio no sistema Linux. O nome do diretrio deve ser passado obrigatoriamente como parmetro na linha de comando. Use somente comandos disponveis no Linux. No pode ser feito nenhum programa em C ou em outra linguagem. Obs.: Script em anexo. (g4.sh) ________________________________________________________________________________ Exerccio3.1 Comandos do PowerShell Shell Verificar, fazer uma breve descrio e apresentar exemplos, usando os sistemas de ajuda Power Shell para determinar o tipo (cmdlets, funces, filtros, scripts, aliases e executveis Win32 nativos) os comandos do Power Shell listados a seguir. Caso existam, indique quais so os comandos do correspondentes do Linux. get-help , ipconfig, shutdown, get-process, set, move, ps, write-output, get-service, getmember, Read-Host, write-output, about_Aliases, echo, about_Break, dir, copy, CheckpointComputer, cls, if, Add-History, while, Compare-Object, type, alias, break, cd, exit, WriteDebug , del, Write-Error, cpi, debug, Debug-Process, chdir, Get-Command, Get-ChildItem, dir, Get-Content, gcm,clear, Copy-Item, mv, rd, ren, Stop-Process, Set-Variable e edit.

get-help Descrio: Exibe informaes sobre comandos e conceitos do Windows PowerShell. Exemplos:
C:\PS>get-help get-alias C:\PS>help get-alias C:\PS>get-alias -?

ipconfig Descrio: um comando do sistema operacional Microsoft Windows capaz de dar informaes sobre o IP da rede local, que possvel ser executado no Windows PowerShell. Sintaxe: ipconfig [\parmetros] Exemplos:
C:\PS> ipconfig [/allcompartments] [<opes>] Windows IP Configuration Ethernet adapter Local Area Connection: Connection-specific DNS Suffix . : domain.corp.fabricam.com IP Address. . . . . . . . . . . . : 142.20.152.115 Subnet Mask . . . . . . . . . . . : 255.255.252.0 Default Gateway . . . . . . . . . : 172.30.180.1

Shutdown Descrio: : um comando do sistema operacional Microsoft Windows capaz de desligar ou reiniciar um computador imediatamente ou com um tempo programado, dependendo das opes, que possvel ser executado no Windows PowerShell. Exemplos:
C:\PS> shutdown s t 10800 (Programa o computador para desligar aps 3 horas (10800 segundos = 180 minutos = 3 horas)).

get-process Descrio: Obtm os processos em execuo no computador local ou em um computador remoto. Exemplos:
C:\PS>get-process sql* -module

set Descrio: (set-variable)Define o valor de uma varivel. Cria a varivel se no houver uma com o nome solicitado. Exemplos:
C:\PS>set-variable -name desc -value "A description" C:\PS>get-variable -name desc ( Esses comandos definem o valor da varivel "desc" para "uma descrio" e, em seguida, obtm o valor da varivel.)

move Descrio: (Move-Item) Move um item de um local para outro. Exemplos:


C:\PS>move-item -path C:\test.txt -destination E:\Temp\tst.txt ( Esse comando move o arquivo Test.txt da unidade C: para o diretrio E:\Temp e o renomeia de "test.txt" para "tst.txt".)

ps Descrio: (Get-process)Obtm os processos em execuo no computador local ou em um computador remoto. ( ps no linux) Exemplos:
C:\PS>Get-Process (Esse comando obtm uma lista de todos os processos em execuo no computador local. Para obter uma definio de cada coluna, consulte a seo Observaes adicionais no tpico da Ajuda para Get-Help.)

write-output Descrio: Envia os objetos especificados para o prximo comando no pipeline. Se o comando for o ltimo comando no pipeline, os objetos sero exibidos no console. Exemplos:
C:\PS>$p = get-process C:\PS> write-output $p C:\PS> $p

get-service Descrio: Obtm os servios em um computador local ou remoto. Exemplos:


C:\PS>get-service (Esse comando recupera todos os servios do sistema. Ele se comporta como se voc tivesse digitado "getservice *". A exibio padro mostra o status, o nome e o nome de exibio de cada servio.)

get-member Descrio: Obtm as propriedades e os mtodos de objetos. Exemplos:


C:\PS>get-service | get-member -view extended

TypeName: System.ServiceProcess.ServiceController Name MemberType Definition ---- ---------- ---------Name AliasProperty Name = ServiceName (Este comando obtm as propriedades e os mtodos de objetos de servio que foram estendidos atravs do arquivo Types.ps1xml ou por meio do cmdlet Add-Member. O comando Get-Member usa o parmetro View para obter s os membros estendidos dos objetos de servio. Neste caso, o membro estendido a propriedade Name, que uma propriedade de alias da propriedade ServiceName.)

Read-Host Descrio: L uma linha da entrada do console. Exemplos:


C:\PS>$pwd_secure_string = read-host "Enter a Password:" -assecurestring (Este comando apresenta a cadeia de caracteres "Enter a Password:" como um prompt. Como est sendo inserido um valor, asteriscos (*) aparecem no console no lugar da entrada. Quando a tecla Enter for pressionada, o valor ser armazenado como um objeto SecureString na varivel $pwd_secure_string.)

write-output Descrio: Envia os objetos especificados para o prximo comando no pipeline. Se o comando for o ltimo comando no pipeline, os objetos sero exibidos no console. Exemplos:
C:\PS>$p = get-process c:\PS> write-output $p c:\PS> $p

about_Aliases Descrio: Descreve como usar nomes alternativos para cmdlets e comandos no Windows PowerShell. Exemplos:
new-alias -name gh -value get-help

echo Descrio: (Write-Output no PowerShell) Envia os objetos especificados para o prximo comando no pipeline. Se o comando for o ltimo comando no pipeline, os objetos sero exibidos no console. Exemplos:
C:\PS>write-output "test output" | get-member ( Esse comando canaliza a cadeia de caracteres "test output" para o cmdlet Get-Member, que exibe os membros da classe String, demonstrando que a cadeia de caracteres passou pelo pipeline.)

about_Break Descrio: Descreve uma instruo que voc pode usar para fechar imediatamente instrues Foreach, For, While, Do ou Switch. Exemplos:
for($i=1; $i -le 10; $i++) { Write-Host $i break } (Instruo Break para sair de uma instruo For)

dir Descrio: (Get-ChildItem no PowerShell) Obtm os itens e os itens filhos em um ou mais locais especificados. Exemplos:
C:\PS>get-childitem

( Esse comando obtm os itens filhos do local atual. Caso o local seja um diretrio do sistema de arquivos, ele obter os arquivos e os subdiretrios do diretrio atual. Se o item no tiver itens filhos, esse comando retornar ao prompt de comando sem exibir nada. A exibio padro lista o modo (atributos), a hora da ltima gravao, o tamanho do arquivo (comprimento) e o nome do arquivo. Os valores vlidos para o modo so d (diretrio), a (arquivo morto), r (somente leitura), h (oculto) e s (sistema).)

copy Descrio: (Copy-Item no PowerShell) Copia um item de um local para outro dentro de um namespace. Exemplos:
C:\PS>copy-item C:\Wabash\Logfiles\mar1604.log.txt -destination C:\Presentation (Esse comando copiar o arquivo mar1604.log.txt para o diretrio C:\Presentation. Ele no exclui o arquivo original.)

Checkpoint-Computer Descrio: Cria um ponto de restaurao do sistema no computador local. Exemplos:


C:\PS>checkpoint-computer -description "Install MyApp" ( Esse comando cria um ponto de restaurao do sistema chamado "Install MyApp". Ele usa o tipo de ponto de restaurao padro APPLICATION_INSTALL.)

cls Descrio: (Clear-host no PowerShell) Limpa dados visualizados na linha de comando. Exemplos:
C:\PS>cls C:\PS>clear C:\PS>Clear-Host

if Descrio: (about_If) Descreve um comando de linguagem que voc pode usar para executar listas de instrues baseadas nos resultados de um ou mais testes condicionais. Exemplos:
if ($a -gt 2) { Write-Host "O valor de $a maior que 2." }

Add-History Descrio: Anexa entradas ao histrico da sesso. Exemplos:


C:\PS>get-history -id 5 -count 5 | add-history

( Esse comando adiciona os primeiros cinco comandos do histrico ao fim da lista de histricos. Ele usa o cmdlet Get-History para obter os cinco comandos que terminam no comando 5. O operador de pipeline (|) passa os comandos para o cmdlet Add-History, o qual os anexa ao histrico atual. O comando Add-History no inclui nenhum parmetro, mas o Windows PowerShell associa os objetos passados pelo pipeline ao parmetro InputObject.)

while Descrio: (about_While)Descreve uma instruo de linguagem que voc pode usar para executar um bloco de comandos com base nos resultados de um teste condicional. Exemplos:
while($val -ne 3) { $val++ Write-Host $val }

Compare-Object Descrio: Compara os dois conjuntos de objetos. Exemplos:


C:\PS>compare-object -referenceobject $(get-content C:\test\testfile1.txt) -differenceobject $(get-content C:\test\testfile2.txt) (Esse comando compara o contedo de dois arquivos de texto. Ele exibe somente as linhas que aparecem em um ou outro arquivo, mas no em ambos os arquivos.)

type Descrio: (Get-Content) Obtm o contedo do item no local especificado. Exemplos:


C:\PS>get-content -Path C:\Chapters\chapter1.txt (Esse comando exibe o contedo do arquivo Chapter1.txt no console. Ele usa o parmetro Path para especificar o nome do item. Na verdade, Get-Content transmite o contedo pelo pipeline, mas como no h outros elementos de pipeline, o contedo formatado e exibido no console.)

alias Descrio: Fornece acesso aos aliases do Windows PowerShell e aos valores que eles representam. Exemplos:
get-item -path alias: (Este comando obtm uma lista de todos os aliases na sesso atual. Voc pode utilizar o comando em qualquer unidade do Windows PowerShell.)

break Descrio: Descreve uma instruo que voc pode usar para fechar imediatamente instrues Foreach, For, While, Do ou Switch. Exemplos:

$i=0 $varB = 10,20,30,40 foreach ($val in $varB) { $i++ if ($val -eq 30) { break } } Write-Host "30 foi encontrado na posio de matriz $i"

cd Descrio: (Get-Location) Obtm informaes sobre o local de trabalho atual. Exemplos:


C:\PS>get-location Path ---C:\WINDOWS (Esse comando exibe seu local na unidade atual do Windows PowerShell. Por exemplo, se voc estiver no diretrio do Windows da unidade C:, ele exibe o caminho at esse diretrio.)

exit Descrio: (Exit-PSSession) Encerra uma sesso interativa com um computador remoto. Exemplos:
C:\PS>Enter-PSSession -computername Server01 Server01\PS> Exit-PSSession C:\PS> (Esses comandos iniciam e param uma sesso interativa com o computador remoto Server01.)

Write-Debug Descrio: Grava uma mensagem de depurao no console. Exemplos:


C:\PS>Write-Debug "Cannot open file." (Esse comando grava uma mensagem de depurao. Como o valor de $DebugPreference "SilentlyContinue", a mensagem no exibida no console.)

del Descrio: (Remove-Item) Exclui os itens especificados. Exemplos:


C:\PS>remove-item C:\Test\*.* (Esse comando exclui todos os arquivos do diretrio C:\Test com nomes que incluem um ponto (.). Como o comando especifica um ponto, ele no exclui diretrios ou arquivos sem uma extenso de nome de arquivo.)

Write-Error Descrio: Grava um objeto para o fluxo de erros. Exemplos:


C:\PS>get-childitem | foreach-object { if ($_.gettype().tostring() -eq "Microsoft.Win32.RegistryKey") {writeerror "Out-of-band object" -errorID B1 -targetobject $_ } else {$_ } } (Esse comando grava um erro quando o cmdlet Get-ChildItem retorna um objeto Microsoft.Win32.RegistryKey, como os objetos nas unidades HKLM: ou HKCU do provedor Registry do Windows PowerShell.)

cpi Descrio: (Copy-Item) Copia um item de um local para outro dentro de um namespace. Exemplos:
C:\PS>copy-item C:\Wabash\Logfiles\mar1604.log.txt -destination C:\Presentation (Esse comando copiar o arquivo mar1604.log.txt para o diretrio C:\Presentation. Ele no exclui o arquivo original.)

debug Descrio: (Set-PSDebug )Ativa e desativa os recursos de depurao de script, define o nvel de rastreamento e alterna o modo estrito. Exemplos:
C:\PS>set-psdebug -trace 2; foreach ($i in 1..3) {$i} DEBUG: DEBUG: 1 DEBUG: 2 DEBUG: 3 1+ Set-PsDebug -trace 2; foreach ($i in 1..3) {$i} 1+ Set-PsDebug -trace 2; foreach ($i in 1..3) {$i} 1+ Set-PsDebug -trace 2; foreach ($i in 1..3) {$i} 1+ Set-PsDebug -trace 2; foreach ($i in 1..3) {$i}

(Esse comando define o nvel de rastreamento como 2 e, em seguida, executa um script que exibe os nmeros 1, 2 e 3.)

Debug-Process Descrio: Depura um ou mais processos em execuo no computador local. Exemplos:


C:\PS>debug-process -name sql* ( Esse comando anexa um depurador a todos os processos cujos nomes comeam com "sql".)

chdir Descrio: ( Set-Location) Define o local de trabalho atual como um local especificado. Exemplos:
C:\PS>set-location HKLM: (Isso definir o local atual para o especificado; nesse caso, o provedor HKLM.)

Get-Command Descrio: Obtm informaes bsicas sobre os cmdlets e outros elementos de comandos do Windows PowerShell. Exemplos:
C:\PS>get-command ( Esse comando obtm informaes sobre todos os cmdlets e funes do Windows PowerShell. A exibio padro lista o tipo de comando ("Cmdlet" ou "Function" ou "Filter"), o nome do cmdlet ou a funo e a sintaxe ou definio de funo.)

Get-ChildItem Descrio: Obtm os itens e os itens filhos em um ou mais locais especificados. Exemplos: C:\PS>get-childitem (Esse comando obtm os itens filhos do local atual. Caso o local seja um diretrio do sistema de arquivos, ele obter os arquivos e os subdiretrios do diretrio atual. Se o item no tiver itens filhos, esse comando retornar ao prompt de comando sem exibir nada. A exibio padro lista o modo (atributos), a hora da ltima gravao, o tamanho do arquivo (comprimento) e o nome do arquivo. Os valores vlidos para o modo so d (diretrio), a (arquivo morto), r (somente leitura), h (oculto) e s (sistema).) Get-Content Descrio: Obtm o contedo do item no local especificado. Exemplos:
C:\PS>get-content -Path C:\Chapters\chapter1.txt (Esse comando exibe o contedo do arquivo Chapter1.txt no console. Ele usa o parmetro Path para especificar o nome do item. Na verdade, Get-Content transmite o contedo pelo pipeline, mas como no h outros elementos de pipeline, o contedo formatado e exibido no console.)

gcm Descrio: (Get-Command)Obtm informaes bsicas sobre os cmdlets e outros elementos de comandos do Windows PowerShell. Exemplos:
C:\PS>get-command (Esse comando obtm informaes sobre todos os cmdlets e funes do Windows PowerShell. A exibio padro lista o tipo de comando ("Cmdlet" ou "Function" ou "Filter"), o nome do cmdlet ou a funo e a sintaxe ou definio de funo.)

clear Descrio: (Clear-host no PowerShell) Limpa dados visualizados na linha de comando. Exemplos:
C:\PS>cls

C:\PS>clear C:\PS>Clear-Host

Copy-Item Descrio: Copia um item de um local para outro dentro de um namespace. Exemplos:
C:\PS>copy-item C:\Wabash\Logfiles\mar1604.log.txt -destination C:\Presentation ( Esse comando copiar o arquivo mar1604.log.txt para o diretrio C:\Presentation. Ele no exclui o arquivo original.)

mv (Move-Item) Move um item de um local para outro. Exemplos:


C:\PS>move-item -path C:\test.txt -destination E:\Temp\tst.txt ( Esse comando move o arquivo Test.txt da unidade C: para o diretrio E:\Temp e o renomeia de "test.txt" para "tst.txt".)

rd Descrio: (Remove-Item) Exclui os itens especificados. Exemplos:


C:\PS>remove-item C:\Test\*.* (Esse comando exclui todos os arquivos do diretrio C:\Test com nomes que incluem um ponto (.). Como o comando especifica um ponto, ele no exclui diretrios ou arquivos sem uma extenso de nome de arquivo.)

ren Descrio: (Rename-Item) Renomeia um item em um namespace de provedor do Windows PowerShell. Exemplos:
C:\PS>rename-item -path c:\logfiles\daily_file.txt -newname monday_file.txt ( Esse comando renomeia o arquivo daily_file.txt para monday_file.txt.)

Stop-Process Descrio: Para um ou mais processos em execuo. Exemplos:


C:\PS>stop-process -name notepad ( Esse comando para todas as instncias do processo notepad.exe (do Bloco de notas) no computador. (Cada instncia do Bloco de Notas executada em seu prprio processo.) Ele usa o parmetro Name para especificar os processos, que tm o mesmo nome. Se voc fosse usar o parmetro ID para parar o mesmo processo, deveria listar as IDs dos processos de cada instncia do Bloco de Notas.)

Set-Variable Descrio: Define o valor de uma varivel. Cria a varivel se no houver uma com o nome solicitado. Exemplos:
C:\PS>set-variable -name desc -value "A description" C:\PS>get-variable -name desc

(Esses comandos definem o valor da varivel "desc" para "uma descrio" e, em seguida, obtm o valor da varivel.)

edit Descrio: Edio de comandos no prompt de comando do Windows. Exemplos:


C:\PS>edit arquivo.ps1

_________________________________________________________ Exerccio 4.1 Descreva (justificando) o que acontece com as sequncias de comandos abaixo: b1) Sequncia 1 $p = get-process #Atribui a varivel $p os processos executados no momento. write-output $p #Escreve o contedo da varivel $p $p #Escreve o contedo da varivel $p b2) Sequncia 2 clear # Imprime o cabeaalho com nome dos integrantes do grupo. echo "Eng. Computao - Lab01 - SO" echo "Alunas: " echo " Aline Norberta Brito" echo " Josiane Fernandes Alves" # Indentifica o processo de executao do notepad # dentre os processos em excuo. $nid = (get-process notepad).id # para a excuo do notepad. stop-process -id $nid # Executa o comando wait-process, ou seja, suprime o prompt # de comando at que os processos sejam interrompidos. wait-process -id $nid ________________________________________________________________________________ Exerccio 4.2 Fazer programas shell script no PowerShell, para: 1) Ler pelo teclado uma seqncia de nmeros inteiros positivos de tamanho indeterminado (fornecidos pelo usurio via teclado) e imprima a soma destes nmeros (SOMA), a mdia (MEDIA) e o tamanho da seqncia (N) . Para indicar o fim da seqncia use como FLAG (terminador) um nmero negativo (p. ex. 1).

Obs.: Script em anexo. (4_2_1.ps1) 2) Pesquisar em um intervalo fechado de nmeros inteiros [MIN ... MAX], , ou seja, delimitado pelos valores inteiros MIN e MAX recebidos obrigatoriamente atravs parmetros na linha de comando, e imprimir os nmeros que so simultaneamente mpar, mltiplo de 7 e no mltiplo de 5. Exemplo (com: MIN = 2 e MAX = 10): ENTRADA: ./intervalo.ps1 2 10 e ./ intervalo.sh 2 10 SADA: 7 Obs.: Script em anexo. (4_2_2.ps1) 3) Implementar uma calculadora das quatro operaes aritmticas inteiras bsicas (+, -, x e /). Os operandos e o operador so recebidos obrigatoriamente atravs parmetros na linha de comando. Exemplo: ENTRADA: ./calcshell.p1 2 x 3 e ./calcshell.exe 2 x 3 SADA: 2 x 3 = 6 Obs.: Script em anexo. (4_2_3.ps1) 4) Determinar aproximadamente e mostrar o nmero de arquivos e o nme ro de diretrios de um diretrio no sistema Windows. O nome do diretrio deve ser passado obrigatoriamente como parmetro na linha de comando. Use somente comandos disponveis no PowerShell. No pode ser feito nenhum programa em C ou em outra linguagem. Obs.: Script em anexo. (4_2_4.ps1)

Você também pode gostar