





















































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Informações básicas sobre shell scripting, incluindo programas interpretados, linguagem de programação completa, variáveis, ambiente adaptável ao usuário, simplicidade do shell, operadores e redirecionamento de e/s. O texto também aborda comandos como cat, grep, sed, awk e utilidades como pipeline, sistemas de arquivos e redirecionamento de saída. Além disso, é discutido o uso de variáveis, nomes, exportação e operadores de teste condicionais.
Tipologia: Notas de estudo
1 / 61
Esta página não é visível na pré-visualização
Não perca as partes importantes!






















































Centro de Computação - Unicamp
Gerência de Atendimento ao Cliente (e-mail:[email protected])
Programa
çã
o C-Shell
Centro de Computa
çã
o - Unicamp
Ger
ê
ncia de Atendimento ao Cliente (e-mail:[email protected])
Programa
çã
o Shell
O que
é
Shell?
programa que conecta e interpreta os comandos
linguagem de programação completa - interpretada
possui variáveis;
construções condicionais e interativas;
ambiente adaptável ao usuário;
é
uma
das
linguagens
originais
de
quarta
geração
Simplicidade do Shell
Pipeline
Sistemas de arquivos
Sistema operacional UNIX
Notas: •
O programa
shell
interpreta os comandos que você digita
quando
trabalha com o sistema operacional e traduz para comandos que o kernel
compreende.
Shell:
é
uma
linguagem
de
programação
completa,
possuindo
variáveis,
construções
condicionais,
interativas
e
ambiente
adaptável ao usuário. O Shell do Unix é a ferramenta original deprotótipo rápido que ensina conceitos-chaves como modularidade,reutilização e desenvolvimento.
Os comandos do Shell se comunicam entre si por meio de umainterface simples e coerente chamada
conduto (pipeline)
.
O Shell permite que o usuário realize suas atividades sem afetarqualquer
outro
processo
que
não
lhe
pertence.
Quando
um
usuário conecta-se a um
sistema
Unix,
o
sistema
operacional
inicia automaticamente uma cópia do Shell, sob a qual o usuáriopoderá realizar qualquer função disponível.
O
shell
utiliza
o
sistema
de
arquivos
do
UNIX
que
permite
organizar
arquivos
em
pastas
(diretórios).
Esta
hierarquia
de
diretórios e arquivos gera uma visão simples e clara de toda ainformação no sistema.
O UNIX é transportável; ele roda em quase todo hardware decomputadores fabricados atualmente. Seu investimento não serádesperdiçado,
pois
qualquer
programa
escrito
é
largamente
portável entre Unix’es de diferentes plataformas e fornecedores.
Centro de Computa
çã
o - Unicamp
Ger
ê
ncia de Atendimento ao Cliente (e-mail:[email protected])
Programa
çã
o Shell
Produtividade •
Linguagem interpretada - n
ã
o compilada
Um programador m
é
dio pode duplicar ou triplicar sua
produtividade com o uso do Shell
Compara
çã
o de Bruce Cox (pai do Objetive C)
shell
1 linha de c
ó
digo
linguagem orientada a objeto 10 linhas de c
ó
digo
linguagem C
100 linhas de c
ó
digo
Notas: •
N
ã
o
é
de se espantar que o Shell possa duplicar ou triplicar a
produtividade pois ele pode automatizar a maior parte das tarefasrecursivas,
que
compreendem
de
50
a
80%
das
atividades
intensamente humanas. A simplicidade dos arquivos do UNIX e doprojeto de sistema de arquivo possibilitam isso. É
necess
á
rio alguns conhecimentos internos do Shell e do seu uso
para derivar desses benef
í
cios. Mas,
é
preciso apenas alguma
inventividade para tornar-se mais eficiente e produtivo.
Centro de Computa
çã
o - Unicamp
Ger
ê
ncia de Atendimento ao Cliente (e-mail:[email protected])
Programa
çã
o Shell
Filtros
teclado)
grep -i
Arthur
capit
Autor: Lowel ArthurRei Arthur e os Cavaleiros da T
á
vola
cat
cat
arquivo
sed
-e
s/shell/Shell/g
capit
O comando
sed
abrir
á
o arquivo
“
capit
”
como
stdin
e passar
á
o
arquivo
para
stdout
(terminal)
enquanto
muda
todas
as
ocorr
ê
ncias de
“
shell
”
para
“
Shell
”
.
Notas: •
Uma chave para transformar dados brutos
em informa
çã
o
ú
til
é
filtrar os dados estranhos.
Voc
ê
pode pensar na maior parte dos comandos do Shell como
filtros.
Cada comando tamb
é
m possui duas sa
í
das:
sa
í
da-padr
ã
o -->
stdout
sa
í
da-de-erro -->
stderr
Cada comando filtra dados da entrada-padr
ã
o ou transforma-os
de algum modo, passando-os
à
sa
í
da-padr
ã
o. Quaisquer erros
encontrados s
ã
o passados
à
sa
í
da-de-erro.
Alguns filtros extraem apenas os dados que voc
ê
deseja ver,
outros incluem ou alteram os dados conforme suas instru
çõ
es.
FILTRO
STDIN
STDOUT
(tela)
S
TDERR
(
tela)
Centro de Computa
çã
o - Unicamp
Ger
ê
ncia de Atendimento ao Cliente (e-mail:[email protected])
Programa
çã
o Shell
Conduto •
Conecta
stdout
de um comando
à
stdin
de outro
O resultado da execu
çã
o de um comando pode ser
utilizado como par
â
metro de entrada na execu
çã
o de
outro comando
Meio
de
condu
çã
o
para
transportar
dados
de
um
comando para o outro
Exemplos: grep
matricula /sistemas/acad/jobs/*
| wc -l | sort
ls -la |
grep -i
Jan
é
diferente de
ls -la
Notas: •
Os
comandos
do
Shell
podem
ser
reutilizados,
acoplados
e
moldados
para
lidar
com
as
mais
dif
í
cieis
aplica
çõ
es
de
informa
çã
o.
Al
é
m de eliminar arquivos tempor
á
rios, o conduto permite que dois
comandos operem ao mesmo tempo.
Centro de Computa
çã
o - Unicamp
Ger
ê
ncia de Atendimento ao Cliente (e-mail:[email protected])
Programa
çã
o Shell
Constru
çã
o de um Shell Script
Edite um arquivo
Î
vi meu-programa
Esse arquivo deve conter na primeira linha:
#! /bin/ksh
ÎÎ
utilize para comentar uma linha
/bin/rm
arquivo
recomend
á
vel passar o
caminho
(path) dos comandos
\rm
arquivo
Garante encontrar a primeira ocorr
ê
ncia no
path
As shells devem estar sempre num diret
ó
rio comum, por
exemplo: /usr/sys/nome-sistema
Arquivos de controle que s
ã
o gerados pela shell devem
estar num diret
ó
rio tempor
á
rio, separado das shells.
Notas: •
#!
/bin/ksh
Î
É
utilizado
para que o Unix saiba que sua shell
é
korn
shell.
É
recomend
á
vel passar
o
“
caminho
”
do
comandos,
pois
cada
usu
á
rio pode criar na sua
á
rea um alias para qualquer comando.
Os comandos ficam geralmente no diret
ó
rio /bin
Outra
op
çã
o
seria
colocar
scape
antes
do
comando,
por
exemplo
\rm.
Garante
que
voc
ê
estar
á
utilizando
a
1
a.
ocorr
ê
ncia encontrada no path definido no seu
.kshrc
Centro de Computa
çã
o - Unicamp
Ger
ê
ncia de Atendimento ao Cliente (e-mail:[email protected])
Programa
çã
o Shell
Caracteres especiais do SHELL •
(v
í
rgula)
Separador de comando sequencial. Ex: date; ksh
meu_shell
; date >
/tmp/result
( ponto de interroga
çã
o )
Combina com qualquer caracter isolado.
(asterisco)
Combina com qualquer cadeia de caracter.
[a-z]* Combina com algo que consista de caracteres alfab
é
ticos
min
ú
sculos.
string
Procura a string somente no come
ç
o da linha
string
Procura a string somente no fim da linha
Notas:Exemplos:
Suponha que no diret
ó
rio corrente exista os seguintes arquivos:
capit1 , capit2, capit3, capit4 e capitulols capit*
(aparecer
á
os 5 arquivos)
ls capit?
(capit1, capit2, capit3, capit4)
ls capit[1-3]
(capit1, capit2, capit3)
os caracteres "?", "*" e "[a-z]" podem ser usados no meio deuma stringls cap?t
Centro de Computa
çã
o - Unicamp
Ger
ê
ncia de Atendimento ao Cliente (e-mail:[email protected])
Programa
çã
o Shell
Tipo de Vari
á
veis
Global: Seta vari
á
veis de ambiente ou vari
á
veis globais. Elas
existem enquanto a sess
ã
o estiver aberta.
Sintaxe:
export
nomevar=valor
Exemplos:
export TERM=
vt
(vari
á
vel de ambiente)
export DBDATE=
(vari
á
vel de ambiente)
export
matricula
(vari
á
vel global)
Local: Seta vari
á
veis locais. Elas existem somente durante a
execu
çã
o da Shell.
Sintaxe: nomevar=valor
Notas: •
EXPORT:
Seta vari
á
veis de ambiente ou globais. Existem enquanto a
sess
ã
o estiver aberta.
export PS1="hostname{whoami}$ " magda{maria}$
N
Ã
O
existe espa
ç
o em branco entre o nome da vari
á
vel e seu
conte
ú
do
nome=Rog
é
rio
Nomes de Vari
á
veis
n
ã
o
pode conter
hifen.
nota-aluno
Î
dar
á
erro
X
É
permitido o uso do
underline
para nome de vari
á
veis
:
minha_var
Centro de Computa
çã
o - Unicamp
Ger
ê
ncia de Atendimento ao Cliente (e-mail:[email protected])
Programa
çã
o Shell
Defini
çã
o de vari
á
veis
String
Utilizando string: Utilize "$" para substituir o nome da vari
á
vel pelo seu
conte
ú
do.
Sintaxe :
$vari
á
vel
Exemplos:cabec=
Relat
ó
rio do ano $ano
dir_log=/tmp
ls $dir_log
aluno=${nomes[$cont]}parm1=$1ls arq$vardia=Segunda-feira ; echo
Hoje
é
dia $dia
Notas: •
N
ã
o
deixe espa
ç
o em branco entre o cifr
ã
o
($)
e o nome da
vari
á
vel.
Centro de Computa
çã
o - Unicamp
Ger
ê
ncia de Atendimento ao Cliente (e-mail:[email protected])
Programa
çã
o Shell
Defini
çã
o de vari
á
veis
Inteiro
Atribuindo valores do tipo
Exemplos:
let
cont=
ou
cont=
let
soma=$cont+
let
x=' 1
ou
let
x=1+
let
x=$x+
Notas:
Centro de Computa
çã
o - Unicamp
Ger
ê
ncia de Atendimento ao Cliente (e-mail:[email protected])
Programa
çã
o Shell
Edi
çã
o de string
typeset
Especifica o tipo do valor da vari
á
vel
Sintaxe:
typeset [op
çõ
es] v=$var
Op
çõ
es:
-Ln : ajusta
à
esquerda. Se "n"
é
especificado,
é
preenchido com branco ou truncado
à
direita no
valor de n
-Rn: ajusta
à
direita. Se "n"
é
especificado,
é
preenchido com branco ou truncado
à
esquerda
no valor de n
-Zn:
mesmo que o acima, adiciona 0 ao em vez
de branco
-l
converte para min
ú
sculo
-u
converte para mai
ú
sculo
Exemplos:alpha="
aBcDeFgHiJkLmNoPqRsTuVwXyZ
typeset -L v=$alpha"
Æ
"
aBcDeFgHiJkLmNoPqRsTuVwXyZ
"
typset -uR5 v=$alpha
Æ
typeset -Z8 v="123.50"
Æ
Notas:
Centro de Computa
çã
o - Unicamp
Ger
ê
ncia de Atendimento ao Cliente (e-mail:[email protected])
Programa
çã
o Shell
Tratamento de Vari
á
veis
testa se a vari
á
vel tem conte
ú
do
-n str:
retorna verdadeiro se vari
á
vel N
-z str:
retorna verdadeiro se vari
á
vel for NULA
if [[ -z
$matricula
]] then
echo "
vari
á
vel matricula N
O inicializada
fi matricula=23456 if [[ -n
$matricula
]] then
echo "
vari
á
vel matricula inicializada
fi
Notas:
Centro de Computa
çã
o - Unicamp
Ger
ê
ncia de Atendimento ao Cliente (e-mail:[email protected])
Programa
çã
o Shell
Vari
á
veis de ambiente
Conte
ú
do do comando whoami (quem
é
o usu
á
rio da
conta)
$PATH Lista
de
diret
ó
rios
a
serem
procurados
pelo
meus
execut
á
veis
$HOME Mostra qual
é
o diret
ó
rio home
$PS1 Mostra o que est
á
setado como prompt
$SHELL Mostra a shell que est
á
sendo utilizada
Mostra qual o tipo de terminal que est
á
sendo utilizado
ú
mero do processo do comando corrente
Notas: •
O
valor
das
vari
á
veis
ao
lado
podem
ser
encontrados
ao
digitarmos o comando
set.
$$
ÎÎ
Muito utilizado pelos utilit
á
rios de mail que gravam o arquivo
em /tmp/arq_n
ú
mero_do_processo
Centro de Computa
çã
o - Unicamp
Ger
ê
ncia de Atendimento ao Cliente (e-mail:[email protected])
Programa
çã
o Shell
Execu
çã
o de um Shell Script
Fora do editor vi, na linha de comando:
$ksh
-op
çõ
es_de_teste
meu-shell par
â
metros
Gravar a execu
çã
o de uma shell script
$script$ksh
-op
çõ
es_de_teste
meu-shell
$ CTRL D$ more
typescript
Dentro do editor vi:
:w
ÎÎ
grava o arquivo que est
á
na mem
ó
ria
:!ksh
-op
çõ
es de teste
ÎÎ
diz
ao
vi
para
executar
o
comando
shell
seguinte %
ÎÎ
diz ao vi para preencher o nome do
arquivo
corrente
Op
çõ
es de Teste:
x
ÎÎ
gera sa
í
da dos comandos executados
Notas: •
Voc
ê
pode executar o seu programa a medida que for sendo
desenvolvido, facilitando tamb
é
m a detec
çã
o e corre
çã
o de erros.
Entrando no
vi
e criando as primeiras linhas do programa, grave o
arquivo (:w) e execute-o sem sair do editor: (:!ksh -op
çã
o %)