SlideShare a Scribd company logo
1 of 75
Download to read offline
–

VIDYÃ6‰hohq‚

–

Q…‚t…h€hom‚Ã8Turyy

–
–
–

hˆ‡‚…h†)

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

8…v†‡vhhÃHˆu‚“Ã@ˆtrv‚



Gvyyvh€ÃQhyr…€‚

•
‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h
€
h
…
t
‚
…
Q
Ã
PĈrÃpÃTuryyÃ4

◊

Q…‚t…h€hĈrÃp‚rp‡hÃrÃv‡r…ƒ…r‡h
p‚€hq‚†

◊

Gvtˆhtr€ÃqrÃ…‚t…h€hom‚
p‚€ƒyr‡hÃÃv‡r…ƒ…r‡hqh

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

◊
◊

– possui variáveis
– construções condicionais e
interativas
– ambiente adaptável ao usuário
V€hÃqh†Ãyvtˆhtr†Ã‚…vtvhv†Ãqr
„ˆh…‡hÃtr…hom‚Ã#BG
Tv€ƒyvpvqhqrÃq‚ÃTuryy

– pipeline
– sistemas de arquivos
– sistema operacional UNIX


• O programa †uryy interpreta os comandos que você digita e os traduz para
comandos que o xr…ry compreende.
• Turyy) é 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 de protótipo rápido que ensina conceitos-chaves como
modularidade, reutilização e desenvolvimento.
• Os comandos do Shell se comunicam entre si por meio de uma interface simples e
coerente chamada p‚qˆ‡‚Ãvƒryvr.
• O Shell permite que o usuário realize suas atividades sem afetar qualquer 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ário
poderá 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 a informação no sistema.
• O UNIX é transportável; ele roda em quase todo hardware de computadores
fabricados atualmente. Seu investimento não será desperdiçado, pois qualquer
programa escrito é largamente portável entre Unix’s de diferentes plataformas e
fornecedores.
Q…‚qˆ‡v‰vqhqr

◊

Gvtˆhtr€Ãv‡r…ƒ…r‡hqhÃÁm‚
p‚€ƒvyhqh

◊

V€Ãƒ…‚t…h€hq‚…Àpqv‚Âqr
qˆƒyvph…ˆÇ…vƒyvph…ƈh

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

◊

ƒ…‚qˆ‡v‰vqhqr

8‚€ƒh…hom‚ÃqrÃ7…ˆprÃ8‚‘ÃhvÃq‚
Piwr‡v‰rÃ8

– Shell:
linha de código
– Linguagem O.O:  linhas de código
– Linguagem C:  linhas de código



• Não é de se espantar que o Shell possa duplicar ou triplicar a produtividade pois ele
pode automatizar a maior parte das tarefas recursivas, que compreendem de 50% a
80% das atividades intensamente humanas. A simplicidade dos arquivos do UNIX e
do projeto de sistema de arquivo possibilitam isso.
• É necessário alguns conhecimentos internos do Shell e do seu uso para se
beneficiados seus recursos. Mas, é preciso alguma inventividade para torná-lo mais
eficiente e produtivo.
Rˆhq‚Ȇh…

◊

D‡r…h‡v‰h€r‡r

– realizar uma operação simples, uma
única vez
– interagir com o comando
◊

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

PÆuryyÆp…vƒ‡Ãqr‰r…iÆr…ȇvyv“hq‚
†r€ƒ…rĈrÃs‚…Árpr††i…v‚Ã…rhyv“h…)

– procedimentos complexos usando
muitas linhas de comando
– procedimento do qual todos os
usuários poderão beneficiar-se
– uma tarefa numa data planejada
– integrar informações de vários
sistemas existentes



• A qualquer momento que você executa algum comando (ls, cat), você está usando
o Turyy interativamente: †‡qvÃ†‡q‚ˆ‡ÃrƇqr…… são todos direcionados para o terminal.
•ÃT‡qvÃÃÃ23Ƈhqh…‡Ãvƒˆ‡
•ÃT‡q‚ˆ‡Ã23Ƈhqh…‡Ã‚ˆ‡ƒˆ‡
•ÃT‡qr……Ã23Ƈhqh…‡Ãr……‚…
• Quando você começar a usar o Turyy interativamente e descobrir que algumas
tarefas exigem muita digitação, está na hora de você programar em TuryyÃp‚y‚phq‚
r††r†Ã comandos interativos em um arquivo. Você poderá reutilizar sempre que
precisar, melhorando ainda mais a sua produtividade.

• O Turyy pode extrair e manipular grandes quantidades de informações. Por que
pesquisar um relatório inteiro quando o Turyy pode verificar e recuperar informações
importantes para você com mínimo esforço ?
8h…hp‡r…t†‡vph†Ãq‚Ã8Turyy

◊

@†p…v‡hÂ…Ã7vyyÃE‚’ÁhÃVv‰r…†vqhqr
qhÃ8hyvsy…vhÃÃ7r…xryr’

– BSD 4.3 e System V
◊

‚
q
h
o

h
‰
6
Ã
‘
v

y
y
r
u
T

8
Ã
‚
j
o
h

Tv€vyh…ÃjÃyvtˆhtr€Ã8

◊

8‚‡…‚yrÆ‚i…rÃh†Ã‡h…rsh†Ãr€
ƒ…v€rv…‚ÃrÆrtˆq‚Ãyh‚

◊

Cv†‡‚…’ÃrÃ6yvh†vt

◊

Pƒr…hq‚…r†Ãp‚qvpv‚hv†Ã22Ã3r‡p

€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

◊

@†‡…ˆ‡ˆ…hÃqrÃp‚‡…‚yrÃvsuvyrÃr‡p

◊

Wh…vi‰rv†Ãty‚ihv†ÃrÃy‚phv†Ã†r‡
†r‡r‰



• O uv†‡‚…’ armazena comandos à medida que são executados permitindo serem
reutilizados sema necessidade de redigitá-lo.
!!

= reexecuta o último comando

!n

= reexecuta o comando número “n” do histórico

!ftp

= reexecuta o último comando ftp

!echo:p = lista o último comando rpu‚ executado.
• O Turyyà 8 oferece aliasing, permitindo ao usuário criar nomes simbólicos para
nomes de comando.
Exemplos:

alias dir ‘ls -la | more’ ou alias rm ‘rm -i’

@‰v‡rÃp…vh…Àhv†ÃqrÃ!Ãhyvh†Ãƒ‚v†Ãp‚€ƒ…‚€r‡rÃhÃr…s‚…€hprÄÄ

• No Shell C, você poderá mover tarefas em primeiro plano para o segundo, conforme
a necessidade.
• Sempre que você precisar de respostas imediatas, execute os comandos em
primeiro plano.
Quando o comando for ocupar muito tempo de terminal, ou seja, levar muito tempo
para voltar a resposta, você poderá submetê-lo em segundo plano.
Exemplos: find / -name *.ps -printÉ

(É início do comando em 2o. plano)

jobs

(lista os comandos que estão sendo executados)

fg 1

(traz o comando para o 1o. plano)
Avy‡…‚†

TÃUÃ9ÃPÃVÃU
ÃTÃUÃ9ÃDÃI

AÃDÃGÃUÃSÃP

ÃÃÃÃWHFODGR
‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h
€
h
…
t
‚
…
Q
Ã

◊

‡ÃrÃyÃh

TÃUÃ9Ã@ÃSÃS
‡ÃrÃyÃh

t…rƒÃvó6…‡uˆ…´Ãphƒv‡

Autor: Lowel Arthur
Rei Arthur e os Cavaleiros da
Távola
◊

†rqÃró††uryyTuryyt´Ãphƒv‡



• O Shell tem comandos que permitem extrair dados relevantes de um arquivo.
• Você pode pensar na maior parte dos comandos do Shell como filtros.
• Cada comando também possui duas saídas:
• saída-padrão -- †‡q‚ˆ‡ÃÃqrshˆy‡Ã‡ryh
• saída-de-erro -- †‡qr……ÃÃqrshˆy‡Ã‡ryh
• Cada comando filtra dados da entrada-padrão ou transforma-os direcionando-os à
saída-padrão. Quaisquer erros encontrados são direcionados à saída-de-erro.
• Filtros podem extrair, incluir ou alterar dados dependendo dos comandos utilizados.
• O comando †rqÃ(do exemplo acima)Ãabrirá o arquivo “capit1” como †‡qv e passará
o arquivo para †‡q‚ˆ‡ (terminal) enquanto muda todas as ocorrências de “shell” para
“Shell”.
• P7T) Se você m‚Ãredirecionar o resultado da execução dos comandos para um
arquivo, utilizando os operadores de redirecionamento, o resultado somente será
exibido na tela Ãqrshˆy‡Ãq‚Ƈq‚ˆ‡Ã
Srqv…rpv‚h€r‡‚

◊

8…vh…Ãh…„ˆv‰‚†

◊

6r‘h…Ãh…„ˆv‰‚†

◊

V†h…Ãh…„ˆv‰‚†Ãr‘v†‡r‡r†Ãp‚€‚

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

r‡…hqhÃh…hÂÆuryy

◊

Srˆv…Ãq‚v†Ãsyˆ‘‚†ÃqrÆhtqh

◊

V†h…Ãh…‡rÃq‚Ãp‚€hq‚ÆuryyÃp‚€‚
r‡…hqh
Pƒr…hq‚…r†

◊

1Ãh…„ˆv‰‚ÃÃÃÃqv…rpv‚hÈ€Ãh…„ÃƇqv

◊

3Ãh…„ˆv‰‚ÃÃÃÃqv…rpv‚hÃ

stdoutÃÈ€hÃ

ÃÃÃÃÃÁ‚‰hÆhtqh

◊

stdoutÃhÈ€Ãh…„Ã

33Ãh…„ˆv‰‚ÃÃhr‘hÃ

ÃÃÃÃÃÃÃr‘v†‡r‡r
33ÉÃÃÃÃÃÃÃÃÃÃÃÃÃhr‘hÃ

◊

11Ãqryv€v‡hq‚…

◊

3ÄÃh…„ˆv‰‚ÃÃ

33ÄÃh…„ˆv‰‚Ã

◊

y
y
r
u
T

8
Ã
‚
j
o
h

◊

◊

‚
q
h
o

h
‰
6
Ã
‘
v

•É

€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

stderrÃhÃstdout

direciona stdin do
shell até o delimitador

grava sobre noclobber/
cria novo arq.
grava sobre noclobber/
anexa novo arq.

reúne stderr e stdout e
canaliza resultados



• Você pode usar o redirecionamento de E/S para alterar o †‡qv†‡q‚ˆ‡ÃrƇqr……
Exemplo:

†rqÃró††uryyTuryyt´ÃÃphƒv‡ Ã3Á‚‰‚phƒv‡

• O †‡qr…… ainda estaria direcionado para o terminal, mas o resultado da
execução deste comando será gravado em novocapit1.
• Redirecionar †‡qr…… para um arquivo pode ser ocasionalmente útil para depurar um
comando Shell. Para combinar †‡qr…… com †‡q‚ˆ‡, inclua umÃÉÃapós o sinal de
redirecionamento:
Exemplo: †rqÃró††uryyTuryyt´Ãphƒv‡

Ã33ÉÁ‚‰‚phƒv‡

Se o arquivo ‚‰‚phƒv‡ existir, o Shell anexará o texto ao arquivo
• Senão, O Shell vai criá-lo. ( comando )
• O arquivo de saída terá todos os dados da saída-padrão e da saída-de-erro
criados pelo comando do shell. (comando )
•Ã ‚py‚iir…: variável que pode ser setada para evitar a destruição acidental de
arquivos existentes: (setenv noclobber)
Para modificar esta proteção, use o ponto de exclamação Ä.
Exemplo: Ãph‡ÃÃ3ÄÃÁ‚‰‚h…„
•Ã11 delimitador: este dispositivo de redirecionamento, usa linhas de dados qr‡…‚ do
comando do Shell como entrada. Em vez de ter um arquivo separado como entrada
para o comando, você poderá incluí-lo diretamente com o comando do Shell
Exemplo: Ãs‡ƒÃv‰Ãs‡ƒˆvph€ƒi…Ã11Ã@PAÄ
8‚qˆ‡‚

