Notas de Aula - MAC 211 - Laboratório de Programação
Aula 11 - 5/4/2001
Interpretador de Comandos (Shell)
-
o que e'?
-
pode aumentar muito a produtividade se o dominarmos bem
-
mais comuns:
-
no windows: MS-DOS prompt ou "aviso do MS-DOS"
-
no UNIX e derivados: csh, ksh, tcsh, bash (tambem disponivel
para windows)
-
Manual detalhado
do BASH com texto introdutorio sobre shell scripting
-
Um bom Tutorial
muito mais simples e facil de entender
-
Shell e' utilizado para executar programas: ls, pwd, mkdir, cat, top,
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 (da permissao de execucao e leitura a todos)
ou
-
chmod +x scriptname
-
chmod u+x scriptname (da' permissao so' para o dono do arquivo)
-
O script pode ser executado com o comando ./scriptname
-
Variaveis do ambiente (environment variables), comando env
-
PATH
-
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:
-
\ escape
-
" para juntar strigs com espaco no meio
-
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)
-
Página de MAC211
Página do Fabio
Página do DCC