Escolar Documentos
Profissional Documentos
Cultura Documentos
O
81,;$YDQoDGR
O
H
R K
G 6
D
–
o & 3URJUDPDomR&6KHOO
Q
D R
Y j
o
$ D
[
L P
Q D
U
8
J
R
U
3
– DXWRUDV
– &ULVWLDQD0XQKR](XJrQLR
– /LOOLDP3DOHUPR
O
O
H
R K
G 6
D
o &
Q
D R
Y j
o
$
D
[
L P
Q D
U
8
J
R
U
3
2TXHp6KHOO"
◊ 3URJUDPDTXHFRQHFWDHLQWHUSUHWD
FRPDQGRV
◊ /LQJXDJHPGHSURJUDPDomR
FRPSOHWDLQWHUSUHWDGD
– possui variáveis
O
O – construções condicionais e
H
R K interativas
G 6
D
o & – ambiente adaptável ao usuário
Q
D R
Y j
◊ 8PDGDVOLQJXDJHQVRULJLQDLVGH
o
$ D
TXDUWDJHUDomR*/
[
L P
Q D ◊ 6LPSOLFLGDGHGR6KHOO
U
8
J
R
– pipeline
U
3
– sistemas de arquivos
– sistema operacional UNIX
• 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.
3URGXWLYLGDGH
◊ /LQJXDJHPLQWHUSUHWDGDQmR
FRPSLODGD
◊ 8PSURJUDPDGRUPpGLRSRGH
GXSOLFDURXWULSOLFDUVXD
SURGXWLYLGDGH
O
O
H
R K
G 6
D
o &
◊ &RPSDUDomRGH%UXFH&R[SDLGR
Q 2EMHWLYH&
D R
Y j
o
$ D – Shell: linha de código
[
L P – Linguagem O.O: linhas de código
Q D
U
8
J – Linguagem C: linhas de código
R
U
3
• 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.
4XDQGRXVDU
◊ ,QWHUDWLYDPHQWH
• A qualquer momento que você executa algum comando (ls, cat), você está usando
o 6KHOO interativamente: VWGLQVWGRXWHVWGHUU são todos direcionados para o terminal.
•6WGLQ !VWDQGDUWLQSXW
•6WGRXW !VWDQGDUWRXWSXW
•6WGHUU !VWDQGDUWHUURU
&DUDFWHUtVWLFDVGR&6KHOO
◊ (VFULWDSRU%LOO-R\QD8QLYHUVLGDGH
GD&DOLIyUQLD%HUNHOH\
O ◊ &RQWUROHVREUHDVWDUHIDVHP
O
H SULPHLURHVHJXQGRSODQR
R K
G 6
D
o &
◊ +LVWRU\H$OLDVLQJ
Q
D R
Y j
$
o
D
◊ 2SHUDGRUHVFRQGLFLRQDLV !HWF
[
L P
Q D
8
U ◊ (VWUXWXUDGHFRQWUROHLIZKLOHHWF
J
R
U
3 ◊ 9DULiYHLVJOREDLVHORFDLVVHW
VHWHQY
• O 6KHOO & 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’
(YLWHFULDUPDLVGHDOLDVSRLVFRPSURPHWHDSHUIRUPDQFH
• No Shell C, você poderá mover tarefas em primeiro plano para o segundo, conforme
a necessidade.
)LOWURV
67'287
67',1 ),/752
WHOD
67'(55
WHFODGR
WHOD
O
O
H
R K
G 6
D
o
&
◊ JUHSL³$UWKXU´FDSLW
Q
D R
j
Autor: Lowel Arthur
Y
o
$
D Rei Arthur e os Cavaleiros da
[
L P Távola
Q D
U
8
J
R
U
3
◊ VHGH³VVKHOO6KHOOJ´FDSLW
• Você pode pensar na maior parte dos comandos do Shell como filtros.
• Filtros podem extrair, incluir ou alterar dados dependendo dos comandos utilizados.
5HGLUHFLRQDPHQWR
◊ &ULDUDUTXLYRV
◊ $QH[DUDUTXLYRV
◊ 8VDUDUTXLYRVH[LVWHQWHVFRPR
O
O HQWUDGDSDUDRVKHOO
H
R K
G 6
D
◊
o &
Q 5HXQLUGRLVIOX[RVGHVDtGD
D R
Y j
o
$ D
[
L
◊
P
8VDUSDUWHGRFRPDQGRVKHOOFRPR
Q D HQWUDGD
U
8
J
R
U
3
2SHUDGRUHV
◊ DUTXLYRGLUHFLRQDXPDUTSVWGLQ
◊ !DUTXLYRGLUHFLRQD stdoutSXPD
QRYDVDtGD
◊ !!DUTXLYRDQH[D stdoutDXPDUT
H[LVWHQWH
O
O ◊ !! DQH[DstderrDstdout
H
R K
G
D
6
◊ GHOLPLWDGRU direciona stdin do
o &
Q shell até o delimitador
D R
Y j
o
$
[
D ◊ !DUTXLYR grava sobre noclobber/
L P
Q D cria novo arq.
U
8
J
R
U ◊ !!DUTXLYR grava sobre noclobber/
3
anexa novo arq.
• Redirecionar VWGHUU para um arquivo pode ser ocasionalmente útil para depurar um
comando Shell. Para combinar VWGHUU com VWGRXW, inclua um após o sinal de
redirecionamento:
Exemplo: VHGH³VVKHOO6KHOOJ´FDSLW!! QRYRFDSLW
Se o arquivo QRYRFDSLW 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 &)
• QRFOREEHU: 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: FDW!QRYRDUT
• delimitador: este dispositivo de redirecionamento, usa linhas de dados GHQWUR 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: IWSQLYIWSXQLFDPSEU(2)
&RQGXWR
◊ 0HLRGHFRQGXomRSDUDWUDQVSRUWDU
GDGRVGHXPFRPDQGRSDUDRXWUR
◊ 2UHVXOWDGRGDH[HFXomRGHXP
FRPDQGRSRGHVHUXWLOL]DGRFRPR
SDUkPHWURGHHQWUDGDQDH[HFXomR
O
O GHRXWURFRPDQGR
H
R K
G 6
D ◊ &RQHFWDVWGRXWGHXPFRPDQGRj
o &
Q VWGLQGHRXWUR
D R
Y j
o◊ ([HPSORV
$ D
[
L P
Q D
U
cat meuarq | grep palavra | wc -l
8
J
R
U ls -al | grep -i “*.txt”
3
&RQVWUXLUXPVKHOOVFULSW
◊ (GLWHXPDUTXLYR
vi meuprograma
◊ 3ULPHLUDOLQKDGHYHFRQWHU
#! /bin/csh
O
O
H
R K
G 6
◊ 3DUDFRPHQWDUXPDOLQKD
D
o & #
Q
D R
Y j
o
$ D
◊ 3DVVDUR³FDPLQKR´GRVFRPDQGRV
[
L P
Q D
U
/bin/rm arquivo ou \rm arquivo
8
J
R
U
3
• #! /bin/csh ÐÉ utilizado para que o Unix saiba que seu shell é FVKHOO
• Outra opção seria colocar VFDSH ? antes do comando, por exemplo ?UP Garante
que você estará utilizando a 1a. ocorrência encontrada no path definido no seu FVKUF
'LFDVGHSURJUDPDomR
◊ 2VVKHOOVFULSWVGHYHPHVWDUVHPSUH
HPXPGLUHWyULRFRPXP
– Exemplo: /usr/sys/nome-sistema
◊ $UTXLYRVGHFRQWUROHTXHVmR
O
O
H JHUDGRVSHORVKHOOGHYHPHVWDUHP
R K
G 6 XPGLUHWyULRWHPSRUiULRVHSDUDGRV
D
o & GRVVKHOOVFULSWV
Q
D R
Y j
o
$ D
[
L P
Q D
U
8
J
R
U
3
'LFDVGHSURJUDPDomR
◊ 8WLOL]HILOWURVGHUHGXomR
◊ 8WLOL]HFRQGXWRVDRLQYpVGH
DUTXLYRVWHPSRUiULRV
O
O
H ◊ 6HVHXVKHOOIRUID]HU)73OHPEUH
R K
G 6 VHGHDOWHUDURFKPRGGRDUTXLYR
D
o &
Q
D R
◊ 6HPSUHXWLOL]HGHOLPLWDGRUQRV
Y j
o DUTXLYRV
$ D
[
L P
Q D ◊ 8WLOL]HGHOLPLWDGRU~QLFRH
U
8
J
GLIHUHQWHSDUDVXEFDPSRV
R
U
3
◊ 2UJDQL]HRVGDGRVSDUDPDLRU
HILFLrQFLDGDPiTXLQD
• Se o seu shell for fazer FTP, alterar a permissão do arquivo que contém o username
e a senha para “700”. (VWHpXPtWHPREULJDWyULRSRUPHGLGDGHVHJXUDQoD
3DUDH[HFXWDUXPVKHOO
VFULSW
◊ )RUDGRHGLWRU³YL´QDOLQKDGH
FRPDQGR
◊ 'HQWURGRHGLWRU³YL´
O
O :w (grava o arquivo)
H
R K
G 6
D :!csh -opção %
o &
Q
D R
–! (executa o comando shell
Y j
o seguinte)
$
D
[
L P –% (diz ao “vi” para preencher o
Q D
8
U nome do arquivo corrente)
J
R
U
3
• Você pode executar o seu programa à medida que for sendo desenvolvido,
facilitando também a detecção e correção de erros. Entre no YL e crie as primeiras
linhas do programa, grave o arquivo (:w) e execute-o sem sair do editor:
Comando :
FVKRSomR
2So}HVGHWHVWH
◊ H
◊ Y
&DUDFWHUHVHVSHFLDLV
◊ $VSDVGXSODV³
“string”
– mostra o string e substitui variáveis
(se existir)
◊ $VSDVVLPSOHVµ
‘string’
O
O
H
R K
– mostra o string e 12 substitui
G 6
D
variáveis (se existir)
o &
Q
D R◊ &UDVHC
Y j
o
$ D
`comando(s)`
[
L P
Q D – o resultado do comando é usado em
U
8
J output
R
U
3
◊ transforma
%DUUDLQYHUWLGD?
set dia = 19
echo ‘ Hoje é dia $dia’
resultado = Hoje é dia $dia
0HWDFDUDFWHU
◊ 6HSDUDGRUGHFRPDQGR
VHTHQFLDO
O
◊ "&RPELQDFRPTXDOTXHU
O
H FDUDFWHULVRODGR
R K
G 6
D
o &
Q
D R
◊
&RPELQDFRPTXDOTXHU
Y j FDGHLDGHFDUDFWHU
o
$ D
[
L P
Q D
8
U
J
◊ >D]
@&RPELQDFRPDOJRTXH
R FRQVLVWDGHFDUDFWHUHV
U
3
DOIDEpWLFRVPLQ~VFXORV
9DULiYHLVQR&6KHOO
◊ *OREDLV
– SETENV
O
O
H
R K – Exemplos:
G 6
D
o &
Q
D R VHWHQY7(50YW
Y j
o
$
D VHWHQY'%'$7(<0'
[
L P
Q D VHWHQY',63/$<PiTXLQD
U
8
J
R
U
3
/RFDLV
◊ $WULEXLQGRYDORUHVGRWLSR675,1*
VHWPVJ ³2OD´
VHWDQR
O
O VHWGLUBORJ aH[HUFLFLRV
H
R K
G 6 VHWPHXGLU COVDOC
D
o & VHWQDPH ³&XUVRGH&6KHOO´
Q
D R
Y j $UUD\
o
$ D
[ VHWYDU DEF
L P
Q D
U
8
J
R
◊ 1mRXVDUKtIHQQRQRPHGHYDULiYHLV
U
3
6HWYDU H[SUHVVmR
2EVPara saber quais variáveis estão setadas e quais são seus valores, utilize o
comandoVHW
/RFDLV
◊ $WULEXLQGRYDORUHVGRWLSR,17(,52
#YDU H[SUHVVmR
([HPSORV
#DQR
O
O #VRPD YDORUYDORU
H
R K
G 6 VHSDUDGRVSRUEUDQFR
D
o & #L
Q
D R
Y j #MVRPDQDYDULiYHO
o
$ D
#SVXEWUDLQDYDULiYHO
[
L P
Q D #DQR VRPDQDYDULiYHODQR
U
8
J
R #YDUVXEWUDLQDYDULiYHO
U
3
• Para trabalhar com o conteúdo de uma variável devemos utilizar o sinal “$”.
0DQLSXODQGRYDULiYHLV
◊ YDULiYHO
([HPSORV
O
O OVGLUBORJ
H
R K VHWOHWUD YDU>@
G 6
D
o & VHWN YDU>L@
Q
D R
Y j #N L
o
$
D VHWGLD
[
L P
Q D VHWSDUP
U
8
J
R HFKR³+RMHpGLDGLD´
U
3
"YDULiYHO
◊ 7HVWDDH[LVWrQFLDGDYDULiYHOVH
HODWHPYDORU
VWDWXV
◊ 7HVWDVHRFRPDQGRIRLH[HFXWDGR
FRPVXFHVVR
=0 sucesso
=1 sem sucesso
O
O
R
H Exemplos:
K
G 6
D
o & VHWYDU
Q
D R
Y j HFKRVWDWXV
o
$
D
[
L P
Q D XQVHWYDU
U
8
J
HFKRVWDWXV
R
U
3
HFKRYDUHFKRVWDWXV
(1)
YDULiYHO
◊ 5HWRUQDRQ~PHURGHHOHPHQWRVGH
XPDUUD\
([HPSORV
O
O VHWQDPH PDULDOXFLDMRDR
H
R K HFKRQDPH
G 6
D
o &
– Resultado: 3
Q
D R
Y j
o
$
D
[
L P
Q D
U
8
J
R
U
3
• YDULiYHO Ð volta sempre um número inteiro que pode ser usado para alguma
finalidade
YDULiYHO>Q@
◊ YDULiYHO>Q@RXYDULiYHO>Q\@RX
YDULiYHO>Q@
– elementos posicionais
([HPSORV
O
O
H VHWQRPH PDULDMRVHMRDR
R K
G 6
D QRPH>@
o &
Q QRPH>@
D R
Y j
o QRPH>@
$ D
[
L P
Q D
U
8
J
R
U
3
3DVVDJHPGHSDUkPHWURV
◊ DUJY
Q~PHURGHDUJXPHQWRVSDVVDGRV
FRPRSDUkPHWUR
◊
DUJXPHQWRVSRVLFLRQDLV
O
O
H
R K
◊
G 6
D QRPHGRSURJUDPD
o &
Q
D R
Y j ◊
o
$ D
WRGRVRVDUJXPHQWRV
[
L P
Q D
U
8
J ◊
R
U
3 QRGRSURFHVVRGRFRPDQGR
FRUUHQWH
◊ DUJY>Q@
FRQWH~GRGRSDUDPHWURQSDVVDGR
DUTY>@ DUTY>@
Ð
• 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
DUJYno começo do programa para obter o número de argumentos (parâmetros)
ELQFVK
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
9DULiYHLVFRQKHFLGDV
◊ XVHU
◊ FZG
◊ SDWK
O
O ◊ KRPH
H
R K
G
D
6
◊ SURPSW
o &
Q
D
Y
R
j
◊ VKHOO
o
$
D
[
L P ◊ WHUP
Q D
U
8
J
R ◊ KRVWQDPH
U
3
• O valor das variáveis acima podem ser encontrados ao digitarmos o comando VHW
([SUHVV}HVH2SHUDGRUHV
◊ &RPSDUDUYDULiYHLVQXPpULFDVRX
VWULQJV
LJXDO
GLIHUHQWH
◊ &RPSDUDUVRPHQWHVWULQJV
O
O
H a LJXDO
R K
G 6
D aGLIHUHQWH
o &
Q
D R
Y j ◊ 2SHUDGRUOyJLFR
o
$ D
DQGRU __
[
L P
Q D
U
8
J ◊ 2SHUDGRUDULWPpWLFR
R
U
3
◊ PDLRUPHQRULJXDO! !
LIWKHQHOVH
SURFHVVD
HOVH
SURFHVVD
HQGLI
O
O
H
R K ◊ LID EWKHQ
G 6
D HFKR³YDULiYHLVLJXDLV´
o &
Q
D R HOVH
Y j
o
$ D
HFKR³YDULiYHLVGLIHUHQWHV
[
L P
Q D HQGLI
U
8
J
R
U ◊ LIHDUTBHQWUDGDWKHQ
3
HFKR³2DUTXLYRH[LVWH´
HQG
• O WKHQ, obrigatoriamente, tem que estar na mesma linha de comando do LI e não
pode ter outro comando na linha.
2SHUDGRUHVGHWHVWH
&RQGLomR 9HUGDGHLUDVH
HDUTXLYR VHDUTXLYRH[LVWH
UDUTXLYR H[LVWLUDUT/HJtYHO
O
O
H
R K
G 6 ZDUTXLYRH[LVWLUDUT*UDYiYHO
D
o &
Q [ DUTXLYR H[LVWLU DUT
D R
Y j ([HFXWiYHO
o
$ D
[
L P
Q D GGLU H[LVWLURGLUHWyULR
U
8
J
R ] DUTXLYR DUTH[LVWLU H QmR
U
3
WLYHU
GDGRVWDPDQKR
QmR
GDGRV
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
6ZLWFK
◊ VZLWFKVWULQJ
FDVHYDORU
DomR
EUHDNVZREULJDWyULR
FDVHYDORU
O
O DomR
H
R K
G 6 EUHDNVZ
D
o & GHIDXOW
Q
D R
Y j DomRGHIDXOW
o
$ D
[ EUHDNVZ
L P
Q D
U HQGVZ
8
J
R
U
3
switch ($data)
case 01:
echo "$texto Janeiro"
breaksw
case 09:
echo "$texto Setembro"
breaksw
default:
echo "Relatório Anual"
breaksw
endsw
)RUHDFK
◊ IRUHDFKYDULiYHOH[SUHVVmR
FRPDQGRYDULiYHO
HQG
([SUHVVmR
O
O
H – resultado de um comando
R K
G 6 – valores ou ocorrências de um array
D
o &
Q
D R
Y j
o $VLQVWUXo}HVGHQWURGRIRUHDFK
$ D
[ VHUmRH[HFXWDGDVWDQWDVYH]HV
L P
Q D TXDQWRVIRUHPRQ~PHURGH
U
8
J
HOHPHQWRVSUHVHQWHVHQWUH
R
U
3 SDUrQWHVHV
Exemplos:
• Utilizando array:
set tabela = (maria joão)
foreach pessoa ($tabela[*])
echo $pessoa
end
:KLOH
◊ ZKLOHH[SUHVVmR
Do}HV
HQG
O
O
H
◊ ZKLOHD
R K
G 6 D
D
o &
HFKR³9DORU D´
Q
D R
Y j HQG
o
$
D
[
L P
Q D
U
8
J
R
U
3
:KLOH
◊ ZKLOH
HFKR³&HQWURGH&RPSXWDomR´
HFKR³6HOHFLRQHDRSomR
GHVHMDGD´
HFKR³1RWLFH´
O
O HFKR³6DLU´
H
R K
HFKRQ³!³
G 6
D
o & VHW5(63
Q
D R
Y j VZLWFK5(63
o
$ D
[
L P
Q D HQGVZ
U
8
J
R HQG
U
3
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
&RPDQGRVGR6KHOO
◊ 2VFRPDQGRVVKHOOVHUmRPRVWUDGRV
GLYLGLGRVHPYiULDVFDWHJRULDV
– $UTXLYRVHGLUHWyULRV
– 6HOHomR
O
O
H
R K – &RPELQDomRHRUGHQDomR
G 6
D
o &
Q – ,PSUHVVmR
D R
Y j
o
$ D
– 6HJXUDQoD
[
L P
Q D
U
8
J
R
U
3
• Para cada comando existem várias opções. Neste curso tentaremos mostrar as
opções mais utilizadas.
PDQ nome_comando
&RPDQGRV
• 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
,PSUHVVmR
◊ (&+2
HVFUHYHDUJXPHQWRVHPVWGRXW
6LQWD[H
HFKR>RSo}HV@VWULQJ
O
O
H
R K
G 6 2So}HV
D
o & QQmRDGLFLRQDXPDQRYDOLQKD
Q
D R
Y j QRVWGRXWDQWHVGHLPSULPLUR
o
$ D
VWULQJGHL[DQGRRFXUVRUQDOLQKD
[
L P GDPHQVDJHPHVFULWD
Q D
U
8
J
R
U
3
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
,PSUHVVmR
◊ &$7
– FRQFDWHQDHLPSULPH
– QmRDOWHUDGDGRV7RPDDVWGLQH
DUHSURGX]QRVWGRXW
– YDUUHRDUTXLYRHQmRSiUDDFDGD
WHODGRWHUPLQDO
O
O
H
R K 6LQWD[H
G 6
D
o & FDW>RSo}HV@>ILOHILOH@
Q
D R
Y j 2So}HV
o
$ D
[
L QOLVWDDVOLQKDVGRDUTXLYR
P
Q D
U QXPHUDQGRDV
8
J
R
U
3
• Exemplos
FDW capt1 capit2 > livro livro irá conter capit1,2
6HJXUDQoD
◊ &+02'
– SDUDWRUQDURDUTXLYRGRVKHOO
H[HFXWiYHOpQHFHVViULRDOWHUDUD
SHUPLVVmRGRDUTXLYR
O
O 6LQWD[H
H
R K FKPRG>TXHP@RSHUDomRDFHVVR
G 6
D DUTXLYR
o &
Q
D R
Y j
o 2So}HV
$
D
[
L P TXHPXXVXiULRJJUXSRR
Q D
U
8
J RXWURVDDOO
R
U RSHUDomRDWULEXLUUHPRYHU
3
H[HFXomR
• 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
/HLWXUD
◊
– GLUHFLRQDRWHUPLQDOFRPRVWGLQ
([HPSOR
O VHWRSomR
O
H
R K
G 6
D
o &
Q
D R
Y j
o
$ D
[
L P
Q D
U
8
J
R
U
3
Exemplos:
echo -n “Digite a opcao: “
set opcao = $<
if ($opcao > 9) then
echo “Opcao Invalida. Tecle enter para continuar”
$<
endif
•$<
( Está é uma maneira de deixar a msg na tela até o usuário digitar alguma tecla.
6HOHomR
◊ /,1(
– FRSLDXPDOLQKDGRVWGLQHJUDYD
QRVWGRXW
6LQWD[H
O
O
H OLQHVWGLQ!VWGRXW
R K
G 6
D
o &
Q
D R
Y j
o
$ D
[
L P
Q D
U
8
J
R
U
3
6HOHomR
◊ +($'
– VHOHFLRQDDVSULPHLUDVOLQKDV
GHXPDUTXLYR
6LQWD[H
O
O
H KHDG>RSo}HV@VWGLQ!VWGRXW
R K
G 6
D
o &
Q 2So}HV
D R
Y j
o FQVHOHFLRQDDVQSULPHLUDV
$ D
[
L FROXQDVGRVWGLQ
P
Q D
U QVHOHFLRQDDVQSULPHLUDV
8
J
R OLQKDVGRVWGLQ
U
3
• Exemplos
head -5 arquivo (lista as 5primeiras linhas do arquivo
6HOHomR
◊ 7$,/
– VHOHFLRQDDVOLQKDVILQDLVGH
XPDUTXLYR
6LQWD[H
O
O WDLO>RSo}HV@VWGLQ!VWGRXW
H
R K
G 6
D
o &
Q 2So}HV
D R
Y j QVHOHFLRQDDVQ~OWLPDVOLQKDV
o
$ D
GRVWGLQ
[
L P
Q D
U
8
J
R IPRVWDUDVOLQKDVTXHVmR
U
3
DGLFLRQDGRVDRDUTXLYR
• Exemplos
tail -5 arquivo (lista as 5 últimas linhas do arquivo)
tail -f /var/messages
6HOHomR
◊ 6('
– HGLWDHDOWHUDGDGRV
6LQWD[H
VHG>RSo}HV@VWGLQ!VWGRXW
2So}HV
O
O H³VFULSW´
H
R K RQGHVFULSWSRGHVHU
G 6
D
³VVWULQJBDQWLJDVWULQJBQRYDJ´
o &
Q
D R ³VWULQJTXHSHUWHQFHjOLQKDTXHGHYHUi
Y j
o VHUGHOHWDGDG´
$ D
[
L P³VVWULQJDVHUGHOHWDGDJ´
Q D
U
8
J
IDUTXLYRFRQWpPRVVFULSWVD
R
U
VHUHPH[HFXWDGRV1mRXVDU
3
DVSDVGHQWURGRDUTXLYR
1mRXVDUVWGLQFRPRVWGRXW
• Exemplos:
•VHGH³s/café/chá/g´entrada
Altera a palavra FDIp para FKi em todas as ocorrências (g) no stdin
•VHGH³/João/d´entrada
Deleta todas as linhas do stdin que contém a palavra -RmR
•VHGH ³s/devedor//g´entrada
Altera a palavra GHYHGRU por nada (//), ou seja, sed deletou a palavra
•VHGH“s/cha/café” H “s/limao/mate/” arq_sala > arqsaida
6HOHomR
◊ 81,4
– VHOHFLRQDDSHQDVXPDRFRUUrQFLD
GHFDGDOLQKDGRVWGLQ
2EULJDWRULDPHQWHVWGLQGHYHHVWDU
RUGHQDGRFRPDQGRVRUW
6LQWD[H
O
O XQLT>RSo}HV@VWGLQ
H
R K
G 6
D 2So}HV
o &
Q
D R XVHOHFLRQDOLQKDV~QLFDV
Y j
o
$ D
FFRQWDRQ~PHURGHYH]HVTXH
[
L P FDGDOLQKDVHUHSHWH
Q D
U
8
J GVHOHFLRQDDSHQDVDVOLQKDV
R
U FRPPDLVGHXPDRFRUUrQFLD
3
6HOHomR
◊ *5(3
– VHOHFLRQDOLQKDVXVDQGRXP
~QLFRFULWpULRGHVHOHomR
6LQWD[H
JUHS>RSo}HV@VWULQJVWGLQ
O
O 2So}HV
H
R K FFRQWDRQ~PHURGHYH]HVTXH
G 6
D RVWULQJDSDUHFH
o &
Q
D R LLJQRUDXSSHUFDVH
Y j
o
$
D OOLVWDVRPHQWHRQRPHGRV
[
L P DUTXLYRVTXHSRVVXHPRVWULQJ
Q D
U
8
J SURFXUDGD
R
U QQXPHUDFDGDOLQKDTXH
3
FRQWpPRVWULQJSURFXUDGD
6HOHomR
◊ *5(3
2So}HV
YOLVWDWRGDVDVOLQKDVGR
DUTXLYRH[FHWRjVTXHFRQWpPD
VWULQJ
AOHWUDOLVWDWRGDVDVOLQKDVTXH
O
O LQLFLHPFRPDOHWUDRXVWULQJ
H
R K
G 6
D 6WULQJ
o &
Q
D R YDULiYHO ³VWULQJFRPSRVWD´
Y j
o VWULQJ
$ D
[
L P ³PHWDFDUDFWHUHV´
">D]@
Q D
U
8
J
R
U
3 ◊ JUHSKHDGOLQHVHGWDLOHXQLT
RSHUDPHPOLQKDV
• Exemplos:
6HOHomR
◊ &87
– VHOHFLRQDFROXQDV
6LQWD[H
FXW>RSo}HV@VWGLQ
2So}HV
O
O F[\GHILQHFROXQDLQLFLDO[H
H
R K
G 6 FROXQDILQDO\
D
o & G&KDUGHILQHGHOLPLWDGRU
Q
D R
Y j I[\GHILQHFDPSRLQLFLDO[H
o
$ D
FDPSRILQDO\
[
L P
Q D VVXSULPHOLQKDVTXHQmR
U
8
J
FRQWpPGHOLPLWDGRU
R
U
3 2EULJDWRULDPHQWHGHYHVHUXVDGR
FRPDRSomRG
2%62FRPDQGRFXWWUDEDOKDFRP
FROXQDV
• 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
6HOHomR
◊ :&
– FRQWDOLQKDVSDODYUDVH
FDUDFWHUHVGHDUTXLYRV
6LQWD[H
ZF>RSo}HV@VWGLQ
O
O
H
R K
2So}HV
G 6
D
o & FFRQWDFDUDFWHUHV
Q
D R
Y j OFRQWDOLQKDV
o
$ D
ZFRQWDSDODYUDV
[
L P
Q D
U
8
J
R
U
3
• Exemplos:
grep -l Maria arqu* | wc -l - lista a qtd de linhas que contém a variável
Maria
6HOHomR
◊ 63/,7
– FRUWDRVWGLQHPDUTXLYRV
PHQRUHVFRQWHQGRXPQ~PHUR
HVSHFtILFRGHOLQKDV
6LQWD[H
O
O VSOLW>RSo}HV@VWGLQ>SUHIL[R@
H
R K
G 6
D 2So}HV
o &
Q QHVSHFLILFDRQ~PHURGHOLQKDV
D R
Y j
o GHFDGDDUTXLYRGHVDtGD'HIDXOW
$ D
[
L OLQKDVSRUDUTXLYR
P
Q D
U SUHIL[RSUHIL[RGRVVWGRXWV
8
J
R FULDGRV2VXIL[RVHUiDDDEDWp
U
3
]]2GHIDXOWGRSUHIL[Rp[
• 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
6HOHomR
◊ &63/,7
– VHSDUDRVDUTXLYRVVHPSUHTXH
HQFRQWUDUXPDFRPELQDomRHQWUH
VHXVDUJXPHQWRVHRFRQWH~GRGR
DUTXLYR
O
O 6LQWD[H
H
R K FVSOLW>RSo}HV@VWULQJ
G 6
D
o >DUTJXPHQWRV@
&
Q
D R
Y j
o
$
D 2So}HV
[
L P
Q D ISUHIL[RSUHIL[RGRVVWGRXWV
U
8
J
FULDGRV2VXIL[RYDULDGHj
R
U 'HIDXOW[[
3
• Exemplos
O arquivo livro contém:
Introdução,
Capítulo 1,
Capítulo 2,
Resumo.
6HOHomR
◊ &63/,7
2So}HV
³DUJQ´FULDXPDUTXLYRSRU
SUHIL[RFRQWpPDVOLQKDV
O
O DQWHULRUHVDRSULPHLURDUJXPHQWR
H
R K
G 6 ³DUJ´FULDXPDUTXLYR
D
o & FRQWHQGRRVGDGRVDSDUWLUGR
Q
D R DUJXPHQWR
Y j
o
$ D
[
L P
Q D 1mRIXQFLRQDQR)UHH%6'
U
8
J
R
U
3
2UGHQDomR
◊ 6257
– RUGHQDHFRPELQDP~OWLSORV
DUTXLYRV
6LQWD[H
VRUW>RSo}HV@DUTXLYRV
O
O 2So}HV
H
R K
G ELJQRUDHVSDoRVHPEUDQFR
6
D
o & SDUDHQFRQWUDUDSULPHLUDRX
Q
D R ~OWLPDFROXQDGRFDPSR
Y j
o
$
D GFODVVLILFDXVDQGRRUGHP
[
L P DOIDEpWLFD6RPHQWHOHWUDVGtJLWRV
Q D
U
8
J HHVSDoRVVmRFRQVLGHUDGRVQD
R
U FRPSDUDomR
3
IDOWHUDWRGDVDVOHWUDV
PLQ~VFXODVSDUDPDL~VFXODV
DQWHVGDFRPSDUDomR
• O comando VRUW 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 XQLT. Para tornar mais eficiente esse comando deve ser
utilizado após os dados terem sido selecionados (JUHS ou FXW).
• 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.
2UGHQDomR
◊ 6257
2So}HV
PMXQWDWRGRVRVDUTXLYRVGH
HQWUDGDQXPVy2VDUTXLYRVGH
HQWUDGDGHYHPHVWDU
O FODVVLILFDGRV
O
H
R K QRUGHQDRDUTXLYR
G 6
D QXPHULFDPHQWH
o &
Q URUGHQDRDUTXLYRHPRUGHP
D R
Y j GHFUHVFHQWH
o
$ D
[
L XGHOHWDOLQKDVGXSOLFDGDV
P
Q D
U
8
J WGHILQHGHOLPLWDGRU
R
U N>FDPSRBLQLFLDOFROXQDBLQLFLDO@
3
>RSomR@
>FDPSRBILQDOFROXQDBILQDO@
>RSomR@GHILQHDFKDYHGRVRUW
7UDQVIRUPDomR
◊ 75
– WUDQVIRUPDFDUDFWHUSRUFDUDFWHU
6LQWD[H
WUµVWULQJBDQWLJD¶µVWULQJBQRYD¶
O
O VWGLQ!VWGRXW
H
R K
G 6
D
o &
Q
D R
Y j
o
$ D
[
L P
Q D
U
8
J
R
U
3
• O comando WU traduz os dados de entrada caractere por caractere, com base em
7UDQVIRUPDomR
◊ ''
– FRQYHUWHHFRSLDDUTXLYR
6LQWD[H
O FRQY >RSo}HV@
O
H
R K
G 6 2So}HV
D
o &
Q OFDVHFRQYHUWHRFRQWH~GRGR
D R
Y j DUTXLYRSDUDPLQ~VFXOR
o
$ D
XFDVHFRQYHUWHRFRQWH~GRGR
[
L P
Q D DUTXLYRSDUDPDL~VFXOR
U
8
J
DVFLLFRQYHUWHHEFGLFSDUDDVFLL
R
U
3
LEPFRQYHUWHDVFLLSDUDDYHUVmR
HEFGLFGD,%0
-XQomR
◊ -2,1
– MXQWDGRLVDUTXLYRVFRPELQDQGR
OLQKDDOLQKD2VDUTXLYRVGHYHP
HVWDURUGHQDGRV
6LQWD[H
O
O
H MRLQ>RSo}HV@DUTXLYRDUTXLYR
R K
G 6
D
o & 2So}HV
Q
D R W&KDUGHILQHGHOLPLWDGRU
Y j
o
$ D
DQRDUTXLYRSURGX]XPDOLQKD
[
L P
Q D GHVDtGDSDUDFDGDOLQKDGR
U
8
J DUTXLYRHVSHFLILFDGRSHORQ
R
U DUTXLYRPHVPRSDUDRVFDPSRV
3
GRMRLQTXHQmRFDVDPFRP
QHQKXPDOLQKDGRRXWURDUTXLYR
GHHQWUDGD
• Quando o MRLQ 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 VRUW).
-XQomR
◊ -2,1
2So}HV
RQRDUTXLYRFDPSRDVOLQKDV
GHVDtGDVmRFRPSRVWDVSHOD
OLVWDGRVFDPSRVHVSHFLILFDGDV
O QDYDULiYHO
O
H
R K QDUTXLYRFDPSRSDUDGHILQLU
G 6
D PDLVFDPSRVVHSDUHRVSRU
o &
Q EUDQFRRXYtUJXOD
D R
Y j FDPSRRXFDPSRID]RMRLQ
o
$ D
[ GHDUTXLYRVXVDQGRRFDPSR
L P
Q D HVSHFLILFDGRQDYDULiYHOFDPSR
U
8
J
GRDUTXLYRRXDUTXLYR
R
U
3
• Exemplos:
DUTBHQW Aldo:HC DUTBHQW Aldo:enfermeiro:7234
Bruno:IMECC João:digitador:7111
João:CCUEC Ricardo:médico:7323
-XQomR
◊ 3$67(
– DQH[DP~OWLSORVDUTXLYRVFROXQD
SRUFROXQD
6LQWD[H
SDVWH>RSo}HV@DUTXLYR
O
O
H DUTXLYR
R K
G 6
D
o & 2So}HV
Q
D R G&KDUGHILQHGHOLPLWDGRU
Y j
o
$ D
VMXQWDOLQKDVVXEVHTXHQWHVGR
[
L P DUTXLYR
Q D
U
8
J
R
U
3
• Exemplos :
DUTBHQW Aldo:HC DUTBHQW Aldo:enfermeiro:7234
Bruno:IMECC João:digitador:7111
6HOHomRH,PSUHVVmR
◊ $:.
– OLQJXDJHPGHSURFHVVDPHQWRH
SURFXUDGHSDGU}HV(QFRQWUD
TXHFRPELQDPFRPXPSDGUmR
HVSHFLILFDGRHHQWmRH[HFXWDDV
Do}HVGHILQLGDV
O
O
H 6LQWD[H
R K
G 6
D DZN>RSo}HV@µSDGUmR¶^ISJP
o &
Q µSJP¶`VWGLQ
D R
Y j
o
$ D
2So}HV
[
L P
Q D )&KDUGHILQHGHOLPLWDGRU
U
8
J
ISJPDUTXLYRTXHFRQWpPDV
R
U
3 Do}HVDVHUHPH[HFXWDGDVSHOR
FRPDQGRDZN
µSJP¶VmRDVDo}HVDVHUHP
H[HFXWDGDVSHORDZN
6HOHomRH,PSUHVVmR
◊ 7LSRVGHSDGU}HV
µVWULQJ¶
O
O µVWULQJVWULQJ¶
H
R K
G 6
D µVWULQJ"¶
o &
Q
D R
Y j µVWULQJ_VWULQJ¶
o
$
D
[
L µVWULQJ>FKDUFKDU@¶
P
Q D
U
8
J
µVWULQJ>?AFKDUFKDU@¶
R
U
3
Tipos de padrões:
•µVWULQJ¶ : grava em stdout todas as linhas do stdin que contém pelo menos uma
ocorrência do string.
•µVWULQJ"¶: grava em stdout as linhas que contém o string1 seguido por nenhum
ou um caracter que precede o sinal ?
6HOHomRH,PSUHVVmR
◊ 7LSRVGHSDGU}HV
µaFKDU¶
µaAFKDU¶
O µaFKDU¶
O
H
R K
G 6 µ ³VWULQJ´¶
D
o &
Q
D R µ! ³FKDU´¶
Y j
o
$
D µ ³VWULQJ´ ³VWULQJ´¶
[
L P
Q D
U
8
J
R
U
3
Tipos de padrões:
• µ aFKDU¶ : grava em stdout todos os registros que contém no 1o. campo o
caracter char1 ou um string .
•µaAFKDU¶ : grava em stdout todos os registros que QmR contém no 1o. campo o
caracter char1 ou um string.
• µ aFKDU¶ : grava em stdout todos os registros que contém o último caracter
igual a char1 ou string.
• µ ³VWULQJ´ µ : grava em stdout todos os registros que contém o 1o. campo
igual ao string1
•µ! ³FKDU´µ : grava em stdout todos os registros que o 1o. campo é maior ou
igual a char1
6HOHomRH,PSUHVVmR
◊ 7LSRVGHDo}HV287387
– ,PSUHVVmRGHFDPSRVYDULiYHLVH
FRQVWDQWHV
µ^SULQW³³`¶
– 5HGLUHFLRQDPHQWR
O µ^SULQW!³DUTBRXWSXW´`¶
O
H
R K
G
D
6
– ,QVWUXo}HVDULWPpWLFDV
o &
Q µ^SULQW
`¶
D R
Y j
o µ^SULQW³UD´³PHGLD´`¶
$
D
[
L P
Q D – 9DULiYHLVHVSHFLDLV
U
8
J
µ^SULQW15`¶
R
U
3
Redirecionamento:
µ^SULQW!³DUTRXWSXW´`µ : redireciona o campo 1 para o stdout arqoutput .
Instruções aritméticas:
µ^ SULQW
` µ : o campo 1 é o resultado da multiplicação do campo1 com o
campo2.
Variáveis Especiais:
µ^SULQW15`µ : grava em stdout os registros de stdin numerado.
6HOHomRH,PSUHVVmR
◊ 7LSRVGHDo}HV
– &RQFDWHQDomRGHFDPSRV
µ^SULQW `¶
– ,PSULPLUOLQKDHPEUDQFR
O
O µ^SULQW³´`¶
H
R K
G 6
D
o &
– ,PSUHVVmRIRUPDWDGDGHFDPSRV
Q YDULiYHLVRXFRQVWDQWHV
D R
Y j
o µ^SULQWI³V?Q´`¶
$ D
[
L P µ^SULQWI³GV?Q´
Q D
U `¶
8
J
R
U µ^SULQWI³VG?Q³120(´
3
³5$0$/´`¶
seqüência significado
\n nova linha
\b backspace
\t tab
6HOHomRH,PSUHVVmR
◊ 7LSRVGHDo}HV
%(*,1
%(*,1^)6 ³´´
^SULQWI³VV?Q´³120(´
³5$0$/´`
O
O
H ^SULQWI³VV?Q´`
R K
G 6
D
o &
Q (1'
D R
Y j
o
$
D (1'^SULQWI³V´³ILPGH
[
L P
Q D UHODWyULR´`
U
8
J
(1'^SULQW³ILPGHUHODWyULR´`
R
U
3
∗%HJLQ
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.
∗(QG
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.
6HOHomRH,PSUHVVmR
◊ 7LSRVGHDo}HV
– ,QVWUXo}HVFRQGLFLRQDLV
^Do}HV`@
GHOLPLWDGRU
([HPSORVGHIRUPDWDomR
SULQWI
IPW SULQWIµ^IPW`¶
F D FDUDFWHU$6&,,
O
O G
H
R K
G 6
D H H
o &
Q H[SRQHQFLDomR
D R
Y j
o
$
D I
[
L P
Q D
U I
8
J
R
U SRQWRIOXWXDQWH
3
([HPSORVGHIRUPDWDomR
SULQWI
IPW SULQWIµ^IPW`¶
&RPDQGRYLHPPRGR
EDWFK
◊ 8WLOL]DQGRRHGLWRUYL
YLDUTXLYRFRPDQGRVBYL!
GHYQXOO
O
O
H
R K ◊ DUTXLYRFRPDQGRVBYL
G 6
D /FIM
o &
Q dd
D R
Y j ^[
o
$ D
[
L P :x
Q D
U
8
J
R
U
3
• Comandos vi:
mensagens de erro
A> - representa a tecla ESC (digitar CTRL v CTRL [ )
[ - sai do editor vi e salva o arquivo
)RUPDWRGRFRPDQGRGDWH
%a %b %d %T %Z %Y
5HIHUrQFLDV
◊ 81,;3URJUDPDomR6KHOO
&RPDQGRVYL
O
O
H
R K
G 6
D
o &
Q
D R
Y j
o
$
D
[
L P
Q D
U
8
J
R
U
3
,1,&,$1'229,
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
&RPDQGRVYL
O
O
H
R K
G 6
D
o &
Q
D R
Y j
o
$
D
[
L P
Q D
U
8
J
R
U
3
,16(5,1'2&$5$&7(5(/,1+$6
&RPDQGRVYL
O
O
H
R K
G 6
D
o &
Q
D R
Y j
o
$
D
[
L P
Q D
U
8
J
R
U
3
'(/(7$1'27(;72
x deleta caracter
dw deleta palavra (ou parte da palavra à direita do cursor)
dd deleta linha
D deleta parte da linha à direita do cursor
:5,10 d deleta da linha 5 à linha 10
&23,$1'228029(1'27(;72
&RPDQGRVYL
O
O
H
R K
G 6
D
o &
Q
D R
Y j
o
$
D
[
L P
Q D
U
8
J
R
U
3
352&85$1'2($/7(5$1'2