◊

Hrv‚ÃqrÃp‚qˆom‚Ãh…hÇ…h†ƒ‚…‡h…
qhq‚†ÃqrÈ€Ãp‚€hq‚Ãh…hˆ‡…‚

◊

PÃ…r†ˆy‡hq‚ÃqhÃr‘rpˆom‚ÃqrÈ€
p‚€hq‚ÂqrÆr…ȇvyv“hq‚Ãp‚€‚
ƒh…k€r‡…‚ÃqrÃr‡…hqhÁhÃr‘rpˆom‚

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

◊
◊

qrˆ‡…‚Ãp‚€hq‚
8‚rp‡hƇq‚ˆ‡ÃqrÈ€Ãp‚€hq‚Ãj
†‡qvÃqrˆ‡…‚
@‘r€ƒy‚†)

cat meuarq | grep palavra | wc -l
ls -al | grep -i “*.txt”



• Os comandos do Turyyà 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.
8‚†‡…ˆv…ȀÆuryyÆp…vƒ‡

◊

@qv‡rÈ€Ãh…„ˆv‰‚)

vi meuprograma
◊

Q…v€rv…hÃyvuhÃqr‰rÃp‚‡r…)

#! /bin/csh
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

◊

◊

Qh…hÃp‚€r‡h…È€hÃyvuh)

#
Qh††h…Âóph€vu‚´Ãq‚†Ãp‚€hq‚†)

/bin/rm arquivo

ou

rm arquivo



• #! /bin/csh

ÐÉ utilizado para que o Unix saiba que seu shell é

p†uryy

• É recomendável especificar 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 †phƒr ?
antes do comando, por exemplo c…€Ã Garante
que você estará utilizando a 1a. ocorrência encontrada no path definido no seu p†u…p
9vph†ÃqrÃ…‚t…h€hom‚

◊

P†Ã†uryyÆp…vƒ‡†Ãqr‰r€Ãr†‡h…Ær€ƒ…r
r€Ãˆ€Ãqv…r‡y…v‚Ãp‚€ˆ€

– Exemplo: /usr/sys/nome-sistema
◊

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

6…„ˆv‰‚†ÃqrÃp‚‡…‚yrĈrÆm‚
tr…hq‚†Ãƒry‚ÆuryyÃqr‰r€Ãr†‡h…Ãr€
ˆ€Ãqv…r‡y…v‚Çr€ƒ‚…i…v‚Ærƒh…hq‚†
q‚†Ã†uryyÆp…vƒ‡†
9vph†ÃqrÃ…‚t…h€hom‚

◊

V‡vyv“rÃsvy‡…‚†ÃqrÃ…rqˆom‚

◊

V‡vyv“rÃp‚qˆ‡‚†Ãh‚Ãv‰p†Ãqr
h…„ˆv‰‚†Ã‡r€ƒ‚…i…v‚†

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

◊

TrÆrˆÃ†uryyÃs‚…Ãsh“r…ÃAUQÃyr€i…r
†rÃqrÃhy‡r…h…ÂÃpu€‚qÃq‚Ãh…„ˆv‰‚

◊

Tr€ƒ…rȇvyv“rÃqryv€v‡hq‚…Á‚†
h…„ˆv‰‚†

◊

V‡vyv“rÃqryv€v‡hq‚…Ã~vp‚Ãr
qvsr…r‡rÃh…hƈiph€ƒ‚†

◊

P…thv“r†Ãqhq‚†Ãƒh…hÀhv‚…
rsvpvrpvhÃqhÀi„ˆvh



• Se o seu shell for fazer FTP, alterar a permissão do arquivo que contém o username
e a senha para “700”. @†‡rÃpÈ€ÃÃt‡r€Ã‚i…vth‡y…v‚Â…ÀrqvqhÃqrÆrtˆ…hoh
• Utilize filtros de redução,à t…rƒÃ pˆ‡Ã rà hx em primeiro lugar em um conduto,
reduzindo a quantidade de dados que deverão ser transferidos pelo Shell.
Exemplo: grep $1 arq1 | sort
• Utilize condutos ao invés de arquivos temporários para melhorar a eficiência do seu
shell
8‚€Ãh…„ˆv‰‚Çr€ƒ‚…i…v‚)Ã

cut -f1,5 arq1  /tmp/arq1tmp
sort /tmp/arq1tmp
rm /tmp/arq1tmp

8‚€Ãp‚qˆ‡‚)

cut -f1,f5 arq1 | sort

•Qualquer programa Shell com mais de duas páginas é muito complexo.
Qh…hÃr‘rpˆ‡h…ȀÆuryy
†p…vƒ‡

◊

A‚…hÃq‚Ãrqv‡‚…ó‰v´ÃhÃyvuhÃqr
p‚€hq‚)

csh -opção meu-programa
◊
‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h
€
h
…
t
‚
…
Q
Ã

9r‡…‚Ãq‚Ãrqv‡‚…ó‰v´)

:w (grava o arquivo)
:!csh -opção %
–!
(executa o comando shell
seguinte)
–%
(diz ao “vi” para preencher o
nome do arquivo corrente)



• Você pode executar o seu programa à medida que for sendo desenvolvido,
facilitando também a detecção e correção de erros. Entre no ‰và e crie as primeiras
linhas do programa, grave o arquivo (:w) e execute-o sem sair do editor:
Comando :
)Äp†uÃom‚ÃÈ
Pƒo}r†ÃqrÇr†‡r

◊

r

– sai imediatamente se houver código
de retorno falso
◊
‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h

‰

– verbose (maiores informações)
◊

‘

– gera saída dos comandos
executados

€
h
…
t
‚
…
Q
Ã



• Se você quiser gravar num arquivo a execução de um shell:
• Execute o comando †p…vƒ‡ (será criado um arquivo chamado typescript)
• Execute a shell
• Ao final da execução do shell tecle CTRL D ( Pronto, o arquivo typescript
conterá a execução da shell. )
• Para ler o arquivo typescript use o comando €‚…r
8h…hp‡r…r†Ãr†ƒrpvhv†

◊

6†ƒh†Ãqˆƒyh†ÃóÃ

“string”
– mostra o string e substitui variáveis
(se existir)
◊
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

◊

◊

6†ƒh†Ã†v€ƒyr†ÃõÃ

‘string’
– mostra o string e I­P substitui
variáveis (se existir)
8…h†rÃÃgÃ

`comando(s)`
– o resultado do comando é usado em
output
transforma
caracter especial em caracter normal

7h……hÃv‰r…‡vqhÃc)Ã



• A utilização de caracteres especiais dentro de um string dará problemas. Para isso
utilize o recurso da “barra invertida”.
• Exemplos:
set dia = 19
echo “ Hoje é dia $dia”
resultado = Hoje é dia 19
set dia = 19
echo ‘ Hoje é dia $dia’
resultado = Hoje é dia $dia
set maquina = `hostname`
echo $maquina
Resultado: sc13.ccuec.unicamp.br
Hr‡hph…hp‡r…

◊

0ÃÃÃÃTrƒh…hq‚…ÃqrÃp‚€hq‚
†r„rpvhy

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

◊

4ÃÃÃÃ8‚€ivhÃp‚€Ã„ˆhy„ˆr…
ph…hp‡r…Ãv†‚yhq‚

◊

ÃÃÃÃÃÃ8‚€ivhÃp‚€Ã„ˆhy„ˆr…
phqrvhÃqrÃph…hp‡r…

◊

bh“dÃ8‚€ivhÃp‚€Ãhyt‚Ĉr
p‚†v†‡hÃqrÃph…hp‡r…r†
hyship‡vp‚†Ã€v~†pˆy‚†



• Suponha que no seu diretório contenhas os arquivos:
• capit1
• capit2
• capit3
• capit4
• ls capit(*) -

aparecerá os 5 arquivos

• ls capit?

aparecerá os arquivos ( capit1, capi2, capit3, capit4 )

-

• ls capit[123]

aparecerá os arquivos (capit1, capi2, capit3)
Wh…vi‰rv†Ã‚Ã8Turyy

◊

By‚ihv†

– SETENV
‚
q
h
o

h
‰
6
Ã
‘
v

y
y
r
u
T

8
Ã
‚
j
o
h

– Exemplos:

€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

†r‡r‰ÃU@SHɇ 
†r‡r‰Ã9796U@Ã`#H9
†r‡r‰Ã9DTQG6`Ài„ˆvh)



•ÃNomes de Variáveis (locais ou globais) m‚ pode conter hífen:
nota-aluno (dará erro)

Y

•ÃÉ permitido o uso do underscore:
minha_var
nota_aluno
•ÃT@U@IW)ÃConfigura variáveis de ambiente ou globais. Estas variáveis serão válidas
enquanto a sessão estiver aberta.
G‚phv†

◊

6‡…viˆvq‚Éhy‚…r†Ãq‚Çvƒ‚ÃTUSDIB)

set var = expressão
@‘r€ƒy‚†)
†r‡Ã€†tÃ2óPyh´
†r‡Ãh‚Ã2à (('
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

◊

†r‡Ãqv…fy‚tÃ2×r‘r…pvpv‚†
†r‡Ã€rˆqv…Ã2Ãgy†Ãhyg
†r‡Ãh€rÃ2ó8ˆ…†‚ÃqrÃ8Turyy´
6……h’)
†r‡Ã‰h…Ã2ÃhÃiÃp
Im‚Ȇh…ÃutsrÃ‚Á‚€rÃqrÉh…vi‰rv†



Tr‡Ã‰h…ÃÃ2ÃÃr‘ƒ…r††m‚

• Seta variáveis locais, ou seja, elas atuam somente durante a execução do
Shell

• A variável recebe um valor string
• set var = (a b c ) è seta um array chamado ‰h… contendo h, i,
respectivamente na primeira, segunda e terceira posições.

p

,

Para saber quais variáveis estão setadas e quais são seus valores, utilize o
comandoÆr‡

Pi†)
G‚phv†

◊

6‡…viˆvq‚Éhy‚…r†Ãq‚Çvƒ‚ÃDIU@DSP)
5Éh…Ã2Ãr‘ƒ…r††m‚

@‘r€ƒy‚†)
5Ãh‚Ã2à (('
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

5Æ‚€hÃ2Ãljhy‚… ÃÃljhy‚…!
†rƒh…hq‚†Ãƒ‚…Ãi…hp‚
5ÃvÃ2Ã
5ÃwÆ‚€hà ÁhÉh…vi‰ry
5ÃÃƈi‡…hvà ÁhÉh…vi‰ry
5Ãh‚Ã2Ã!ÃÆ‚€hÃ!ÁhÉh…vi‰ryÃh‚
5à ÃÉh…Ãƈi‡…hvà ÁhÉh…vi‰ry



• Entre o @ e o nome da variável é necessário um espaço em branco.
• Já para incrementar ou decrementar, não pode existir espaço em branco entre a
variável e o sinal correspondente.
Ex: @ h++
@ p -• Para trabalhar com o conteúdo de uma variável devemos utilizar o sinal “$”.
• set ano = 1998
• echo $ano
• echo “O valor de soma e: $soma”
Hhvƒˆyhq‚Éh…vi‰rv†

◊

ljh…vi‰ry

substitui o nome da variável pelo seu
conteúdo
@‘r€ƒy‚†)

‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h
€
h
…
t
‚
…
Q
Ã

y†ÃÇqv…fy‚t
†r‡Ãyr‡…hÃ2Ãljh…b d
†r‡ÃxÃ2Ãljh…bÇvd
5ÃxÃ2ÃÇvÃÃ
†r‡ÃqvhÃ2à (
†r‡Ãƒh…€ Ã2ÃÇ
rpu‚óC‚wrÃpÃqvhÃÇqvh´



• Não deixe espaço em branco entre o cifrão ($) e o nome da variável.
Ç4‰h…vi‰ry

◊

Ur†‡hÃhÃr‘v†‡rpvhÃqhÉh…vi‰ryÆr
ryhÇr€Ã‰hy‚…

=1
=0
‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

se a variável está setada
se a variável não está setada

y
y
r
u @‘r€ƒy‚†)
T

†r‡Ã‰h…Ã2Ã$
8
Ã
‚
rpu‚ÃÇ4‰h…
j
o
Sr†ˆy‡hq‚)ÃÃ
h
€
h
…
t
‚
…
Q
Ã

