Escolar Documentos
Profissional Documentos
Cultura Documentos
Contedo
O que shell
Condicionais e laos
Scripts
Informaes do Sistema
Dilogos
Primeiras Perguntas:
- O que shell ?
- Onde se encontra o shell ?
Apresentao ao Shell
Acesso ao terminal
CTRL+ALT+F[1-6]
CTRL+ALT+F[7-..]
Executem o comando:
> ps a
Verifiquem o getty
5585 tty1
Ss+
Ss+
...
5590 tty6
Atribuies de variveis
Manipulao simples de
variveis
Utilizao simples:
> echo $variavel $nome $etc
Utilizao protegida:
> echo ${variavel}
Quando necessrio:
> echo $nome_
> echo ${nome}_
Outras expanses de
variveis
${var:-texto}
${var:=texto}
${var:?texto}
${var:+texto}
Expanses de String
${#var}
${!texto*}
${var:N}
${var:N:tam}
Expanses de String
${var#texto}
${var##texto}
${var%texto}
${var%%texto}
Expanses de String
${var/texto/novo}
${var//texto/novo}
${var/#texto/novo}
${var/%texto/novo}
bash --version
NOME=jacson
echo ${nome^}
echo ${nome^^}
NOME=${NOME^^}
echo ${nome,}
echo ${nome,,}
Linha de comandos
ex. comando:
> echo
ex. argumentos:
> echo frase
ex. opes:
> echo -e \tfrase
man
info
O que ? Pergunte-o:
> info info
Condicionais e laos
if CONDIO
then
do
COMANDOS
else
COMANDOS
comandos
done
for ((exp1;exp2;exp3))
fi
while CONDIO
case $VAR in
txt1) comandos;;
txt2) comandos;;
esac
do
comandos
done
Obs:
Comandos bsicos
> cd modificar pastas
> rm apagar arquivos
> ls listar os arquivos
> pwd mostrar o diretrio atual
> whoami saber quem voc
> mkdir criar diretrios
> rmdir apagar diretrios vazios
> read leitura de dados
> echo escrita na tela
cd
cd .. sobe um nvel
PWD=/home/jeiks
pwd
cd .
rm
Como remover?
rm
rm -f
rm -i
rm -r
remove o arquivo
rm -v
mkdir
mkdir pasta
cria a pasta
mkdir -p pasta/a/b/c
mkdir -v pasta
rmdir
rmdir pasta
rmdir -p a/b/c/d
read
Como ler?
read -n N VAR
read -s VAR
read -t N VAR
echo
Praticando...
test
[]
Testes:
> if [ -e arquivo ];then
>
> fi
praticando...
grep
grep
Mais opes:
> grep --color palavra arquivo
# ou:
praticando...
find
Sintaxe
find <caminho> <expresso> <ao>
Caminho:
Expresso:
Ao:
find
d: diretrio
p: named pipe
f: arquivo comum
l: link simblico
-a condicional E
-o condicional OU
find
-exec <cmd> {} \;
\; encerra o comando
-ok <cmd> {} \;
find
-printf <formato>
Campos:
%f : nome do arquivo
Praticando...
xargs
xargs
ls -l | \
xargs -I{} bash -c \
'for i in {};do echo $i;done'
xargs
Mais opes:
-nNum
Manda o mximo de parmetros recebidos, at o mximo
de Num para o comando a ser executado
Lnum
Manda o mximo de linhas recebidas, at o mximo de
Num para o comando a ser executado
-p
Mostra a linha de comando montada e pergunta se
deseja executar
-t
Mostra a linha de comando montada antes de executar
cat
wc
-l : conta linhas
-w : conta palavras
-c : conta caracteres
sort
-n : classificao numrica
Redirecionamento
Redirecionamento de sadas
comando 2>&1
Redirecionando mensagens
Confirmando:
echo oi >&2
echo oi >&2 | grep -v oi
/dev
/stdin
entrada padro
Redirecionamento de
entrada
Teste de texto
rotulo-teste
echo $nome
praticando...
Mais manipulao
head
-l N | -n N | --lines N
-c N
tail
-l N | -n N | --lines N
-c N
-f ou -F
Mais manipulao
cut
-d : delimitador de campos
uniq
praticando...
Date e cal
date
cal
Exibe o calendrio
cal <mes>
cal <ano>
Trocando as letras ;)
criptografia...
$ echo "Jeiks" > arquivo
$ tr 'aeiou' 'mnpyt' < arquivo \
> arquivo-criptografado
$ cat arquivo-criptografado
Jnpks
Encontrando arquivos
Outros parmetros:
Controle de sistema e
processos
Processos em execuo:
> ps
parmetros:
f a u x
Exerccio:
/proc
Subshells
Utilizao:
usuario=`whoami`
# ou
usuario=$(whoami)
Informaes da memria:
> cat /proc/meminfo
Mdulos do sistema:
> cat /proc/modules
Parmetros de inicializao:
> cat /proc/cmdline
Informaes de rede:
> cat /proc/net/dev
Automatizando processos
Primeiro Script
Adicione as linhas:
#!/bin/bash
# meu primeiro comentrio
echo "Meu primeiro arquivo"
chmod +x teste.sh
Ops... permisso?
Como assim?
Execute o comando: ls -l
Nesta lista de arquivos, a primeira
coluna indica as permisses:
d diretrio
- arquivo normal
l link
p pipe
E funes, existem?
}
ou
teste() {
echo teste
E como eu recebo os
parmetros?
Atravs dos parmetros posicionais:
$0
$1
$#
$*
$@
usurios e homes
Informaes do CPU
Informaes do CPU:
function cpu_info {
modelo=$(cat /proc/cpuinfo
| \
grep -i "model name" | cut -d: -f2)
freq=$(cat /proc/cpuinfo
grep -i "cpu MHz"
| \
| cut -d: -f2)
cache=$(cat /proc/cpuinfo | \
grep -i "cache size" | cut -d: -f2)
echo -e "Voc tem um computador $modelo
com $freq Mhz e um cache de $cache"
}
Informaes de Rede
Interfaces de redes:
function interfaces {
inter=$(cat /proc/net/dev | grep ':' | cut -d: -f1)
echo Suas interfaces de rede so:
for i in $inter;do
echo [$i]
done
}
Configuraes bsicas
de rede
Obtendo ip:
/sbin/ifconfig
Obtendo rota:
/sbin/route
Obtendo DNS:
cat /etc/resolv.conf
Filtrando
Awk e eval
Continuando a anlise
| \
Melhorando o sed e
definindo as variveis
| \
s/Bcast:/BCAST=/
s/Masc:/MASC=/'
Definindo as variveis:
eval $(comando anterior)
Obtendo o DNS
DNS=$(grep -e '^nameserver'
/etc/resolv.conf
\
| \
ou:
Obtendo os resultados...
cat << EOF
INTERFACE PRINCIPAL: $INTER
IP: $IP
BroadCast: $BCAST
Mscara: $MASC
DNS: $DNS
ROTA: $ROTA
EOF
Processo de inicializao
GRUB menu.lst
Chamada do init
kill novidade?
vamos aprender como funciona...
init
/etc/rcS.d/
/etc/rc[1-6].d/
Voltando ao init
Outras coisinhas
interessantes...
Trap
2 SIGINT
Desfazendo: trap 2
Teste interessante:
trap "echo Mudou o tamanho da janela" 28
Outras coisinhas
interessantes...
Outras coisinhas
interessantes...
Comandos in line:
> test -f arquivo
&& \
Dilogos
Kdialog
Gdialog
Zenity
Frontend - GDialog
res=$(
0
1
2
Referncias Interessantes
Pgina do Aurlio:
<http://aurelio.net>
Pgina do Thobias:
<http://thobias.org>