Notas de Aula - MAC 211 - Laboratório de Programação
Aula anterior (aula 10)
Aula 11 - 9/4/2002
Interpretador de Comandos (Shell)
-
o que é?
-
pode aumentar muito a produtividade se o dominarmos bem
-
mais comuns:
-
no windows: MS-DOS prompt, command ou "aviso do MS-DOS"
-
no UNIX e derivados: csh, ksh, tcsh, bash (tambem disponível
para windows)
-
Manual detalhado
do BASH com texto introdutório sobre shell scripting
-
Um bom Tutorial
muito mais simples e facil de entender
-
Shell e' utilizado para executar programas: ls, pwd, mkdir, cat,
echo, chmod
-
Utilitarios muito usados: find, grep, chmod, more, less
-
Arquivos no UNIX tem varios modos de acesso que podem ser modificados com
comando chmod
-
Mas podemos tambem criar shell scripts contendo varios comandos
-
chmod 755 scriptname (dá permissao de execucao e leitura a todos)
ou
-
chmod +x scriptname
-
chmod u+x scriptname (dá permissao só para o dono do arquivo)
-
O script pode ser executado com o comando ./scriptname
-
A primeira linha do script pode conter o nome do interpretador do script, por
exemplo
-
Variaveis do ambiente (environment variables), comando env
-
PATH
-
CDPATH
-
PWD
-
SHELL
-
EDITOR
-
HOSTNAME
-
Para atribuir um valor: export VARNAME=VALUE
-
Para ver o valor: echo $VARNAME
-
Comandos atraves de combinacoes de teclas:
-
Ctrl-C cancela a execucao do programa corrente
-
Ctrl-D gera codigo de final de arquivo, tambem fim de
sessao de login
-
flechas verticais: percorre historia de comandos
-
flechas horizontais: posicionamento na linha corrente
-
TAB: completa ate' onde da' sem ambiguidade
-
TAB TAB: mostra lista das opcoes para completar (se houver
varias)
-
Caracteres especiais:
-
" para juntar strigs com espaco no meio
-
\ escape
-
Operadores
-
; para executar varios comandos na mesma linha
-
& para executar programas em background (retorna controle ao
shell ao inves de esperar pelo termino do programa)
-
Programacao de scripts:
-
if [ -e meu_arquivo -a -d meu_diretorio ] ; then
mv meu_arquivo meu_diretorio
else
echo "arquivo ou diretorio
nao existe"
fi
-
for a in txt doc c cpp java ; do
rm meu_arquivo.$a
done
-
while [ -d meu_dir ] ; do
date >> arquivo_log
ls -la meu_dir >> arquivo_log
echo -- SEPARADOR --
>> arquivo_log
sleep 60
done
-
Pode-se definir funcoes e muitas outras coisas.
-
Outros programas bem uteis em ambientes UNIX:
-
ps
-
kill (versao -1, boazinha, versao -9, radical)
- top (mostra lista ordenada de processos, uso de CPU, memória, etc).
Próxima aula (aula 12)
Página de MAC211
Página do Fabio
Página do DCC