ˆ†r‡Ã‰h…
rpu‚ÃÇ4‰h…0Ãrpu‚Ãljh…
dž‡h‡ˆ†

◊

Ur†‡hÆrÂÃp‚€hq‚Ãs‚vÃr‘rpˆ‡hq‚
p‚€Ã†ˆpr††‚

=0
=1

‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h

sucesso
sem sucesso

Exemplos:

€
h
…
t
‚
…
Q
Ã

†r‡Ã‰h…Ã2Ã$
rpu‚Ãdž‡h‡ˆ†

ˆ†r‡Ã‰h…
rpu‚Ãdž‡h‡ˆ†

rpu‚Ãljh…#0Ãrpu‚Ãdž‡h‡ˆ†

(1)
ÇƉh…vi‰ry

◊

Sr‡‚…hÂÁ~€r…‚ÃqrÃryr€r‡‚†Ãqr
ˆ€Ãh……h’

@‘r€ƒy‚†)

‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h

†r‡Ãh€rÃ2Àh…vhÃyˆpvhÃw‚h‚
rpu‚ÃÇƁh€r

– Resultado: 3

€
h
…
t
‚
…
Q
Ã



•Ã ÇƉh…vi‰ryà Ã
finalidade

Ð volta sempre um número inteiro que pode ser usado para alguma
ljh…vi‰rybd

◊

ljh…vi‰rybdÈÃÃljh…vi‰ryb’dˆ
ljh…vi‰rybd

– elementos posicionais
@‘r€ƒy‚†)
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

†r‡Ã‚€rÃ2Àh…vhÃw‚†rÃw‚h‚
ǁ‚€rb d
ǁ‚€rb d
ǁ‚€rb!d



• Se você ultrapassar o número de subscript, ou seja, tentar usar um elemento que
ultrapasse o número existente no array, o Cshell emitirá uma mensagem

Ð “Subscript out of range “

• Exemplos:

$nome[1]

(Maria)

$nome[1-3] (Maria José João)
$nome[2-]

(José João)
Qh††htr€ÃqrÃh…k€r‡…‚†

◊

ÇÆh…t‰
~€r…‚ÃqrÃh…tˆ€r‡‚†Ãƒh††hq‚†
p‚€‚Ãh…k€r‡…‚

◊

Ç ÃÇ!ÃÇ
h…tˆ€r‡‚†Ãƒ‚†vpv‚hv†

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

◊
◊
◊

◊

Ç
‚€rÃq‚Ã…‚t…h€h
Ç
‡‚q‚†Ã‚†Ãh…tˆ€r‡‚†
ÇÇ
‚Ãq‚Ã…‚pr††‚Ãq‚Ãp‚€hq‚
p‚……r‡r
Çh…t‰bd

ÃÃÃÃÃp‚‡r~q‚Ãq‚Ãh…h€r‡…‚ÁÃh††hq‚



• csh

meuprogram

parm1

parm2

ÃÃÃÃÃÇÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÇ ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÇ!
Çh…„‰b d

Ð

ÃÇh…„‰b!d

• ÇÇÃÃ ÃMuito utilizado pelos utilitários de mail que gravam o arquivo em
/tmp/arq_número_do_processo
• Se você tem um shell script que recebe parâmetros de entrada, você pode usar
ÇÆh…t‰Ãno começo do programa para obter o número de argumentos (parâmetros)
recebidos, testando se esse era o número esperado.
Exemplo:

p†uÃÀrˆ†p…vƒ‡ÃÃh…€ Ãh…€!

ÆÄÃivp†u

if ($#argv != 2) then
echo “Número de parâmetros inválido “
exit
else
set nome = $1 ou set nome = $argv[1]
set ramal = $2 ou set nome = $argv[2]
endif
Wh…vi‰rv†Ãp‚urpvqh†

◊
◊


V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h

Çpq

◊

‚
q
h
o

h
‰
6
Ã
‘
v

Lj†r…

ǃh‡u

◊

Çu‚€r

◊

ǃ…‚€ƒ‡

◊

džuryy

◊

LJr…€

◊

Çu‚†‡h€r

€
h
…
t
‚
…
Q
Ã



• $user : Conteúdo do resultado do comando whoami (quem é o usuário da conta)
• $cwd : Conteúdo do resultado do comando pwd (diretório corrente)
• $path : Lista de diretórios a serem procurados pelo meus executáveis
• $home : Mostra qual é o diretório home
• $prompt : Mostra o que está setado como prompt
• set prompt = `pwd`
• set prompt = $cwd
• $shell : Mostra a shell que está sendo utilizada
• $term : Mostra qual o tipo de terminal que está sendo utilizado
• $hostname: Nome do computador ao qual estou logado
• O valor das variáveis acima podem ser encontrados ao digitarmos o comando †r‡
@‘ƒ…r††}r†ÃrÃPƒr…hq‚…r†

◊

8‚€ƒh…h…Éh…vi‰rv†Ãˆ€p…vph†Ã‚ˆ
†‡…vt†
22

vtˆhy

Ä2qvsr…r‡r

◊

8‚€ƒh…h…Æ‚€r‡rƇ…vt†
y
y
r
2—
vtˆhy
‚ u
q T
Ä—qvsr…r‡r
h 
o 8
 Ã
h ‚
Pƒr…hq‚…Ãyytvp‚
‰ j
o
6 h
Ã
hqÂ…)ÃÃÉÉÕ•
‘
v
€
 h
…
V t
Pƒr…hq‚…Ãh…v‡€p‡vp‚
Ã
Ã
Ã
‚
Ã
…
Ã
ÃÃÃÃÃÃÃÃÃÃÃÃÃÃ
Ã
Ã
Q
Ã
Ã
€hv‚…Àr‚…Ãvtˆhy)Ã3 1Ã32Ã12

◊
◊
◊



• if ($a == $b) then
echo “As variáveis são iguais”
else
echo “As variáveis são diferentes”
end
• if ($nome !~ “Curso Shell “) then
echo “ Você esta no curso errado !!!!!”
else
echo “ Bem vindo ao Curso de Shell”
end
• while (“$1” != “”)
end
• if ($i = $k) then
• if ( “$1” == “Maria” || “$2” == “João” ) then
vsÃÇurÃÃry†r

◊

vsÃr‘ƒ…r††m‚Çur
ƒ…‚pr††h
ry†r
ƒ…‚pr††h!
rqvs

y
y
r
vsÃÇhÃ22ÃÇiÇur
‚ u
q T
h 
rpu‚ó‰h…vi‰rv†Ãvtˆhv†´
o 8
 Ã
‚
ry†r
h
‰ j
o
6 h
rpu‚ó‰h…vi‰rv†Ãqvsr…r‡r†
Ã
‘
v
€
rqvs
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
vsÃÃrÃh…„fr‡…hqhÇur
Ã
Ã
Ã
Q
Ã
Ã
ÃÃÃÃÃÃÃÃÃrpu‚óÃPÃh…„ˆv‰‚Ãr‘v†‡r´

◊

◊

rq



• O ‡ur, obrigatoriamente, tem que estar na mesma linha de comando do
pode ter outro comando na linha.

vsÃ

e não

• Na linha doÃry†r não pode ter comandos
Pƒr…hq‚…r†ÃqrÇr†‡r

8‚qvom‚ ÃÃÃÃWr…qhqrv…hÆrÃ
rÃh…„ˆv‰‚ ÃÃÆrÃh…„ˆv‰‚Ãr‘v†‡r
…Ãh…„ˆv‰‚ ÃÃÃr‘v†‡v…Ãh…„ÃGrtt‰ry
y
y
r
‚ u
q T Ãh…„ˆv‰‚ÃÃÃr‘v†‡v…Ãh…„ÃB…h‰i‰ry
h 
o 8
 à ‘à h…„ˆv‰‚à à à à à à à à à à à r‘v†‡v…à h…„
h ‚
‰ j
@‘rpˆ‡i‰ry
o
6 h
Ã
‘
v
€
ÃÃÃr‘v†‡v…ÂÃqv…r‡y…v‚
 h qÃqv…
…
V t
Ã
Ã
Ã
‚ “à h…„ˆv‰‚à à à à à à à à à à à à h…„r‘v†‡v…à rà m‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã
‡v‰r…
Ã

ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃqhq‚†Ã‡h€hu‚Ã2Ã

sÃà h…„ˆv‰‚à Ãà Ãà à à Ãà à à à r‘v†‡v…Çrq‚à ‚ˆ
m‚


ÃÃÃÃqhq‚†

if ( -e arq_entrada) then
echo “ O arquivo existe”
else
echo “ O arquivo NÃO existe”
end
if ( -d Mail) then
echo “Isto é um diretório”
else
echo “Isto é um arquivo”
end

if ( ÄÃ-d Mail) then
echo “Isto é um arquivo”
else
echo “Isto é um diretório”
end
Tv‡pu

◊

†v‡puƇ…vt
ph†rÉhy‚… )
hom‚Ã
i…rhx†Ã‚i…vth‡y…v‚
ph†rÉhy‚…)

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

hom‚Ã!
i…rhx†
qrshˆy‡)
hom‚Ãqrshˆy‡
i…rhx†
rq†



Exemplo de um script utilizando o comando swich
set data = ‘ date | cut -c9-10‘
set texto = Relatorio do mes de
switch ($data)
case 01:
echo $texto Janeiro
breaksw
case 09:
echo $texto Setembro
breaksw
default:
echo Relatório Anual
breaksw
endsw
• Obs: A obrigatório a variável case ser string.
É obrigatório ter um i…rhx† para cada comando ph†r
A‚…rhpu

◊

s‚…rhpuÉh…vi‰ryÃr‘ƒ…r††m‚
p‚€hq‚Ãljh…vi‰ry
rq

@‘ƒ…r††m‚)
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o ÃÃÃÃ6†Ãv†‡…ˆo}r†Ãqr‡…‚Ãq‚Ãs‚…rhpu
6 h
Ã
†r…m‚Ãr‘rpˆ‡hqh†Ã‡h‡h†Ã‰r“r†
‘
v
€
 h
„ˆh‡‚†Ãs‚…r€Ã‚Á~€r…‚Ãqr
…
V t
Ã
Ã
ryr€r‡‚†Ãƒ…r†r‡r†Ãr‡…r
Ã
‚
Ã
…
Ã
Ã
Ã
Q
ƒh…r‡r†r†
Ã
Ã

– resultado de um comando
– valores ou ocorrências de um array



Exemplos:
• Utilizando array:
set tabela = (maria joão)
foreach pessoa ($tabela[*])
echo $pessoa
end
• Utilizando o resultado de um comando)
foreach arquivo ( `ls -l | awk ‘{print $3, $4, $8)’`)
echo $arquivo
end
• ÃIm‚Ãhá comandoóAPS´Ãpara C Shell
Xuvyr

