Escolar Documentos
Profissional Documentos
Cultura Documentos
1.
2.
3.
4.
5.
2. Resoluo de Redirecionamentos
> e >>: Redireciona sada padro
para um arquivo
2> e 2>>: Redireciona sada de erro
para um arquivo
|: Redireciona a sada padro para a
entrada de outro programa
tee: Redireciona o pipe (|) para a
sada padro
< e <<: Redireciona a entrada
padro
3. Substituio de variveis
substitui todos os $Variavel pelo contedo
da varivel.
ex:
echo $PATH
echo \$PATH
echo '$PATH'
echo $PATH
1. cat,more,less
Serve para mostrar o contedo de arquivos
cat: Joga todo o conteudo do arquivo para a
sada padro
more: Joga o conteudo do arquivo at preencher
1 tela, e espera a tecla enter para ir para a
prxima linha. Possui recursos de busca e outros
estilo vi.
less: O mesmo do more s que pode voltar...
2. wc
Mostra o nmero de linhas, palavras e bytes de
um arquivo.
-l: mostra apenas o nmero de linhas
-c: mostra apenas o nmero de bytes
-m: mostra apenas o nmero de letra
-w: mostra apenas o nmero de palavras
3. sort
Mostra o contedo de um arquivo em ordem
crescente ou alfabtica
4. head e tail
Mostra as primeiras ou ultimas linhas de um
arquivo
5. find
Procura arquivos por caractersticas
find caminho expresso ao
expresses:
-name nome-do-arquivo
-user nome-do-usurio
-groupnome-do-grupo
-type tipo-do-arquivo
(d: diretrio, f: arquivo, l: link, p: pipe)
5. find
Procura arquivos por caractersticas
find caminho expresso ao
aes:
-print (ao padro)
-exec comando {} \;
-okcomando {} \;
6. grep
Mostra as linhas dos arquivos que casam com
uma expresso regular
-i ignora maisculas e minsculas
-v inverte o resultado
-R procura recursivamente
7. sed
Editor de arquivos completo
Muito usado para substituir cadeias de
caracteres
ex:
sed 's/original/final/g' arquivo
Troca todas as cadeias de caracteres iguais a
original por final
8. cut e paste
cut: separa o arquivos em partes
paste: junta arquivos
-d: qual o caractere que separa as partes
-f: qual das partes deve ser mostrada
9. tr
substitui caracteres
[:upper:] letras em maiusculo
[:lower:] letras em minusculo
[:digit:] digitos
10. dialog
Mostra uma janela, com mensagens, entradas
e outros
dialog tipo texto X Y
onde tipo pode ser: msgbox, inputbox e outros
X e Y o tamanho da janela
tem tambm o Xdialog (100% compatvel e
grfico), gdialog (usa gtk) e kdialog (usa qt, e
possui diversos recursos diferentes)
$ chmod +x hello.sh
$./hello.sh
2. Cabealho
O cabealho serve para escolher o interpretador de
comandos que ser utilizado. Tem que estar na
primeira linha e ser iniciado com #!
1
2
#!/bin/sh
echo Hello World
3. Comentrios
Comentrio toda texto contido no script (ou cdigo
fonte) que no faz parte do cdigo.
Os comentrios em shell so iniciados com #
1
2
3
4
#!/bin/sh
#Isto um comentrio :)
echo Hello World
4. Condicional
A condicional serve para ver se uma sentena verdadeira ou falsa
Em shell, a condicional o if, e retorna verdadeiro se o comando terminar com
sucesso, e falso se der erro no comando
1
2
3
4
5
6
7
8
#!/bin/sh
if ls
then
echo o comando deu certo
else
echo o comando deu errado
fi
#!/bin/sh
#Comparao de textos
if [ isso = aquilo ]
then
echo so iguais
else
echo so diferentes
fi
#O arquivo existe?
if [ -f arquivo ]
then
echo arquivo existe
else
echo arquivo no existe
fi
#o diretrio existe?
if [ -d diretorio ]
then
echo diretrio existe
else
echo diretrio no existe
fi
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#negando o if
if ! [ isso = aquilo ]
then
echo so diferentes
fi
#Conjuno E
if [ isso = isso ] && [ -f arquivo ]
then
echo so iguais E arquivo existe
fi
#conjuno OU
if [ isso = isso ] || [ -f arquivo ]
then
echo so iguais OU arquivo existe
fi
#comparador matemtico
if (( 5 < 10 ))
then
echo 5 menor que 10
fi
#!/bin/sh
echo Qual o seu nome?
read NOME
echo Ol $NOME\! Tenha um bom-dia\!
Desafio!
Faa um script, que mostre o contedo do arquivo informado pelo usurio!
Ateno: se o arquivo no existir mostre a seguinte mensagem:
Que pena, o arquivo (nome do arquivo) infelizmente no foi encontrado...
Soluo simples
1
2
3
4
5
6
7
8
9
10
11
#!/bin/sh
echo Informe o nome do arquivo:
read ARQUIVO
if [ -f $ARQUIVO ]
then
cat $ARQUIVO
else
echo Que pena, o arquivo $ARQUIVO infelizmente no foi encontrado...
fi
Soluo elegante
1
2
3
4
5
6
7
8
#!/bin/sh
echo Informe o nome do arquivo:
read $ARQUIVO
if ! cat $ARQUIVO 2> /dev/null
then
echo Que pena, o arquivo $ARQUIVO infelizmente no foi encontrado...
fi
Soluo grfica
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/sh
DIALOG=dialog #voc pode escolher o Xdialog ou o dialog
ARQTEMP=/tmp/script.$$ # $$ trocado pelo nmero do processo do script
#pega o nome do arquivo e guarda em arqtemp
$DIALOG --fselect "$HOME/" 10 60 2>$ARQTEMP
#pega o contedo do arquivo ARQTEMP e bota em ARQUIVO
ARQUIVO=`cat $ARQTEMP`
rm -fr $ARQTEMP #remove o ARQTEMP
if [ -f $ARQUIVO ]
then
$DIALOG --textbox "$ARQUIVO" 0 0
else
$DIALOG --msgbox "Que pena, o arquivo $ARQUIVO infelizmente no foi
encontrado..." 0 0
18 fi
6. Estruturas de repetio
As estruturas de repetio servem para repetir uma srie de comandos at que
uma condio especial seja alcanada.
WHILE
Enquanto a condio do while for verdadeira,
as instrues entre do e done executada.
1
2
3
4
5
6
7
8
#!/bin/sh
X=0
while (( X < 10 ))
do
echo $X
X=$((X+1))
done
Desafio!
Reescreva o programa anterior, para que toda vez que o usurio informar um nome
de arquivo invlido, ele tenha que digitar o nome do arquivo novamente.
6. Estruturas de repetio
FOR
O for no shell se comporta diferente do
que o for nas linguagens tradicionais.
Em shell, o for percorre uma lista
qualquer, e atribui a uma varivel, cada
valor dessa lista.
O comando seq X Y Z,
conta de X
at Z indo de Y em Y
1
2
3
4
5
6
7
#!/bin/sh
for X in `seq 1 1 10`
do
echo vamos contar: $X
done
Desafio Final!
Faa um programa que redimensione todos as imagens png da pasta informada pela
linha de comando para 50% do seu tamanho, e salve no formato jpg
Para modificar imagens pela linha de comando, use o comando convert, do
image magick
para pegar os argumentos da linha de comando, use:
$1 para o primeiro arguento, $2 para o segundo e assim por diante
$* retorna todos os argumentos da linha de comando
$# retorna a quantidade de argumentos
shift 1 remove o primeiro parametro e o segundo passa a ser o primeiro,
o terceiro o segundo e assim por diante