◊

uvyrÃr‘ƒ…r††m‚
ho}r†
rq

‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h

◊

uvyrÃÇhÃ12à 
Çh
rpu‚óWhy‚…Ã2ÃÇh´
rq

€
h
…
t
‚
…
Q
Ã
Xuvyr

◊

uvyrà 
rpu‚ó8r‡…‚ÃqrÃ8‚€ƒˆ‡hom‚´
rpu‚óTryrpv‚rÃhƒom‚
qr†rwhqh´
rpu‚ó ÃÃI‚‡vpr´

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

rpu‚óÃÃThv…´
rpu‚Áó3ó
†r‡ÃS@TQÃ2ÃÇ1
†v‡puÃÇS@TQ

rq†
rq



while (1)
echo “ 1- Tabela de Orgaos “
echo “ 2 - Notice “
echo “ X - Sai “
echo -n “Selecione a opcao desejada -- “
set RESP = ($)
switch ($RESP)
case 1:
source jsi03e_carga; breaksw
case 2:
/usr/local/notice/manager ; breaksw
case X:
exit
default:
echo -n “ Opcao Invalida - Tecle enter “
set CONT = ($)
breaksw
endsw
end
• comando exit: sai do while sem ser pela condição definida na expressão
8‚€hq‚†Ãq‚ÃTuryy

◊

P†Ãp‚€hq‚†Ã†uryyÆr…m‚À‚†‡…hq‚†
qv‰vqvq‚†Ãr€Ã‰i…vh†Ãph‡rt‚…vh†)

–
–
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

6…„ˆv‰‚†ÃrÃqv…r‡y…v‚†
Tryrom‚

–

8‚€ivhom‚ÃrÂ…qrhom‚

–

D€ƒ…r††m‚

–

Trtˆ…hoh



• Para cada comando existem várias opções. Neste curso tentaremos mostrar as
opções mais utilizadas.
• Para conhecer outras opções ou maiores detalhes utilize o comando €h)
nome_comando

€hÃ

• teclas para utilizar no comando man :
.próxima linha

ENTER

.próxima página

space bar

.página anterior

/caracter especial ou /string

.continuar a busca

n

.cancelar pesquisa
P7T

CTRL B

.procuro string

q ou CTRL C

: Nem todos os comandos usam as opções da mesma maneira.
8‚€hq‚†

◊
◊

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

◊

◊
◊
◊
◊
◊
◊
◊

cd ls pwd mkdir
rmdir
cat cp csplit ln
6…„ˆv‰‚
mv rm split
awk cut grep sed
Tryrom‚
head ÃÃÃline tail uniq
wc
cat join paste
Eˆom‚
sort
P…qrhom‚
tr
dd
U…h†s‚…€hom‚ÃÃÃsed
cat echo
D€ƒ…r††m‚
chmod
Trtˆ…hoh
$ touch
Grv‡ˆ…h
sleep exit
Pˆ‡…‚†Ã
9v…r‡y…v‚Ã



• Os comandos de Diretórios e Arquivos já foram abordados anteriormente. Eles
podem ser utilizados sem restrições num shell.
Exemplos:

rm arquivo_old  /dev/null
ls -la
/bin/cat arquivo
/bin/mv arqvelho arqnovo
/bin/pwd
/bin/mkdir meudir

• Alguns lembretes:
cd

altera o diretório corrente

ls

lista o conteúdo do diretório

pwd

mostra qual é o diretório corrente

mkdir

cria diretório

rmdir

deleta diretório

cp

copia arquivo

mv

renomeia arquivo

rm

deleta arquivo
D€ƒ…r††m‚

◊

@8CP

ÃÃÃÃÃr†p…r‰rÃh…tˆ€r‡‚†Ãr€Ã†‡q‚ˆ‡

Tv‡h‘r)
rpu‚Ãb‚ƒo}r†dƇ…vt
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

Pƒo}r†)
)Ám‚Ãhqvpv‚hÈ€hÁ‚‰hÃyvuh
‚Ƈq‚ˆ‡Ãh‡r†ÃqrÃv€ƒ…v€v…Â
†‡…vtÃqrv‘hq‚ÂÃpˆ…†‚…ÁhÃyvuh
qhÀr†htr€Ãr†p…v‡h



Exemplos:
echo -n “Entre com a opção desejada = “
Entre com a opção desejada

Ð__

set dia = `date +%A`
echoÃóHoje é $dia”
Hoje é Monday
echo ³Bom dia´
echo “Os arquivos são: “ *
echo “Essa pessoa $nome é muito legal”  arq
D€ƒ…r††m‚

◊

86U

–
–

p‚ph‡rhÃrÃv€ƒ…v€r
m‚Ãhy‡r…hÃqhq‚†ÃU‚€hÃhƇqvÃr
hÃ…rƒ…‚qˆ“Á‚Ƈq‚ˆ‡

–
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

‰h……rÂÃh…„ˆv‰‚ÃrÁm‚Ãi…hÃhÃphqh
‡ryhÃq‚Çr…€vhy

Tv‡h‘r)
ph‡Ãb‚ƒo}r†dÃbÃÃsvyr ÃÃÃsvyr!Ãd
Pƒo}r†)
)Ãyv†‡hÃh†Ãyvuh†Ãq‚Ãh…„ˆv‰‚
ˆ€r…hq‚h†



• Exemplos
capt1 capit2  livro

livro irá conter capit1,2

ph‡

capt3  livro

anexa capit3 no livro

ph‡

capit1

lista capit1 no terminal

ph‡

-n capit1

lista capit1 numerando as linhas

ph‡

 arq1

ph‡Ã

direciona o stdin para o terminal e stdout
para arq1, assim tudo que for digitado
será gravado no arq1. Para encerrar
tecle CTRL D.
Trtˆ…hoh

◊

8CHP9

–

ƒh…hÇ‚…h…ÂÃh…„ˆv‰‚Ãq‚Æuryy
r‘rpˆ‡i‰ryÃpÁrpr††i…v‚Ãhy‡r…h…Ãh
ƒr…€v††m‚Ãq‚Ãh…„ˆv‰‚

‚
q
h
o

h
‰
6
Ã
‘
v

y
y
r
u
T

8
Ã
‚
j
o
h

€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

Tv‡h‘r)
pu€‚qÃb„ˆr€dƒr…hom‚ÃÃhpr††‚
h…„ˆv‰‚

Pƒo}r†)
„ˆr€)ÈȆˆi…v‚ÃtÃt…ˆƒ‚Â
‚ˆ‡…‚†ÃhÃhyy
‚ƒr…hom‚)ÃÃh‡…viˆv…ÃÃ…r€‚‰r…
2
hpr††‚)Ã…Ã…rhqÐÐ…v‡rÑ
r‘rpˆom‚



• ATENÇÃO: Se o seu shell for executar o comando FTP você deverá alterar a
permissão do arquivo que contém o username e a senha para que somente o dono
possa ler, gravar e executar.
Exemplos:
chmod u=rwx,go= arquivo
ls -la
-rwx------ 1 lilliam supsof

110 Sep 25 16:33 arquivo
Grv‡ˆ…h

◊

Ç1

–

qv…rpv‚hÂÇr…€vhyÃp‚€‚Ƈqv

@‘r€ƒy‚)
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

†r‡Ã‚ƒom‚Ã2ÃÇ1



Exemplos:
echo -n “Digite a opcao: “
set opcao = $
if ($opcao  9) then
echo “Opcao Invalida. Tecle enter para continuar”
$
endif
• Existem duas maneiras de trabalhar com este comando
• set opção = $
( neste caso, eu estou guardando o que o usuário digitou
•$
( Está é uma maneira de deixar a msg na tela até o usuário digitar alguma tecla.
Tryrom‚

◊

GDI@

–

p‚ƒvhÈ€hÃyvuhÃq‚ƇqvÃrÃt…h‰h
‚Ƈq‚ˆ‡

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

Tv‡h‘r)
yvrÃÃÃ1ÃÃƇqvÃÃÃ3ÃÃƇq‚ˆ‡
Tryrom‚

◊

C@69

–

†ryrpv‚hÃh†Ã Ã…v€rv…h†Ãyvuh†
qrÈ€Ãh…„ˆv‰‚

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

Tv‡h‘r)
urhqÃb‚ƒo}r†dƇqvÃÃÃ3ÃÃƇq‚ˆ‡

Pƒo}r†)
pÁ)Æryrpv‚hÃh†ÃÃƒ…v€rv…h†
p‚yˆh†Ãq‚Ƈqv
)Æryrpv‚hÃh†ÃÃƒ…v€rv…h†
yvuh†Ãq‚Ƈqv



• Exemplos
head -5 arquivo

(lista as 5primeiras linhas do arquivo
Tryrom‚

◊

U6DG

–

†ryrpv‚hÃh†Ã Ãyvuh†Ãsvhv†Ãqr
ˆ€Ãh…„ˆv‰‚

Tv‡h‘r)
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

‡hvyÃÃb‚ƒo}r†dÃƇqvÃÃ3ÃƇq‚ˆ‡

Pƒo}r†)
)Æryrpv‚hÃh†ÃÃ~y‡v€h†Ãyvuh†
q‚Ƈqv

ÃÃÃÃs)À‚†‡h…Ãh†Ãyvuh†Ã„ˆrÆm‚
hqvpv‚hq‚†Ãh‚Ãh…„ˆv‰‚



• Exemplos
tail -5 arquivo

(lista as 5 últimas linhas do arquivo)

tail -f /var/messages
Tryrom‚

◊

T@9

–

rqv‡hÃrÃhy‡r…hÃqhq‚†

Tv‡h‘r)
†rqÃb‚ƒo}r†dƇqvÃÃÃ3ÃÃƇq‚ˆ‡
Pƒo}r†)
y
ró†p…vƒ‡´)
y
r
‚ u
‚qrÆp…vƒ‡Ãƒ‚qrÆr…)
q T
h 
󆆇…vtfh‡vth†‡…vtf‚‰ht´
o 8
 Ã
h ‚ ³†‡…vtĈrÃr…‡rprÃjÃyvuhĈrÃqr‰r…i
‰ j
o
†r…Ãqryr‡hqhq´
6 h
Ã
‘
v
€
³††‡…vtÃhÆr…Ãqryr‡hqht´
 h
…
V t
Ã
sÃh…„ˆv‰‚)Ãp‚‡p€Ã‚†Ã†p…vƒ‡†Ãh
Ã
Ã
‚
Ã
…
Ã
†r…r€Ãr‘rpˆ‡hq‚†ÃIm‚Ȇh…
Ã
Ã
Q
Ã
Ã
h†ƒh†Ãqr‡…‚Ãq‚Ãh…„ˆv‰‚
Im‚Ȇh…ƇqvÃp‚€‚Ƈq‚ˆ‡



• O comando †rq muda a informação dentro de um arquivo ou tabela. Este comando
também deleta linhas de arquivos. Portanto pode ser utilizado como um programa
que atualiza campos ou deleta linhas.
• Exemplos:
•Ã†rqÃrós/café/chá/g´Ãentrada
Altera a palavra phsp para pui em todas as ocorrências (g) no stdin
•Ã†rqÃró/João/d´Ãentrada
Deleta todas as linhas do stdin que contém a palavra E‚m‚
•Ã†rqÃr ³s/devedor//g´Ãentrada
Altera a palavra qr‰rq‚… por nada (//), ou seja, sed deletou a palavra
•Ã†rqÃrÓs/cha/café”

r

“s/limao/mate/” arq_sala  arqsaida

•Ã†rqÃsÃarqcom entrada  arqsaida
Executa os comandos que estão no arquivo a…„p‚€.
arqcom:

s/shell/Shell/g - altera todas as ocorrências por (g)
s/Terça/terça/ - altera 1 ocorrência por linha

P7T

:Na ‚ƒom‚Ãs não usar aspas dentro do arquivo
Tryrom‚

◊

VIDR

–

†ryrpv‚hÃhƒrh†Ãˆ€hÂp‚……rpvh
qrÃphqhÃyvuhÃq‚Ƈqv
Pi…vth‡‚…vh€r‡rƇqvÃqr‰rÃr†‡h…
‚…qrhq‚Ãp‚€hq‚Æ‚…‡

Tv‡h‘r)
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

ˆv„Ãb‚ƒo}r†dƇqv
Pƒo}r†)
ˆ)Æryrpv‚hÃyvuh†Ã~vph†
p)Ãp‚‡hÂÁ~€r…‚ÃqrÉr“r†Ã„ˆr
phqhÃyvuhÆrÃ…rƒr‡r
q)Æryrpv‚hÃhƒrh†Ãh†Ãyvuh†
p‚€Ã€hv†ÃqrÈ€hÂp‚……rpvh
Tryrom‚

◊

BS@Q

–

†ryrpv‚hÃyvuh†Ãˆ†hq‚È€
~vp‚Ãp…v‡p…v‚ÃqrÆryrom‚

Tv‡h‘r)
t…rƒÃb‚ƒo}r†dƇ…vtÃƇqv

‚
q
h
o

h
‰
6
Ã
‘
v

y
y
r
u
T

8
Ã
‚
j
o
h

€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

Pƒo}r†)
p)Ãp‚‡hÂÁ~€r…‚ÃqrÉr“r†Ã„ˆr
‚Ƈ…vtÃhƒh…rpr
v)Ãvt‚…hȃƒr…ph†r
y)Ãyv†‡hÆ‚€r‡rÂÁ‚€rÃq‚†
h…„ˆv‰‚†Ã„ˆr††ˆr€Ã‚Ƈ…vt
ƒ…‚pˆ…hqh
)Áˆ€r…hÃphqhÃyvuhĈr
p‚‡p€Ã‚Ƈ…vtÃ…‚pˆ…hqh



• O comando t…rƒ é a ferramenta principal para extrair informações de campos de
dados, procurar cadeia de caracteres e escrever a informação em stdout.
• Exemplos:
grep “Mar*” arq_user - listará todas as linhas do arq_user que contém
palavras que contenham a string “Mar”
grep Maria arq*

- listará todas as linhas de arquivos que comecem
com arq que contenham a string Maria

grep -l Maria arquiv* - listará os nomes dos arquivos que contenham a
string Maria
grep -n Maria arq_user - listará todas as linhas do arq_user que
contenham a string Maria, numerando-as
grep $variável arq1 - listará todas as linhas do arq que contenham a
variável
grep -c Chico arq1 - conta o no. de vezes que a string Chico aparece no
arquivo
grep -i

maria arq1 - listará todas as linhas que contém a string maria
(maiúscula ou minúscula)
Tryrom‚

◊

BS@Q
Pƒo}r†)
‰)Ãyv†‡hÇ‚qh†Ãh†Ãyvuh†Ãq‚
h…„ˆv‰‚Ãr‘pr‡‚Ãj†Ã„ˆrÃp‚‡p€Ãh
†‡…vt

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

eyr‡…h)Ãyv†‡hÇ‚qh†Ãh†Ãyvuh†Ã„ˆr
vvpvr€Ãp‚€ÃhÃyr‡…hˆÆ‡…vt
T‡…vt)
ljh…vi‰ryà ³†‡…vtÃp‚€ƒ‚†‡h´
†‡…vt
³€r‡hph…hp‡r…r†´ÃÃÃ4ÃÃbh“dÃ

◊

t…rƒÃurhqÃyvrÆrqÇhvyÃrȁv„
‚ƒr…h€Ãr€Ãyvuh†



• Exemplos:
grep -v “Amélia” arq1 - lista todas as linhas do arqu1 exceto às
que contém a string “Amélia”
grep ^R arq1 - lista todas as linhas do arq1que começam com R
grep ”[a-z]” arq1 -
Tryrom‚

◊

8VU

–

†ryrpv‚hÃp‚yˆh†

Tv‡h‘r)
pˆ‡ÃÃb‚ƒo}r†dƇqv
Pƒo}r†)
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

p‘’)ÃqrsvrÃp‚yˆhÃvvpvhyÑÃr
p‚yˆhÃsvhyÃ’
q8uh…)ÃqrsvrÃqryv€v‡hq‚…
s‘’)ÃqrsvrÃph€ƒ‚ÃvvpvhyÑÃr
ph€ƒ‚ÃsvhyÃ’
†)ƈƒ…v€rÃyvuh†Ã„ˆrÁm‚
p‚‡p€Ãqryv€v‡hq‚…
Pi…vth‡‚…vh€r‡rÃqr‰rÆr…Ȇhq‚
p‚€Ãhƒom‚Ãq

P7T)ÃPÃp‚€hq‚Ãpˆ‡Ã‡…hihyuhÃp‚€
ÃÃÃÃÃÃÃÃÃÃp‚yˆh†



• O comando pˆ‡ corta arquivos em colunas. Também pode operar em cada
caractere ou campo, ou alguma combinação de ambos. Quando o arquivo tem algum
separador entre campos você pode selecioná-los através de pˆ‡
• Exemplos:
cut -f1,5 -d: arquivo- mostra campos de 1 a 5 (inclusive)
cut -c1-72 arquivo - mostra coluna de 1 a 72 ( inclusive)
cut -d: -s -f3,5 arquivo - mostra campos de 3 a 5 exceto as linhas que não
contém delimitador
OBS: Não é permitido o uso da opção p junto com a opção q.
Tryrom‚

◊

X8

–

p‚‡hÃyvuh†Ãƒhyh‰…h†Ãr
ph…hp‡r…r†ÃqrÃh…„ˆv‰‚†

Tv‡h‘r)
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

pÃb‚ƒo}r†dƇqv
Pƒo}r†)
p)Ãp‚‡hÃph…hp‡r…r†
y)Ãp‚‡hÃyvuh†
)Ãp‚‡hÃhyh‰…h†



• Exemplos:
grep -l Maria arqu* | wc -l - lista a qtd de linhas que contém a variável
Maria
cat arq l wc -l

- lista a qtd de linhas do arquivo arq
Tryrom‚

◊

TQGDU

–

p‚…‡hÂƇqvÃr€Ãh…„ˆv‰‚†
€r‚…r†Ãp‚‡rq‚ȀÁ~€r…‚
r†ƒrptsvp‚ÃqrÃyvuh†

Tv‡h‘r)
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

†ƒyv‡ÃÃb‚ƒo}r†dƇqvÃÃbƒ…rsv‘‚d
Pƒo}r†)
)Ãr†ƒrpvsvphÂÁ~€r…‚ÃqrÃyvuh†
qrÃphqhÃh…„ˆv‰‚ÃqrÆhtqhÃ9rshˆy‡
Ãyvuh†Ãƒ‚…Ãh…„ˆv‰‚
ƒ…rsv‘‚)Ã…rsv‘‚Ãq‚†Ã†‡q‚ˆ‡†
p…vhq‚†ÃPƈsv‘‚Ær…iÃhhÃhiÃh‡p
““ÃPÃqrshˆy‡Ãq‚Ã…rsv‘‚ÃpÑ



• O comando †ƒyv‡Ãcria o nome do 1o. arquivo do output combinando o prefixo mais
o sufixo aa, ab (p/ o 2o.) até zz.
• Exemplos:
split -10 arquivo (gera arquivos xaa, xab, …) cada um contendo 10 linhas
split -5 arquivo capit (gera arquivos capitaa, capitab,…) cada um contendo
5 linhas

O split quebra por quantidade de linhas e não por quantidade de arquivos.
Tryrom‚

◊

8TQGDU

–

†rƒh…h†Ãh…„ˆv‰‚†Ã†r€ƒ…rĈr
rp‚‡…h…È€hÃp‚€ivhom‚Ãr‡…r
†rˆ†Ãh…tˆ€r‡‚†ÃrÂÃp‚‡r~q‚Ãq‚
h…„ˆv‰‚

‚
q
h
o

h
‰
6
Ã
‘
v

y
y
r
u
T

8
Ã
‚
j
o
h

Tv‡h‘r)
p†ƒyv‡Ãb‚ƒo}r†dƇ…vt
bh…„tˆ€r‡‚†d

Pƒo}r†)

€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

sÃ…rsv‘‚)Ã…rsv‘‚Ãq‚†Ã†‡q‚ˆ‡†
p…vhq‚†ÃPƈsv‘‚Éh…vhÃqrÃÃjÃ((
9rshˆy‡Ã‘‘



• Exemplos
O arquivo livro contém:
Introdução,
Capítulo 1,
Capítulo 2,
Resumo.
csplit -f capit livro “/Capítulo /” “/Capítulo /”
resultado: capit00 (contém Introdução)
capit01 (contém Capítulo 1)
capit02 (contém Capítulo2 e Resumo)
csplit -f capit livro “%Capítulo 1%”
resultado: capit00 (contém Capítulo 1 Capítulo 2 e Resumo)
Tryrom‚

◊

8TQGDU
Pƒo}r†)
³h…t´)Ãp…vhÈ€Ãh…„ˆv‰‚Â…
h…tˆ€r‡‚Ãvpyˆ†v‰rÃPÃh…„ˆv‰‚
ƒ…rsv‘‚Ãp‚‡p€Ãh†Ãyvuh†

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

h‡r…v‚…r†Ãh‚Ã…v€rv…‚Ãh…tˆ€r‡‚
³Èh…tÈ´)Ãp…vhÈ€Ãh…„ˆv‰‚
p‚‡rq‚†Ãqhq‚†ÃhÃh…‡v…Ãq‚
h…tˆ€r‡‚

Im‚Ãsˆpv‚hÁ‚ÃA…rrÃ7T9
P…qrhom‚

◊

TPSU

–

‚…qrhÃrÃp‚€ivhÀ~y‡vƒy‚†
h…„ˆv‰‚†

Tv‡h‘r)
†‚…‡Ãb‚ƒo}r†dÃh…„ˆv‰‚†Ã

‚
q
h
o

h
‰
6
Ã
‘
v

y
y
r
u
T

8
Ã
‚
j
o
h

€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

Pƒo}r†)
i)Ãvt‚…hÃr†ƒho‚†Ãr€Ãi…hp‚
ƒh…hÃrp‚‡…h…ÃhÃ…v€rv…hˆ
~y‡v€hÃp‚yˆhÃq‚Ãph€ƒ‚
q)Ãpyh††vsvphȆhq‚Â…qr€
hyship‡vphÃT‚€r‡rÃyr‡…h†Ãqttv‡‚†
rÃr†ƒho‚†Ã†m‚Ãp‚†vqr…hq‚†Ãh
p‚€ƒh…hom‚
s)Ãhy‡r…hÇ‚qh†Ãh†Ãyr‡…h†
€v~†pˆyh†Ãƒh…hÀhv~†pˆyh†
h‡r†ÃqhÃp‚€ƒh…hom‚



• O comando †‚…‡ opera com caracter, campo ou em uma combinação dos dois.
Caso o arquivo classificado possua linhas duplicadas estas podem ser retiradas
através do comando ˆv„. Para tornar mais eficiente esse comando deve ser
utilizado após os dados terem sido selecionados (t…rƒ ou pˆ‡).
• Exemplos :
sort -nru arquivo - ordena o arquivo em ordem numérica decrescente e
deleta as linhas duplicadas.
sort -m arq1 arq2 - junta arq1 e arq2 e ordena
sort -f arq1 -o arq1_sort - ignora uppercase e grava o resultado em
arq1_sort.
P…qrhom‚

◊

TPSU
Pƒo}r†)
€)Ãwˆ‡hÇ‚q‚†Ã‚†Ãh…„ˆv‰‚†Ãqr
r‡…hqhÁˆ€Ã†yÃP†Ãh…„ˆv‰‚†Ãqr
r‡…hqhÃqr‰r€Ãr†‡h…
pyh††vsvphq‚†

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

)Â…qrhÂÃh…„ˆv‰‚
ˆ€r…vph€r‡r
…)Â…qrhÂÃh…„ˆv‰‚Ãr€Ã‚…qr€
qrp…r†pr‡r
ˆ)Ãqryr‡hÃyvuh†Ãqˆƒyvphqh†
‡)ÃqrsvrÃqryv€v‡hq‚…
xÃbph€ƒ‚fvvpvhyp‚yˆhfvvpvhyd
b‚ƒom‚d
ÃÃÃbÃph€ƒ‚fsvhyp‚yˆhfsvhyd
b‚ƒom‚dÃ)ÃÃqrsvrÃhÃpuh‰rÃq‚Æ‚…‡



• As opções válidas para a ‚ƒom‚Ãx são: b,d,f,n,r
• Os valores default para a opção -k:
cpo ini

começo da linha

col ini

1a. coluna do campo

cpo fim

final da linha

col fim

última coluna do campo

• Exemplos:
sort -k2,2f -k3 arquivo
sort -k1.1 -k2.4 arquivo
sort -rt’ ‘ -k3b -k4 arquivo
U…h†s‚…€hom‚

◊

US

–

‡…h†s‚…€hÃph…hp‡r…Â…Ãph…hp‡r…

Tv‡h‘r)
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

‡…õ†‡…vtfh‡vth¶Ãµ†‡…vtf‚‰h¶
1†‡qv3Ƈq‚ˆ‡



• O comando

‡…Ã traduz os dados de entrada caractere por caractere, com base em
tabelas de conversão (string) especificadas pelo usuário.

• Exemplos:
tr

‘(A-Z)’ ‘(a-z)’  arq1  arq1min

tr ‘(:)’

‘(t)’  cad1  cad1t
U…h†s‚…€hom‚

◊

99

–

p‚‰r…‡rÃrÃp‚ƒvhÃh…„ˆv‰‚

Tv‡h‘r)
qqÃÃvs2†‡qvÃÂs2†‡q‚ˆ‡
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

p‚‰2b‚ƒo}r†d
Pƒo}r†)
yph†r)Ãp‚‰r…‡rÂÃp‚‡r~q‚Ãq‚
h…„ˆv‰‚Ãh…hÀv~†pˆy‚
ˆph†r)Ãp‚‰r…‡rÂÃp‚‡r~q‚Ãq‚
h…„ˆv‰‚Ãh…hÀhv~†pˆy‚
h†pvv)Ãp‚‰r…‡rÃripqvpÃh…hÃh†pvv
vi€)Ãp‚‰r…‡rÃh†pvvÃh…hÃhÉr…†m‚
ripqvpÃqhÃD7H
Eˆom‚

◊

EPDI

–

wˆ‡hÃq‚v†Ãh…„ˆv‰‚†Ãp‚€ivhq‚
yvuhÃhÃyvuhÃP†Ãh…„ˆv‰‚†Ãqr‰r€
r†‡h…Â…qrhq‚†

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

Tv‡h‘r)
w‚vÃb‚ƒo}r†dÃÃh…„ˆv‰‚

ÃÃÃh…„ˆv‰‚!

Pƒo}r†)
‡8uh…)ÃqrsvrÃqryv€v‡hq‚…
hÁ‚Ãh…„ˆv‰‚)Ã…‚qˆ“È€hÃyvuh
qrÆhtqhÃh…hÃphqhÃyvuhÃq‚
h…„ˆv‰‚Ãr†ƒrpvsvphq‚Ãry‚Á
h…„ˆv‰‚Àr†€‚Ãh…h†Ãph€ƒ‚†
q‚Ãw‚vÃ„ˆrÁm‚Ãph†h€Ãp‚€
ruˆ€hÃyvuhÃq‚ˆ‡…‚Ãh…„ˆv‰‚
qrÃr‡…hqh



• Quando o w‚v encontra registros que se combinam nos 2 arquivos de entrada ele
cria um único registro contendo algum ou todos os campos dos dois registros. Para
utilizá-lo, os dois arquivos devem estar ordenados (utilize †‚…‡).
P7T

: Obrigatoriamente a opçãoÃh tem que vir antes da opção ‡.
Eˆom‚

◊

EPDI
Pƒo}r†)
‚Á‚Ãh…„ˆv‰‚ph€ƒ‚)Ãh†Ãyvuh†
qrÆhtqhÆm‚Ãp‚€ƒ‚†‡h†Ãƒryh
yv†‡hÃq‚†Ãph€ƒ‚†Ãr†ƒrpvsvphqh†

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

hÉh…vi‰ry
h…„ˆv‰‚ph€ƒ‚)Ãh…hÃqrsvv…
€hv†Ãph€ƒ‚†Ã†rƒh…r‚†Ãƒ‚…
i…hp‚ˆÉt…tˆyh
 Ãph€ƒ‚ˆÃ!Ãph€ƒ‚)Ãsh“ÂÃw‚v
qrÃ!Ãh…„ˆv‰‚†Ãˆ†hq‚ÂÃph€ƒ‚
r†ƒrpvsvphq‚ÁhÉh…vi‰ryÃph€ƒ‚
q‚Ãh…„ˆv‰‚à à ˆÃh…„ˆv‰‚Ã!Ã!



• Exemplos:
h…„fr‡ )

Aldo:HC

h…„fr‡!)

Aldo:enfermeiro:7234

Bruno:IMECC

João:digitador:7111

João:CCUEC

Ricardo:médico:7323

join -t: arq_ent1 arq_ent2  arq_saida
h…„†hvqh)

vazio

join -a1-t: arq_ent1 arq_ent2  arqsaida
h…„†hvqh)

Aldo:HC:enfermeiro:7234
Bruno:IMECC:__________
João:CCUEC:digitador:7111

join -o 1.1 1.2 2.3 -t”:” arq_ent1 arq_ent2  arqsaida
h…„†htqh)

Aldo:HC:7234
João:CCUEC:7111
Eˆom‚

◊

Q6TU@

–

hr‘hÀ~y‡vƒy‚†Ãh…„ˆv‰‚†Ãp‚yˆh
ƒ‚…Ãp‚yˆh

Tv‡h‘r)
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

ƒh†‡rÃb‚ƒo}r†dÃÃh…„ˆv‰‚
h…„ˆv‰‚!
Pƒo}r†)
q8uh…)ÃqrsvrÃqryv€v‡hq‚…
†)Ãwˆ‡hÃyvuh†Ã†ˆi†r„ˆr‡r†Ãq‚
h…„ˆv‰‚



• Exemplos :
h…„fr‡ )

Aldo:HC

h…„fr‡!)

Bruno:IMECC

Aldo:enfermeiro:7234
João:digitador:7111

paste -d “/” arq_ent1 arq_ent2  arq_saida
Aldo:HC/Aldo:enfermeiro:7234

h…„f†hvqh)ÃÃ

Bruno:Imecc/João:digitador:7111
paste -s -d “/” arq_ent1 arq_ent2 
h…„f†hvqh)ÃÃ

Aldo:HC/Bruno:Imecc

Aldo:Enfermeiro:7234/João:digitador:7111
Tryrom‚ÃrÃD€ƒ…r††m‚

◊

6XF

–

yvtˆhtr€ÃqrÃ…‚pr††h€r‡‚Ãr
ƒ…‚pˆ…hÃqrÃhq…}r†Ã@p‚‡…h
yvuh†Ã‚†Ãh…„ˆv‰‚†ÃqrÃr‡…hqh
„ˆrÃp‚€ivh€Ãp‚€Ãˆ€Ãƒhq…m‚
r†ƒrpvsvphq‚ÃrÃr‡m‚Ãr‘rpˆ‡hÃh†
ho}r†Ãqrsvvqh†

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

Tv‡h‘r)
hxÃb‚ƒo}r†dõƒhq…m‚¶Ã”sÃt€
µƒt€¶–Ƈqv
Pƒo}r†)
A8uh…)ÃqrsvrÃqryv€v‡hq‚…
sÃt€)Ãh…„ˆv‰‚ĈrÃp‚‡p€Ãh†
ho}r†ÃhÆr…r€Ãr‘rpˆ‡hqh†Ãƒry‚
p‚€hq‚Ãhx
µƒt€¶)Æm‚Ãh†Ãho}r†ÃhÆr…r€
r‘rpˆ‡hqh†Ãƒry‚Ãhx



awk -F: ‘{print $5 $1}’ arq_fun
awk -F: ‘{print $2 “ “ $1}’ arq_fun
awk -F: {‘$1 ~/e|a/’} arq_fun
awk -F: ‘{print NR,NF,$0}’ arq_fun
awk -F: ‘{print $1  “matr“; print $2  “nome”}’ arq_fun
awk -F: ‘{printf “%15s %10sn”, $1, $3}’ arq1
awk -F: ‘/smith+ern/’ arq1
awk -F: ‘/amel??/’ arq_fun
awk -F: ‘{printf (“nome eh %s ramal %5dn “, $2,$4)} arq_fun
awk -F: ‘$3 ~/Oct/ {print $2 $3} ‘ arq1
Tryrom‚ÃrÃD€ƒ…r††m‚

◊

Uvƒ‚†ÃqrÃhq…}r†

µ†‡…vt¶

‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h
€
h
…
t
‚
…
Q
Ã

µ†‡…vt †‡…vt!¶
µ†‡…vt 4¶
µ†‡…vt •†‡…vt!¶
µ†‡…vt bpuh… puh…!d¶
µ†‡…vt bcepuh… puh…!d¶



Tipos de padrões:
•Ãµ†‡…vt¶ : grava em stdout todas as linhas do stdin que contém pelo menos uma
ocorrência do string.
•Ãµ†‡…vt †‡…vt!¶ : grava em stdout as linhas que contém o string1 seguido por um
ou mais caracteres que precede o sinal de + e termina com o string2.
•Ãµ†‡…vt 4¶Ã: grava em stdout as linhas que contém o string1 seguido por nenhum
ou um caracter que precede o sinal ?
•Ãµ†‡…vt

•†‡…vt!¶

: grava em stdout as linhas que contém o string1 e/ou o string2.

•Ãµ†‡…vt bpuh… puh…!d¶ : grava em stdout as linhas que contém o string1 seguido
por qualquer caracter que esteja entre char1 e char2 inclusive (char1 e char2 devem
estar em ordem)
•Ãµ†‡…vt bcepuh… puh…!d¶ : grava em stdout as linhas que contém o string1 seguido
por qualquer caracter que m‚ esteja entre char1 e char2 inclusive (char1 e char2
devem estar em ordem).
Tryrom‚ÃrÃD€ƒ…r††m‚

◊

Uvƒ‚†ÃqrÃhq…}r†

µÇ ×puh… ¶
µÇ ×epuh… ¶

‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h
€
h
…
t
‚
…
Q
Ã

µÇ!×puh… Ƕ
µÇ Ã22󆇅vt ´¶
µÇ Ã32ópuh… ´¶
µÇ Ã22󆇅vt ´ÃÉÉÃÇ!ÃÃ22󆇅vt!´¶



Tipos de padrões:
•Ã µÇ à —puh… ¶ : grava em stdout todos os registros que contém no 1o. campo o
caracter char1 ou um string .
•ÃµÇ ×epuh… ¶ : grava em stdout todos os registros que m‚ contém no 1o. campo o
caracter char1 ou um string.
•Ã µÇ!à —puh… Ƕ : grava em stdout todos os registros que contém o último caracter
igual a char1 ou string.
•Ã µÇ à 22à ³†‡…vt
igual ao string1
•ÃµÇ Ã32ópuh…
igual a char1

´Ã µ

´Ãµ

: grava em stdout todos os registros que contém o 1o. campo

: grava em stdout todos os registros que o 1o. campo é maior ou

•ÃµÇ Ã22󆇅vt ´ÃÉÉÃÇ!ÃÃ22󆇅vt!´Ã ‘ : grava em stdout todos os registros que o
1o. campo é igual ao string1 e o 2o. é igual o string2.”
Tryrom‚ÃrÃD€ƒ…r††m‚

◊

Uvƒ‚†ÃqrÃho}r†ÃÃPVUQVU

–

D€ƒ…r††m‚ÃqrÃph€ƒ‚†Ã‰h…vi‰rv†Ãr
p‚†‡h‡r†)
µ”ƒ…v‡ÃÇ Ã³Ã³ÃÇ!–¶

–
‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h
€
h
…
t
‚
…
Q
Ã

Srqv…rpv‚h€r‡‚)
µ”ƒ…v‡ÃÇ Ã3óh…„f‚ˆ‡ƒˆ‡´–¶

–

D†‡…ˆo}r†Ãh…v‡€p‡vph†)
µ”ƒ…v‡ÃÇ Ã2ÃÇ!–¶
µ”ƒ…v‡Ã³…h´ÃÇ Ã³€rqvh)´ÃÇ!ÃÃÇ–¶

–

Wh…vi‰rv†Ãr†ƒrpvhv†)
µ”ƒ…v‡ÃISÃÇ–¶



Tipos de ações Pˆ‡ƒˆ‡Ã)
Impressão de campos, variáveis e constantes:
µ”Ã…v‡ÃÇ Ã³Ã³ÃÇ!–¶

: grava em stdout o campo 1 e campo 2 separados por um espaço

em branco.
Redirecionamento:
µ”Ã…v‡ÃÃÇ Ã3óh…„‚ˆ‡ƒˆ‡´–õ

: redireciona o campo 1 para o stdout arqoutput .

Instruções aritméticas:
µ”à ƒ…v‡Ã Ã Ç Ã 2à à Ç!à –à µ

: o campo 1 é o resultado da multiplicação do campo1 com o

campo2.
: grava em stdout o campo 1 precedido do
string …h eÃÃo string €pqvh é o resultado da divisão do campo $2 pelo campo $3 .

µ”ƒ…v‡ÃÃó…h´ÃÃÇ Ã³€pqvhÃ)´ÃÃÇ!ÃÃÇÖõ

Variáveis Especiais:
: grava em stdout os registros de stdin numerado.

µ”Ã…v‡ÃÃISÃÇÃÖõÃ
Tryrom‚ÃrÃD€ƒ…r††m‚

◊

Uvƒ‚†ÃqrÃho}r†

–

8‚ph‡rhom‚ÃqrÃph€ƒ‚†)
µ”ƒ…v‡ÃÇ Ã22ÃÇ ÃÇ!–¶

–
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

D€ƒ…v€v…ÃyvuhÃr€Ãi…hp‚)
µ”ƒ…v‡Ã³Ã´–¶

–

D€ƒ…r††m‚Ãs‚…€h‡hqhÃqrÃph€ƒ‚†
‰h…vi‰rv†Ã‚ˆÃp‚†‡h‡r†)
µ”ƒ…v‡sóÈ

$†c´ÃÇ –¶

µ”ƒ…v‡sóÈ!qÃÈ$†c´ÃÇÇ!
Ç –¶
µ”ƒ…v‡sóÈ!†ÃÈ#qcÃ³IPH@´
³S6H6G´–¶



seqüência

significado

n

nova linha

b

backspace

t

tab
Tryrom‚ÃrÃD€ƒ…r††m‚

◊

Uvƒ‚†ÃqrÃho}r†
7@BDI
7@BDIÔÃATÃ2ó)´´
”ƒ…v‡sóÈ!†ÃÈ$†c´Ã³IPH@´

‚
q
h
o

h
‰
6
Ã
‘
v

y
y
r
u
T

8
Ã
‚
j
o
h

€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

³S6H6G´–
”ƒ…v‡sóÈ!†ÃÈ$†c´ÃÇ!ÃÇ –

@I9
@I9Ôƒ…v‡sóÈ!†´Ã³sv€Ãqr
…ryh‡y…v‚´–
@I9Ôƒ…v‡Ã³sv€ÃqrÃ…ryh‡y…v‚´–



∗7rtv
Ações que devem ser executadas antes do stdin ser lido. Na execução de
mais de uma ação ela deve estar entre colchetes.
∗@q
Ações que devem ser executadas após o stdin ser lido. Se for executar mais
de uma ação ela deve estar entre colchetes.
Tryrom‚ÃrÃD€ƒ…r††m‚

◊

Uvƒ‚†ÃqrÃho}r†

–

D†‡…ˆo}r†Ãp‚qvpv‚hv†)
vsÃr‘ƒ…r††m‚Ôho}r†–Ãbry†r
”ho}r†–d

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

vsÃÇ ÃÃÄ2ÃÃ…r‰Ã”
ƒ…v‡Ã³Ã³
ƒ…r‰Ã2ÃÇ –

–

Wh…vi‰rv†Ãr†ƒrpvhv†)
IS)Á~€r…‚ÃqhÃyvuhÃ
ÃÃÃÃÃÃÃÃp‚……r‡r
IA)Ĉh‡vqhqrÃqrÃph€ƒ‚†
ÃÃÃÃÃÃÃqhÃyvuh
ATÃ2óph…hp‡r…´)Ãqrsvr
ÃÃÃÃÃÃÃÃÃqryv€v‡hq‚…
@‘r€ƒy‚†ÃqrÃs‚…€h‡hom‚
ƒ…v‡s
s€‡

Ç

ÃÃÃ…v‡sõ”Ãs€‡Ç –¶

Èp

(

ÃÃÃh

Èq

($ ÃÃÃ( qrpv€hyÃv‡rv…‚

È$q

($ ÃÃÃiii(

y
y È%q
r
‚ u
q T
h  Èr
o 8
 Ã
h ‚
‰ j
o
6 h Ès
Ã
‘
v
€
 h
…
V t È!s
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

(

ph…hp‡r…Ã6T8DD

ÃÃÃ(

($ ÃÃÃ($r
ÃÃÃÃÃÃr‘ƒ‚rpvhom‚
($ ÃÃÃ($
($ ÃÃÃ($
ÃÃÃÃÃÃÃÃÃÃÃÃÁ‡‚Ãsyˆ‡ˆh‡r
@‘r€ƒy‚†ÃqrÃs‚…€h‡hom‚
ƒ…v‡s

s€‡

Ç

ƒ…v‡sõ”Ãs€‡Ç –¶

Ȇ

Ehrv…‚

Ehrv…‚

È

Æ

È Ã†
y
y
r
‚ u ÈÆ
q T
h 
o 8 È Ã†
 Ã
h ‚
‰ j È Ã†
o
6 h
Ã
‘
v
€
ÈÈ
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

Ehrv…‚

†‡…vt

Ehrv…‚

Ehrv…‚

Ehrv…‚

Ehrv…‚

Eh

Ehrv…‚

Eh

Ehrv…‚

Eh

Ehrv…‚

È
8‚€hq‚ÉvÃr€Ã€‚q‚
ih‡pu

◊

V‡vyv“hq‚ÂÃrqv‡‚…Év)

ÃÃÉvÃÃh…„ˆv‰‚ÃÃ1ÃÃp‚€hq‚†f‰vÃ3ÉÄ
y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

qr‰ˆyy

◊

h…„ˆv‰‚Ãp‚€hq‚†f‰v)

/FIM
dd
^[
:x



• Comandos vi:
‰v

abre o arquivo e executa os comandos gravados no arquivo comandos_vi

3ÉÄÃqr‰ˆyy - se a execução do vi der algum erro ele joga fora as
mensagens de erro

- representa a tecla ESC (digitar CTRL v CTRL [ )

ebÃ
)‘

- sai do editor vi e salva o arquivo
A‚…€h‡‚Ãq‚Ãp‚€hq‚Ãqh‡r

gqh‡rÃÈ hgÃÃ23ÃUˆr
gqh‡rÃÈ 6gÃÃ23ÃUˆr†qh’
gqh‡rÃÈ igÃÃ23ÃTrƒ

y
y
r
‚ u
q T
h 
o 8
 Ã
h ‚
‰ j
o
6 h
Ã
‘
v
€
 h
…
V t
Ã
Ã
Ã
‚
Ã
…
Ã
Ã
Ã
Q
Ã
Ã

gqh‡rÃÈ 7gÃÃ23ÃTrƒ‡r€ir…
gqh‡rÃÈ pgÃÃ23 ÃUˆrÃTrƒÃ à $)$')##Ã



gqh‡rÃÈ qgÃÃ23Ã ÃÃÃÃÃqvh
gqh‡rÃÈ 9gÃÃ23Ã( ('Àr†qvhh‚
gqh‡rÃÈ wgÃÃÃ23Ã!$#
gqh‡rÃÈ €gÃ23Ã(ÃÃÃÃÀr†
gqh‡rÃÈ ƒgÃÃ23ÃQH
gqh‡rÃÈ VgÃ23Ã%
gqh‡rÃÈ ’gÃÃ23Ã('ÃÃÃÃÃÃh‚



O default do comando date é :
%a %b %d %T %Z %Y
Srsr…rpvh†

◊

VIDYÃQ…‚t…h€hom‚ÃTuryy

– Lowell Jay Arthur
‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h
€
h
…
t
‚
…
Q
Ã
8‚€hq‚†Ã‰v

‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h
€
h
…
t
‚
…
Q
Ã



DID8D6I9PÃPÃWD

vi filename

abre ou cria um arquivo

vi +18 filename

abre arquivo na linha 18

vi +/”frigorífico” filename

abre o arquivo na 1a. ocorrência de “frigorífico”

view filename

abre o arquivo somente para leitura
8PH6I9PTÃ9@Ã8VSTPS

h

move à esquerda

j

move para baixo

k

move para cima

l

move à direita

w

move uma palavra à direita

W

move uma palavra à direita (além da pontuação)

b

move uma palavra à esquerda

B

move uma palavra à esquerda (além da pontuação)

Return

move uma linha abaixo

Back Space

move um caracter à esquerda

Space Bar

move um caracter à direita

H

move para o início da tela

M

move para o meio da tela

L

move para o fim da tela

Ctrl-F

avança uma tela

Ctrl-D

avança meia tela

Ctrl-B

retorna uma tela

Ctrl-U

retorna meia tela
8‚€hq‚†Ã‰v

‚
q
h
o

h
‰
6
Ã
‘
v

V
Ã
Ã
Ã
Ã
Ã
Ã
Ã
Ã

y
y
r
u
T

8
Ã
‚
j
o
h
€
h
…
t
‚
…
Q
Ã



DIT@SDI9PÃ86S68U@SÃ@ÃGDIC6T

a

inseri caracter à direita do cursor

A

inseri caracter à direita do cursor e sinaliza fim de inha

I

inseri caracter à esquerda do cursor

I

inseri caracter à esquerda do cursor e sinaliza fim de inha

o

inseri linha abaixo do cursor

O

inseri linha acima do cursor
6GU@S6I9PÃPÃU@YUP

cw

altera palavra ( ou parte da palavra à direita do cursor

cc

altera linha

C

altera parte da linha à direita do cursor

s

substitui string que o cursor está posicionado

r

repete string que o cursor está com um outro caracter

r-Return

para linha

J

junta a linha corrente com a linha acima

xp

muda o caracter que o cursor está posicionado com o
caracter à direita

-

altera letra (upper ou lower)

u

desfaz o comando anterior

U

desfaz todas as alterações da linha

:u

desfaz o comando anterior da última linha

More Related Content

What's hot

Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
Tutorial dev cpp   002 - criação, leitura e alteração de arquivosTutorial dev cpp   002 - criação, leitura e alteração de arquivos
Tutorial dev cpp 002 - criação, leitura e alteração de arquivosFlávio Freitas
 
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...tdc-globalcode
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoRafael Jaques
 
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018Tchelinux
 
Curso de shell
Curso de shellCurso de shell
Curso de shellTiago
 
Gabarito simulado lpi-1
Gabarito simulado lpi-1Gabarito simulado lpi-1
Gabarito simulado lpi-1paradamonstro
 
Definição de processos
Definição de processosDefinição de processos
Definição de processosRodrigo Almeida
 
PHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicaçõesPHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicaçõesrjsmelo
 
Gerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarmanGerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarmanJuliano Atanazio
 
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema cargaAdequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema cargaLucas Brasilino
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)Sérgio Silva
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à ShellscriptVinícius Hax
 
Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?Juliano Atanazio
 

What's hot (18)

Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
Tutorial dev cpp   002 - criação, leitura e alteração de arquivosTutorial dev cpp   002 - criação, leitura e alteração de arquivos
Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
 
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
TDC2017 | POA Trilha Programacao Funicional - (Nunca) Ouvi falar de Rust... m...
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
 
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
Introdução ao SystemTap - João Avelino Bellomo Filho - Tchelinux Caxias 2018
 
Shell script
Shell scriptShell script
Shell script
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
 
Replicação PostgreSQL com RepManager
Replicação PostgreSQL com RepManagerReplicação PostgreSQL com RepManager
Replicação PostgreSQL com RepManager
 
Gabarito simulado lpi-1
Gabarito simulado lpi-1Gabarito simulado lpi-1
Gabarito simulado lpi-1
 
Definição de processos
Definição de processosDefinição de processos
Definição de processos
 
PHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicaçõesPHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicações
 
Gerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarmanGerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarman
 
Por que PostgreSQL?
Por que PostgreSQL?Por que PostgreSQL?
Por que PostgreSQL?
 
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema cargaAdequação do servidor Proxy/Cache Squid a redes de extrema carga
Adequação do servidor Proxy/Cache Squid a redes de extrema carga
 
O Que é Shell (bash)
O Que é Shell (bash)O Que é Shell (bash)
O Que é Shell (bash)
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à Shellscript
 
Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?Por que Python? Vamos Conhecer? Vamos Aprender?
Por que Python? Vamos Conhecer? Vamos Aprender?
 
Git 101
Git 101Git 101
Git 101
 
Lab ect 02 pt
Lab ect 02 ptLab ect 02 pt
Lab ect 02 pt
 

Viewers also liked

Curso Básico/Intermediário Linux - Colmeia 2008 - Emacs
Curso Básico/Intermediário Linux -  Colmeia 2008 - EmacsCurso Básico/Intermediário Linux -  Colmeia 2008 - Emacs
Curso Básico/Intermediário Linux - Colmeia 2008 - EmacsMarco Carvalho de Oliveira
 
Soa cap2 administracao de sistemas2 (slides)
Soa cap2 administracao de sistemas2 (slides)Soa cap2 administracao de sistemas2 (slides)
Soa cap2 administracao de sistemas2 (slides)portal_Do_estudante
 
Protocolo DNS
Protocolo DNSProtocolo DNS
Protocolo DNSBiel2013a
 
Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...
Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...
Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...Giovanni Bassi
 
Programação em Shell Script
Programação em Shell ScriptProgramação em Shell Script
Programação em Shell ScriptReinaldo Lima
 
Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell scriptbrunobione
 
Linux - Permissões, Usuários, Grupos e Quotas
Linux - Permissões, Usuários, Grupos e QuotasLinux - Permissões, Usuários, Grupos e Quotas
Linux - Permissões, Usuários, Grupos e QuotasFrederico Madeira
 
POS 420 Week 3 Individual Linux Script Worksheet 2015 version
POS 420 Week 3 Individual Linux Script Worksheet 2015 versionPOS 420 Week 3 Individual Linux Script Worksheet 2015 version
POS 420 Week 3 Individual Linux Script Worksheet 2015 versionnannettesetti
 
Minicurso Shell Script
Minicurso Shell ScriptMinicurso Shell Script
Minicurso Shell ScriptLuís Eduardo
 
Linux - Servidor de FTP VSFTPD
Linux - Servidor de FTP VSFTPDLinux - Servidor de FTP VSFTPD
Linux - Servidor de FTP VSFTPDFrederico Madeira
 
Shell Script - Controle de fluxo
Shell Script - Controle de fluxoShell Script - Controle de fluxo
Shell Script - Controle de fluxoFrederico Madeira
 

Viewers also liked (20)

Curso Básico/Intermediário Linux - Colmeia 2008 - Emacs
Curso Básico/Intermediário Linux -  Colmeia 2008 - EmacsCurso Básico/Intermediário Linux -  Colmeia 2008 - Emacs
Curso Básico/Intermediário Linux - Colmeia 2008 - Emacs
 
Ruby e xmpp
Ruby e xmppRuby e xmpp
Ruby e xmpp
 
Soa cap2 administracao de sistemas2 (slides)
Soa cap2 administracao de sistemas2 (slides)Soa cap2 administracao de sistemas2 (slides)
Soa cap2 administracao de sistemas2 (slides)
 
Aula dns
Aula dnsAula dns
Aula dns
 
Minicurso Linux
Minicurso Linux Minicurso Linux
Minicurso Linux
 
Vim
VimVim
Vim
 
Porque VIM?
Porque VIM?Porque VIM?
Porque VIM?
 
Protocolo DNS
Protocolo DNSProtocolo DNS
Protocolo DNS
 
Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...
Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...
Nunca fora do ar: como manter uma aplicação sempre disponível com Continuous ...
 
Bash for Developers
Bash for DevelopersBash for Developers
Bash for Developers
 
shell bash Fpar aula6
shell bash Fpar aula6shell bash Fpar aula6
shell bash Fpar aula6
 
Shell script
Shell scriptShell script
Shell script
 
Programação em Shell Script
Programação em Shell ScriptProgramação em Shell Script
Programação em Shell Script
 
Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell script
 
Linux - Permissões, Usuários, Grupos e Quotas
Linux - Permissões, Usuários, Grupos e QuotasLinux - Permissões, Usuários, Grupos e Quotas
Linux - Permissões, Usuários, Grupos e Quotas
 
POS 420 Week 3 Individual Linux Script Worksheet 2015 version
POS 420 Week 3 Individual Linux Script Worksheet 2015 versionPOS 420 Week 3 Individual Linux Script Worksheet 2015 version
POS 420 Week 3 Individual Linux Script Worksheet 2015 version
 
Servidor dns
Servidor dnsServidor dns
Servidor dns
 
Minicurso Shell Script
Minicurso Shell ScriptMinicurso Shell Script
Minicurso Shell Script
 
Linux - Servidor de FTP VSFTPD
Linux - Servidor de FTP VSFTPDLinux - Servidor de FTP VSFTPD
Linux - Servidor de FTP VSFTPD
 
Shell Script - Controle de fluxo
Shell Script - Controle de fluxoShell Script - Controle de fluxo
Shell Script - Controle de fluxo
 

Similar to Programacao c shell

Prog shell
Prog shellProg shell
Prog shellTiago
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1Leo Amorim
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Leo Amorim
 
O Que é shell - bash
O Que é shell - bashO Que é shell - bash
O Que é shell - bashSérgio Silva
 
Apostila comandos unix
Apostila   comandos unixApostila   comandos unix
Apostila comandos unixgravetim
 
Guia com mais de 500 comandos do linux explicados computeiro da depressão
Guia com mais de 500 comandos do linux explicados   computeiro da depressãoGuia com mais de 500 comandos do linux explicados   computeiro da depressão
Guia com mais de 500 comandos do linux explicados computeiro da depressãoJesser Martins Medeiros
 
Comandos básicos linux
Comandos básicos linuxComandos básicos linux
Comandos básicos linuxLuciano Souto
 
Trabalhando na Linha de comando
Trabalhando na  Linha de comandoTrabalhando na  Linha de comando
Trabalhando na Linha de comandoSoftD Abreu
 
Apostila introducao-shell
Apostila introducao-shellApostila introducao-shell
Apostila introducao-shellMarcio Pereira
 
OpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlayOpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlayDiego Santos
 
Open ldap criando e explorando um overlay
Open ldap   criando e explorando um overlayOpen ldap   criando e explorando um overlay
Open ldap criando e explorando um overlayMarcelo Fleury
 
Guia 500 comandos_linux
Guia 500 comandos_linuxGuia 500 comandos_linux
Guia 500 comandos_linuxDario Nakazima
 
Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandosAndreiaOliveira94
 
Manual UFCD 0839.pptx
Manual UFCD 0839.pptxManual UFCD 0839.pptx
Manual UFCD 0839.pptxFormador2
 
Slide minicursocalourosufpa2011
Slide minicursocalourosufpa2011Slide minicursocalourosufpa2011
Slide minicursocalourosufpa2011Diego Damasceno
 

Similar to Programacao c shell (20)

Prog shell
Prog shellProg shell
Prog shell
 
Comandos Linux Parte 1
Comandos Linux Parte 1Comandos Linux Parte 1
Comandos Linux Parte 1
 
Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1Aula - Comandos Linux - Parte 1
Aula - Comandos Linux - Parte 1
 
O Que é shell - bash
O Que é shell - bashO Que é shell - bash
O Que é shell - bash
 
Apostila comandos unix
Apostila   comandos unixApostila   comandos unix
Apostila comandos unix
 
Comandos Unix
Comandos UnixComandos Unix
Comandos Unix
 
Guia com mais de 500 comandos do linux explicados computeiro da depressão
Guia com mais de 500 comandos do linux explicados   computeiro da depressãoGuia com mais de 500 comandos do linux explicados   computeiro da depressão
Guia com mais de 500 comandos do linux explicados computeiro da depressão
 
Comandos básicos linux
Comandos básicos linuxComandos básicos linux
Comandos básicos linux
 
Trabalhando na Linha de comando
Trabalhando na  Linha de comandoTrabalhando na  Linha de comando
Trabalhando na Linha de comando
 
Tutorial Shell Script
Tutorial Shell ScriptTutorial Shell Script
Tutorial Shell Script
 
Apostila introducao-shell
Apostila introducao-shellApostila introducao-shell
Apostila introducao-shell
 
Comandos Linux
Comandos LinuxComandos Linux
Comandos Linux
 
OpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlayOpenLDAP, criando e explorando um overlay
OpenLDAP, criando e explorando um overlay
 
Open ldap criando e explorando um overlay
Open ldap   criando e explorando um overlayOpen ldap   criando e explorando um overlay
Open ldap criando e explorando um overlay
 
Linux shell
Linux shellLinux shell
Linux shell
 
Guia 500 comandos_linux
Guia 500 comandos_linuxGuia 500 comandos_linux
Guia 500 comandos_linux
 
Ficha de trabalho so 6 m4 linux comandos
Ficha de trabalho so 6 m4   linux comandosFicha de trabalho so 6 m4   linux comandos
Ficha de trabalho so 6 m4 linux comandos
 
Manual UFCD 0839.pptx
Manual UFCD 0839.pptxManual UFCD 0839.pptx
Manual UFCD 0839.pptx
 
Slide minicursocalourosufpa2011
Slide minicursocalourosufpa2011Slide minicursocalourosufpa2011
Slide minicursocalourosufpa2011
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 

Programacao c shell