You are on page 1of 142

Universidade Tuiuti do Paran Faculdade de Ci ncias !

"atas #istemas $peracionais %%% & C#T' #(ell #cript )*eu +eus do #(ell, Por-ue eu n.o optei pelo Linu" antes/01

213 4!5!#6 78lio Csar


Prof Andr Luiz andreluizsp@gmail.com

Conte8do programtico

Fundamentos de #(ell Comandos 9sicos Principais ar-uivos:diret;rios de configura<.o Comandos de rede Comandos avan<ados Tipos de variveis e atri9ui<.o 5ariveis de am9iente e variveis especiais Tra9al(ando com ar-uivos de te"to F=# & Permiss>es & Filtros & #!+ & !ditores de te"to $peradores do #(ell !strutura de decis.o La<os Fun<>es !"press>es regulares

Prof Andr Luiz andreluizsp@gmail.com

$ -ue #(ell #cript/

#(ell uma interface te"tual -ue interpreta os comandos e"istentes em um sistema operacional e os envia ao ?ernel imprimindo posteriormente o resultado do processamento na tela.
)!m9ora se@a verdade -ue (a@a ferramentas AU% disponBveis para gerenciar praticamente tudo em um sistema A4U:Linu"6 voc precisa ter con(ecimento s;lido so9re utilitrios de lin(a de comando para se preparar mel(or para se tra9al(ar com -ual-uer distri9ui<.o Linu".0
CP'%TC=A'+D P!##A4=AD #TA4A!'D +!A4D LA4AF!L+T6 EFFG6P. HIJ

$ -ue #(ell #cript/

$ #=!LL original para sistemas U4%K foi escrito por #teve Lourne e se c(amava simplesmente sh. $ #=!LL padr.o de sistemas Linu" o BASH CBOURNEAGAIN SHELLJ6 -ue uma variante A4U de sh.

$ -ue #(ell #cript/

#(ell6 um interpretador de comandos -ue analisa o te"to digitado na lin(a de comando e os e"ecutam. 4a lin(a de comandos de um s(ell6 podemos utilizar diversos comandos um ap;s o outro6 ou mesmo com9in&los numa mesma lin(a C D MM N tee O J. #e colocarmos diversas lin(as de comandos em um ar-uivo te"to simples6 teremos em m.os um #(ell #cript6 ou um script em s(ell.

!"iste mais de um #(ell/


!"emplos de #(ellP csh: Q a s(ell mais utilizada em sistemas como RL#+ ou Keni". A sua estrutura de comandos similar Linguagem C.

sh: $u Lourne #(ell a s(ell pr&defenida com o Uni" C1SGGJ. +esde a vers.o G su9stituindo a tcs(6 esta costuma a ser a s(ell pr&defenida para o root. bash: CLourne&Again #=ellJ *uito similar a s(6 esta a s(ell mais utilizada por conter caracterBsticas comoP Auto&Complete6 podemos personalizar todo o output de uma forma simples6entre outras.... tcsh: CompatBvel e semel(ante a cs(. ksh: Considerada a mais popular no sistema Uni"6 tendo todas as fun<>es do s(. Torn #(ell foi a primeira a introduzir recursos avan<ados. zsh: U #(ell tem como grande vantagem um enorme interpretador de comandos

! os interpretadores de comandos/

%nterpretadores de comandos s.o programas de computador responsveis por tomar as a<>es efetivas conforme a orienta<.o do usurio atravs de comunica<.o te"tual. !"emplos de %nterpretadores de comandosP csh sh bash tcsh ksh zsh python perl expect awk Basic Vbscript PHP

Vual a diferen<a entre um compilador e um interpretador/


CompiladorP Q um programa responsvel por gerar6 a partir de de um programa escrito em linguagem de alto nBvel6 um programa em linguagem de m-uina6 n.o e"ecutvel. As linguagens de alto nBvel n.o possuem nen(uma rela<.o direta com a m-uina6 ficando esta preocupa<.o para o compilador. !"emplosP C6 CWW6 +elp(i6 5isual Lasic6 etc ... %nterpretadorP %nterpretador considerado um tradutor -ue n.o gera c;digo o9@eto. A partir de um programa fonte6 escrito em linguagem de alto nBvel6 o interpretador6 no momento da e"ecu<.o do programa6 traduz cada instru<.o e a e"ecuta em seguida. !"emplo de linguagens interpretadasP 9as(6 s(6 9asic6 5Lscript6 P=P6 etc...

Linguagens )=B9ridas0P %nterpretada e compilada. !". PXt(on6 @ava.

$nde encontro o #(ell/ $ #istema $peracional o c;digo e"ecutor das c(amadas de sistemas.

$nde encontro o #(ell/ #(ell fundamentalmente uma interface entre o #istema $peracional e o seu usurio.

Como funciona um #(ell/ Para inicarmos os estudos so9re #(ell #cript vamos utilizar o 9as( C:s9in:9as(J. $ BASH permite a e"ecu<.o de se-Y ncias de comandos direto no prompt do sistema ou escritas em ar-uivos de te"to6 con(ecidos como s(ell scripts. $ BASH o s(ell desenvolvido para o pro@ecto A4U6 da Free #oftZare Foundation6 -ue se tornou padr.o nas vrias distri9ui<>es Linu". Pode ser usado tam9m com outros sistemas operacionais6 como o Uni". Q compatBvel com o Lourne s(ell Cs(J6 incorporando os mel(ores recursos do C s(ell Ccs(J e do Torn #(ell C?s(J.

Como funciona um #(ell/ Pode&se pode customizar o am9iente do 9as( utilizando alguns ar-uivos:diret;rios comoP

:etc:profile :etc:s?el .9as([profile .9as([rc

%mportanteP 4os sistemas A4U:Linu" nomes de ar-uivos s.o case&sensitive6 ou se@a6 distinguem mai8sculas de min8sculas e vice&versa. T!#T! ,\ Teste ,\ teste

Como funciona um #(ell/ $ am9iente de uma sess.o #=!LL tem seu comportamento alterado de acordo com o conte8do de algumas variveis de am9iente6 por e"emploP LA#= =$#T4A*! U#!' U#!'4A*! PAT= P#1 P#E +%#PLA] #=!LL =%#TF%L! =%#TF%L!#%U!

Como funciona um #(ell/ +esignadores de e"pans.o de (ist;rico ,, =istorX ,n ,&n ,string ,/string
^string1^stringE

& & & & & & &

c(ama o 8ltimo comando utilizado mostra o (ist;rico de comandos refere&se ao n8mero n do (ist;rico comando atual &n do (ist;rico refere&se ao 8ltimo comando -ue come<a com a string Ce"press.oJ refere&se ao 8ltimo comando -ue conten(a a string Ce"press.oJ repete o 8ltimo comando su9stituindo a ocorr ncia string1 por stringE

Como funciona um #(ell/ Um comando para ser interpretado dividido em partes distintasP
parana@acer:~$ ps -aux | grep bash

1_ parteJ comando6 o s(ell identifica se o ar-uivo e"iste no PAT= e se o usurio possui privilgios suficientes para e"ecut&loD E_ parteJ identifica por espa<os -uais s.o os par`metros:argumentos. !sses alteram de alguma forma o comportamento durante a e"ecu<.o e:ou saBda do comandoD I_ parteJ saBda Cdirecionamento:pipeJ -ue permite ao usurio rece9er o retorno da e"ecu<.o6 se@a saBda padr.o ou alguma mensagem de erro:advert nciaD

Como funciona um #(ell/ $nde encontrar um terminal num sistema A4U:Linu"/

$s consoles s.o levantados pelo init na inicializa<.o do sistemaP :etc:initta9 Controlados pelo gettX C:s9in:gettXJ -ue a9re um novo processo para controlar uma porta ttXK C:dev:ttXKJ Por padr.o :dev:ttX1 :dev:ttXE :dev:ttXI :dev:ttXb :dev:ttXH :dev:ttXa s.o definifos a consoles virtuaisP C'TLWALTW1 C'TLWALTWE C'TLWALTWI C'TLWALTWb C'TLWALTWH C'TLWALTWa

Como em todo sistema A4U:Linu" necessrio -ue se realize a autentica<.o antes de iniciar o uso.

Como funciona um #(ell/ $nde encontrar um terminal num sistema Arfico/


$ "term um emulador de terminais leve e diretoD Comando para instala<.o no +e9ianP apt&get install "term A varivel de am9iente cT!'* por padr.o define "term como terminal a ser utilizado por diversos sistemas.

Como funciona um #(ell/ gnome&terminal

$ gnome&terminal o terminal padr.o do Anome Cam9iente de tra9al(o gerenciado pelo servidor KorgJD $nde encontro/ *enuP Aplica<>es d Acess;rios d Terminal A varivel de am9iente cC$L$'T!'* define o gnome&terminal como o terminal padr.o.

Como funciona um #(ell/ ?onsole

$ ?onsole o terminal padr.o do T+! Cam9iente grfico gerenciado pelo servidor KorgJD $nde encontro/ T+!&*enuP #istemas d Tonsole $ Tonsole permite m8ltiplas sess>es em a9as6 (ist;rico6 impress.o e favoritos.

Comandos Lsicos
$ <comando> --help $ man <comando> $ ls $ cat $ cd $ m#d r $ rm $ rmd r $ date $ s! $ d! $ df $ free $ locate $ f nd $ !pt me $ al as $ to!ch $ sort $ !n $ $ ln $ !name $ %c $ tar $ cont n!a " " "

Comandos Lsicos
$ <comando> --help &ostra os pr nc pa s param'tros e forma de !so $ man <comando> $ ls -l $ cat -n -1 -2 $ cd Alterna entre !m d ret/r o e o!tro &an!al on-l ne do comando L sta o conte.do de !m d ret/r o -la -lh -lha -R L sta o conte.do de !m ar$! -o de te0to

-t <manpa(e> ) ps*pdf+, - <ar$! -o>"pdf

Comandos Lsicos
$ m#d r -p $ rm -r $ rmd r -f 3r a !m no-o d ret/r o -- -m4566 7eleta ar$! -os e d ret/r os -rf --

7eleta d ret/r os -a8 os

$ date

&ostra e altera a data9hora do s stema

:;OR&A2O <H <& <d <m <= " " " $ date mesd ahoram n!to>se(!ndo?>ano?

Comandos Lsicos
$ s! $ d! Alterna entre !m !s!@r o e o!tro no s stema -c <comando> -s SHELL &ostra o !so do d sco por !m ar$! -o o! d ret/r o

-s -h -sh $ df &ostra o stat!s so1re part ABes em !soC o! da part ADo

onde !m determ nado ar$! -o est@ arma8enado" -h -a >ar$! -o?

Comandos Lsicos
$ free &ostra !so de mem/r a RA& E9proc9mem nfoF -1 -# -m -( $ locate <str n(> local 8a !m ar$! -o o! d ret/r o E!pdated1F

BaseG 9-ar9cache9locate9located1 $ f nd local 8a !m ar$! -o o! d ret/r o -name - name -a -o -s 8e -tHpe -perm -cm n -ct me -mt me -re(e0 -( d -(ro!p -pr ntf -e0ec <comando> IJ KL

Comandos Lsicos
$ !pt me tempo desde $!e a ma$! na n c o! $ al as $ to!ch mostra e cr a !m MatalhoN para !m comando9parametros altera data cr aADo9alteraADo de !m ar$! -o

-c -t -a -m $ sort e0 1e de forma a ordenar o conte.do de !m ar$! -o

-! -n -r

Comandos Lsicos
$ !n $ $ ln -s $ !name e0 1e nformaABes so1re o s stemaC como a -ersDo do Oernel -r -a $ %c real 8a a conta(em de l nhasC pala-ras e caracteres oc!lta l nhas repet das cr a l n#s s m1/l cos e hard l n#s

-l -c -m -% $ tar empacota ar$! -os9d ret/r os em !m .n co ar$! -o

-c-8f -8-0f -c-Pf -8-Pf -rf -tf

Comandos Lsicos
E0ercQc os de ; 0aADo +F 7e $!e forma -oc' poder a desco1r r em $!e d ret/r o -oc' est@R *F S!al a d ferenAa entre E cd 9 cd "" cdFR TF 7 ferenc e cam nho a1sol!to e cam nho relat -o" ,F S!al a se$U'nc a de comando para cr ar !m s!1d ret/r o EtesteF em 9homeR VF 3omo cr ar V d ret/r os h er@r$! cos de !ma .n ca -e8 EE0" 9home9teste9a!la9(erds9pos9a!la+FR 5F 3r e !m hard l n# para ar$! -o 9etc9prof le em 9tmp9prof le" WF 3r e !m soft l n# para o ar$! -o 9etc9resol-"conf em 9tmp9dns" XF S!al a d ferenAa encontrada entre soft l n# e hard l n#R

'edirecionamento
$perador e f Ef ff Eff N EfM1 fME fM& EfM& A<.o 'edireciona a entrada padr.o C#T+%4J 'edireciona a saBda padr.o C#T+$UT J 'edireciona a saBda de erro C#T+!''J 'edireciona a saBda padr.o6 ane"ando 'edireciona a saBda de erro6 ane"ando
Conecta a saBda padr.o com a entrada padr.o de outro comando

Conecta a saBda de erro na saBda padr.o Conecta a saBda padr.o na saBda de erro Fec(a a saBda padr.o Fec(a a saBda de erro

Comandos Lsicos
E0ercQc o de ; 0aADo +F 3r e !m d ret/r o MshellNC dentro dele !m no-o ar$! -o Mf leN e altere a s!a data de cr aADo9alteraADo para 6+96+9*6+6 +VG66" *F Altere a data do s stema para **96Y9+YWX @s +6 horas" TF 3r e !m al as chamado M#ernelN $!e mostre a -ersDo do Oernel" ,F Informe $!antos !s!@r os e (r!pos estDo cadastradosC ncl!s -e !s!@r os e (r!pos de s stema" VF L ste todos os !s!@r os do s stemaC e s!as propr edadesC por ordem alfa1Zt ca de lo( n" 5F Ordene a saQda do comando a1a 0oG $ echo -e [+6 Kn , Kn X Kn 5 Kn 6 Kn *[

Comandos Lsicos
E0ercQc o de ; 0aADo WF &ostre o stat!s de !so das part ABes dos ar$! -os
9etc9de1 an\-ers on e 9proc9men nfoC e0pl $!e por$!e sDo d ferentes se

os do s ar$! -os pertencem a mesma @r-ore de d ret/r osR XF At!al 8e a 1ase de dados do comando locate em 1ac#(ro!ndC depo s local 8e o ar$! -o MW6-pers stent-net"r!lesN" YF L ste todos os s!1-d ret/r os do d ret/r o 9home dentro do ar$! -o 9tmp9Home7 rs"t0t +6F 3om !m .n co comando l ste todos os ar$! -os do s stemaC nDo l star d ret/r osC $!e n c em com a letra a EA o! aFC tenham a e0tensDo "t0tC e mostre tam1Zm o tamanho de cada !m deles" NDo mostre saQdas de erro"

Comandos Lsicos
E0ercQc o de ; 0aADo ++F E0ec!te !m .n co comando $!e cr e c/p as 1ac#!p de todos os ar$! -os de e0tensDo ["t0t[ do s stema em !m ar$! -o 9tmp91ac#!pt0t"tarL +*F 3r e os al as de comando conforme e0emplo a1a 0oG $ data 7ata do s stema Edd9mm9HHHHFG +Y96W9*6+6 $ hora Hora do s stemaG **G+V +TF Altere a data de mod f caADo do ar$! -o 9etc9pass%d paraG Se0 ]!l Y +6G*5G+5 BR2 *6+6

Principais ar-uivos:diret;rios de configura<.o


+!L%A4 A4U:L%4UK $ 9etc9 n tta1 $ 9etc9hostname $ 9etc9pass%d $ 9etc9shado% $ 9etc9(ro!p $ 9etc9prof le $ 9etc9s#el ^$ "prof le ^$ "1ashrc ^$ "1ash\h storH ^$ "1ash\lo(o!t $ 9etc9sHsconf (9net%or# '!+=AT

Principais ar-uivos:diret;rios de configura<.o


+!L%A4 A4U:L%4UK $ 9etc9add!sers"conf $ 9etc9sec!r tH9 $ 9etc9net%or#9 nterfaces $ 9etc9resol-"conf $ 9etc9host"conf $ 9etc9hosts $ 9etc9rc` $ 9etc9 netd"conf $ 9etc9cronta1 $ 9etc9cron"` $ 9etc9s!doers $ 9etc9fsta1 $ 9etc9sHsconf (9net%or#-scr pts9 fcf(-eth_ '!+=AT $ 9etc9lo( n"defs

Principais ar-uivos:diret;rios de configura<.o


$ 9etc9 ss!e $ 9etc9motd $ 9etc9ser- ces $ 9etc9protocols $ cont n!ar " " " O!tros d ret/r os mportantesG 9tmp 9-ar9lo(

Principais ar-uivos:diret;rios de configura<.o


E0ercQc o de ; 0aADo +F S!al o ar$! -o respons@-el pela conf (!raADo dos ser- dores de nomesR *F Ident f $!e na l sta de ser- Aos assoc ados as portas 23a9U7a $!al Z a porta do ser- Ao ldapR TF L ste a conf (!raADo das part ABes e pontos de monta(em !t l 8ados pelo s stema d!rante a n c al 8aADo" ,F Ident f $!e em $!e datas9hor@r os o s stema e0ec!ta comandos pro(ramados nas Mtarefas a(endadasN" VF Se d!rante o lo(on dos !s!@r os do s st(ema fosse dent f cado $!e se est@ e0ec!tando !m scr pt de forma nde- daC o! sem necess dadeC $!a s os ar$! -os poder am ser -er f cadosR

Principais ar-uivos:diret;rios de configura<.o


E0ercQc o de ; 0aADo 5F Ao alterar o nome da estaADoC $!a s ar$! -os de-em ser -er f cados antes da pr/0 ma re n c al 8aADoR WF Se o !s!@r o Pose prec sar re n c ar as nterfaces de rede o! o!tros ser- AosC mas nDo tem acesso de rootC como poder a l 1erar o acesso somente para esse !s!@r o real 8ar essa tarefaR XF Ao nstalar o ser- Ao telnetd desePamos $!e esse ser- Ao nDo sePa carre(ado d!rante a n c al 8aADoC $!al o proced mento necess@r oR YF 7escre-a a conf (!raADo est@t caC para 7e1 anC do endereAo de rede do host ed!cacao"ed!"1r *66"+*6"++,"*69*,C (ate%aH *66"+*6"++,"*V,C dns X"X"X"XG

Comandos de rede
c arp c dig c nsloo?up c ifconfig c ifup c ifdoZn c mii&tool c netstat c ntpdate c route c tcpdmatc( c traceroute c Zget c getent c iftop c ss( c scp c finger c lin?s : lin?sE : lXn" c fping c nmap

Comandos de rede
c arp perm te !so da ta1ela d nbn ca de endereAos da camada * &a 2uni" 2?mem 3 3 &d (ostname &f filename Cpadr.oP :etc:et(ersJ &s (ostname et(er address 2 temp 3 2 pu9 3 2 trail 3 c dig permite auditorias em um servidor +4# para testar suas configura<>es &" edominiof 4# edominiof *K

Comandos de rede
c ifconfig einterfacef !t l t@r o de conf (!raADo das nterfaces de rede up N doZn N eaddress f netmas? emas?f (Z et(er emacf N ealiasf c ifup einterfacef ativa as interfaces de rede &a c ifdoZn einterfacef desativa as interfaces de rede &a

E9etc9net%or#9 nterfacesF

E9etc9net%or#9 nterfacesF

Comandos de rede
c mii&tool &i einterfacef l sta o stat!s de cone0Do nas nterfaces &r &Z &F C1FF9aseT"&F+ N 1FF9aseT"&=+ N 1F9aseT&F+ N 1F9aseT&=+J c netstat l sta o stat!s das cone0BesC ta1elas de roteamentoC e estat st cas das nterfaces" Ec@r os ar$! -os do 9proc sDo l dosF &a &r &* &s
g netstat &a N less Cone">es %nternet Ativas Cservidores e esta9elecidasJ Proto 'ecv&V #end&V !ndere<o Local tcp tcp tcp F F F F F.F.F.FPaHaa F 1EG.F.F.1PIIFa F F.F.F.FPEE !ndere<o 'emoto $UhA $UhA $UhA F.F.F.FPR F.F.F.FPR !stado F.F.F.FPR

g netstat &r Ta9ela de 'oteamento %P do Ternel +estino 1F.1H.1a.F default 'oteador R 1F.1H.1a.1 *scaraAen. F.F.F.F $p<>es *## 7anela irtt %face FF FF F et(F F et(F EHH.EHH.EHE.F U UA

Comandos de rede
c ntpdate &- &? &t
g ntpdate pool.ntp.org

aP!sta a data e hora - a N2a ENet%or# 2 me arotocolF

c route

e0 1e e at!al 8a a ta1ela de rotas

Add N del N &net N &(ost N default gZ c tcpdmatc( testa as re(ras para cone0Bes !sando tcp%rapper
g tcpdmatc( telnet aluno@1F.1H.1G.EHH clientP address 1F.1H.1G.EHH clientP username aluno serverP process telnet matc(edP :etc:(osts.denX line E1 accessP denied

c traceroute e0 1e a rota real 8ada por !m pacote I3&a - -m -s -%


g traceroute i.i.i.i

Comandos de rede
c Zget 1a 0a ar$! -os por H22aC H22aSC and ;2a protocols &r &o c iftop mostra nformaABes so1re o !so da redeC por nterface &i &n &F c ss( acesso remoto Sec!re Shell &i &o &p c scp transfere ar-uivos via ##= &i &o &P

E9etc9ssh9ssh\conf ( 9etc9ssh9sshd\conf (F

E9etc9ssh9ssh\conf ( 9etc9ssh9sshd\conf (F

Comandos de rede

E0ercQc os de ; 0aADo
1J Vual o endere<o de (ardZare C*ACJ da interface de rede da sua esta<.o de tra9al(o/ EJ 5erifi-ue se a sua interface de rede esta9eleceu um lin? de rede6 -ual sua velocidade W modo de opera<.o. Altere esse modo para =alf +uple" com transferjncia de 1FF m9ps sem utilizar autonegocia<.o. IJ Configure sua esta<.o de tra9al(o para utilizar as seguintes regras de redeP %nterface et(FPF 1SE.1ai.E.F:Eb Ak 1SE.1ai.E.1 bJ Lai"e o ar-uivo (ttpP::gerds.utp.9r:ro9erto:linu":linu".doc por lin(a de comando e transfira uma c;pia6 por ss(6 para a esta<.o 1SE.1ai.E.1F16 utilizando o usurio aluno. HJ Ap;s o e"ercBcio b identifi-ue o endere<o *AC da esta<.o 1SE.1ai.E.1F1 atravs da sua ta9ela din`mica de endere<os de (ardZare. aJ #e eu tiver um servidor apac(e Cporta iFJ e -uiser sa9er -uantas cone">es est.o a9ertas6 -ual comando poderia au"iliar nessa -uest.o/

Comandos de rede

E0ercQc os de ; 0aADo
GJ Como verificar se o tcpZappers contm alguma regra -ue limita o acesso telnet do cliente 1F.1F.1F.1F a sua esta<.o de tra9al(o/ iJ Como verificar se a esta<.o 1F.1F.1F.1F possui a porta de ftp aguardando cone">es de rede6 se est fec(ada ou se possui algum filtro/ SJ Vual o comando -ue realiza uma consulta de data:(ora de um servidor 4TP EFF.1aF.F.i6 sem alterar a data:(ora do sistema/ 1FJ %dentifi-ue na rede 1F.1F.1F.F:Eb -uantos e-uipamentos ativos est.o respondendo %C*PP 11J Tente mapear a rota6 utilizando protocolo %C*P6 para se c(egar a um dos servidores da pgina ZZZ.google.com.9r 1EJ Ao 9ai"ar um ar-uivo de uma pgina -ual-uer identifi-ue -ual a maior ta"a de transfer ncia atingida.

Comandos avan<ados
c dd c diff c Z(ic( c fsc? c last c lastlog c lsof c lspci c lsus9 c mount c nice c renice c no(up c pidof c pstree c stat c sXnc c Zatc( c dmesg c (Zcloc? c 9g c fg c @o9s c ?ill c ?illall c top c continuar ..

Comandos avan<ados
c dd con-erte e cop a ar$! -os e d spos t -os de 1locos

if\ef of\ef 9s\" count\" c diff perm te comparar ar$! -os l nha a l nha

<f le+> <f le*> Se! !so com!m Z a cr aADo de patch e para controle de alteraABes" c Z(ic( nforma o cam nho a1sol!to do ar$! -o de !m comando ecomandof $9s.P necessrio -ue o comando este@a no PAT= do usurio.

Comandos avan<ados
c fsc? ver f ca e repara s stemas de ar$! -os GNU9L n!0"

PacotesP eEfsprogs dosfstools ntfsprogs "fsprogs reiserfsprogs reiserbprogs @fsutils c last l sta os .lt mos lo( ns real 8ados E:var:log:ZtmpF

eusuriof N &n N c lastlog l sta o .lt mo lo( n de todos os !s!@r os do s stema

&t ediasf &u eusuriof

Comandos avan<ados
c lsof l sta os rec!rsos !t l 8ados por !m determ nado processo

&p epidf N &u eusuariof N l c lspci l sta os d spos t -os do 1arramento a3I

&v N &vv c lsus9 l sta os d spos t -os do 1arramento USB

&v N &d edevicef

Comandos avan<ados
c mount l sta d spos t -os em !so e monta f lesHstem

&a N edispositivof N &t efilesXstemf N &o eop<>esf c nice altera a pr or dade padrDo E6F ao n c ar !m processo

&n eprioridade &1S a EFf c renice altera a pr or dade de !m processo em e0ec!ADo

eprioridade &1S a EF f epidf

Comandos avan<ados
c no(up altera a saQda padrDo de !m comando <non-ttH>C tornando

se! processo ndependente do term nal EShellF no(up ecomandof


nohup: a ignorar a entrada e a acrescentar a sada a `nohup.out'

c pidof

proc!ra o n.mero do processo em e0ec!ADo

eprogramaf c pstree &p l sta a @r-ore de processos em e0ec!ADoC perm t ndo

- s!al 8ar a relaADo de depend'nc as entre os processos

Comandos avan<ados
c stat e0tra nformaABes de ar$! -os e s stemas de ar$! -os efilef N &f N &t c sXnc assegura -ue os discos este@am sincronizados com o cac(e c Zatc( na tela" &n ecomandof e0ec!ta !m pro(rama per od camenteC at!al 8ando a saQda

Comandos avan<ados
c dmesg e0 1e a saQda da n c al 8aADo (erada pelo #ernel lendo !m

1!ffer !t l 8ado pelo #ernel para en- ar mensa(ens de e-entos c (Zcloc? e0 1e e altera a data9hora da m@$! na

g (Zcloc? &&set &&date\mFS:EE:1SGi 1FPIFm


&Z ou &&sXsto(c P para copiar a (ora do sistema para o rel;gio da m-uina. &s ou &&(ctosXs P para copiar a (ora da m-uina para a (ora do sistema. &r ou ds(oZ

c 9g

l sta e en- a processos em se(!ndo plano"

epidf

Comandos avan<ados
c fg l sta e en- a processos em pr me ro plano Eo! plano de frenteF"

epidf c @o9s @o9s c ?ill en- a s na s para os processos l sta os processos em se(!ndo plano o! parados ES2OaF

& esinalf epidf &l Clista todos os sinais possBveis de serem enviadosJ

Comandos avan<ados
c ?illall en- a s na s para os processos com !m determ nado nome

enomef &u euserf N &g egroupf c top l sta os processos por ordem de cons!mo de rec!rsos

&u euserf &p epidnsf

Comandos avan<ados
!"ercBcios de fi"a<.o
1J %dentifi-ue os seguintes componentes da sua esta<.o de tra9al(oP Processador6 placa de vBdeo6 placa de rede e placa de som. EJ %nicie o Lroffice kriter6 por lin(a de comando6 com prioridade 1H. +epois altere essa prioridade para &H. +emonstre esse processo com alguma ferramenta -ue permita verificar essa altera<.o. IJ %nicie um processo com o comando sleep CEFF segundosJ 6 fa<a a seguinte se-u ncia de comandosP aJ pare a e"ecu<.o do comando ap;s ter iniciadoP 9J liste os processos paradosP cJ reinicie o comando em segundo planoP dJ finalize o processo enviando um sinal #%AT%LL para eleP bJ %dentifi-ue se na inicializa<.o foi encontrada uma interface de rede Cet(F61J6 caso positivo verifi-ue se o lin? de rede est )up0.

Comandos avan<ados
!"ercBcios de fi"a<.o
HJ Liste todos os recursos de mem;ria Car-uivos:9i9liotecas carregadasJ utilizados durante a e"ecu<.o do evince Cse for necessrio instaleJD aJ Liste informa<>es detal(adas so9re os seguintes ar-uivos e seus sistemas de ar-uivosP :etc:passZd6 :dev:cdrom6 :proc:cpuinfo GJ Crie um ar-uivo com EFF *L6 formate com o sistema de ar-uivos "fs. Fa<a a montagem no ponto :mnt e com op<.o de escrita6 copie alguns ar-uivos nele6 desmonte. 'ealize uma c(ecagem para verificar sua integridade. iJ Como criar um 9ac?up com o comando tar de todos os ar-uivos do diret;rio :(ome6 encerrar o terminal e garantir -ue o comando continue sendo e"ecutado/ SJ Como desco9rir -ual o camin(o a9soluto para o comando locate/ 1FJ %ndi-ue uma forma de sa9ermos se um pendrive foi recon(ecido no 9arramento U#L.

Tipos de variveis e atri9ui<.o


4.o necessrio declarar uma varivel em #(ell #cript6 na atri9ui<.o n.o deve&se utilizar espa<os e uma varivel pode rece9er vrios tipos de dados. $ -alor4+ $ str n(4Ne0pressDo $USERN d reconhece o caracter espec al $ $ str n(4ee0pressDo $USERe $ str n(4$Ne0pressDoN $ #ernel4f!name -rf $ #ernel4$E!name -rF $ soma4$EEV:XFF d nDo reconhece caracteres espec a s d reconhece Kt Kn KaC etc"""

Tipos de variveis e atri9ui<.o


!"emplosP $ nome43h co $ dade45 $ echo O $nome tem $ dade anos" O 3h co tem 5 anos" $ Poana4T6 $ 1eth4V6 $ echo A soma das dades de Beth e ]oana Z de $EE$Poana:$1ethFF anos" A soma das dades de Beth e ]oana Z de X6 anos"

Tipos de variveis e atri9ui<.o


!"emplosP dEfet!a !m c@lc!lo matem@t co s mples" echo -e M* 0 T 4 $EE*`TFFN echo -e MEV : TF9* 4 $EEEV:TF9*FFN echo -e M, - * 4 $EE,-*FFN

Tipos de variveis e atri9ui<.o


!"emplosP d L sta de Us!@r os USERLIS24fcat 9etc9pass%d ) a%# -;G eIpr nt $+Jef echo $USERLIS2 1J Levando em considera<.o o e"emplo a9ai"o6 complete as demais variveisP Ia4$E9s1 n9 fconf ( eth6 ) (rep [ net end[ ) a%# -;[ [ eIpr nt $TJeF &ASO4 &A34 Gg4

Tipos de variveis e atri9ui<.o


Atri9uindo valor a uma varivel com o comando readP
$ read -p MInforme se! nomeGN NO&E &ar a $ echo $NO&E &ar a

'ece9endo a informa<.o de uma forma eleganteP +ialog


nome4$E 9!sr91 n9d alo( --stdo!t -- np!t1o0 e7 ( te se! nomeGe 6 6 F echo [O se! nome ZG $nome[

Tipos de variveis e atri9ui<.o


'ece9endo a informa<.o de uma forma eleganteP +ialog
e0port 7IALOG4$E%h ch d alo(F d Entrada de dados NO&E4$E $7IALOG --stdo!t -- np!t1o0 e7 ( te se! nomeGe 6 6 F echo [O se! nome ZG $NO&E[ d 3onf rmaADo $7IALOG --Hesno e7esePa cont n!arRe 6 6 echo [$R[ d &ensa(em de a- so $7IALOG --t tle [A- so[ --ms(1o0 MNDo faAa ssohN 6 6 d &en! Oa34$Ed alo( --stdo!t --men! [Selec one !ma opADoG [ 6 6 V + [aera[ * [U-a[ T [&aAD[ , [A1aca0 [ V [A1acate[F echo $Oa3

Tipos de variveis e atri9ui<.o


'ece9endo a informa<.o de uma forma eleganteP UenitX
e0port iENI2=4$E%h ch 8en tHF d Entrada de dados NO&E4$E$iENI2= --entrH --t tle [NO&E[ --te0t [7 ( te se! nomeG [F echo [O se! nome ZG $NO&E[ d 3onf rmaADo $iENI2= --$!est on --t tle [=ES 9 NO[ --te0t [2em certe8aR[ echo [$R[ d &ensa(em de a- so $iENI2= -- nfo --t tle [3UI7A7O[ --te0t [;U]A" ESSA &ULHER 2E& 7ONO"[ $iENI2= --not f cat on --t tle [;U]A[ --te0t [3! dado" Essa m!lher tem dono"[ d &en! Oa34[$E8en tH --l st --col!mn [Selec one !ma opADoG [ --t tle4[;RU2AS[ [A1aca0 [ [Banana[ [&oran(o[ [U-a[ [Sa r[F[ echo $Oa3

Tipos de variveis e atri9ui<.o


!"pans.o de #trings
$Id-arJ - Retorna o tamanho da str n( e-al $-ar - E0ec!ta o conte.do de $-ar $Ihte0to`J - Retorna os nomes de -ar @-e s comeAadas por ete0toe $I-arGNGtamJ - Retorna etame caracteres j part r da pos ADo eNe $I-ardte0toJ - 3orta ete0toe do nQc o da str n( $I-ar<te0toJ - 3orta ete0toe do f nal da str n("

Tipos de variveis e atri9ui<.o


#u9#tring c #UL#T'\0meusapato0 c ec(o co#UL#T'Pc2I3p sapato c ec(o co#UL#T'Pc2&a3p sapato c ec(o co#UL#T'Pc2F3Pc2I3p meu

Tipos de variveis e atri9ui<.o


c #UL#T'\0*eu sapato vel(o. *eu sapato novo.0 #u9stitui<.o de #trings c ec(o co#UL#T':sapato:carrop *eu carro vel(o. *eu sapato novo. c ec(o co#UL#T'::sapato:carrop *eu carro vel(o. *eu carro novo. $ 9om e vel(o sed c ec(o c#UL#T' N sed ms:sapato:carro:m c ec(o c#UL#T' N sed ms:sapato:carro:gm g#u9stitui uma vez g#u9stitui todas g#u9stitui todas as ocorr ncias g#u9stitui uma vez

Tipos de variveis e atri9ui<.o


ArraX em Las( Vuando devo usar/ +evemos usar arraXs nas seguintes situa<>esP 1. Vuando lidamos com muitos dados do mesmo tipo. E. Vuando esses dados s.o correlacionados. I. Vuando precisamos tra9al(ar com esses dados em loops. b. Vuando precisamos de Bndices para tra9al(ar nos dados. H. Vuando -ueremos evitar a fadiga. a. !ncontrar coisas rapidamente. !"emplo de usoP em lista de cidades6 lista de alunos6 lista de itens...

Tipos de variveis e atri9ui<.o


ArraX em Las( 1J %niciando um arraXP $ array=(valor1 valor2 valor3) EJ 5amos a segunda maneira de se criar um arraXP $ array2[0]='valor1' $ array2[1]='valor2' $ array2[2]='valor3'
$9s.P Acima temos um arraX com tr s valores6 internamente o s(ell armazena essa estrutura dessa maneiraP

$ array=([0]="valor1" [1]="valor2" [2]="valor3")

Tipos de variveis e atri9ui<.o


ArraX em Las( IJ Listar todos os elementos de um arraXP $ echo ${array[*]} bJ Contar os elementos de um arraXP $ echo ${#array[*]} HJ Contar taman(o de um elemento do arraXP $ echo ${#array[<valor>]} aJ !liminar um elemento do arraXP $ unse array[valor]

GJ !liminar um arraXP $ unse array

Tipos de variveis e atri9ui<.o


ArraX & !"emplo de uso c L%#TA\CmCuriti9am m#.o Paulom m'io de 7aneirom mFlorian;polism mPorto AlegremJ c ec(o coL%#TA2I3p Florian;polis c ec(o coL%#TA213p #.o Paulo $9serve -ue a lista inicia&se pela posi<.o zeroP F Curiti9a 1 #.o Paulo E 'io de 7aneiro ...

5ariveis de Am9iente
LA4A \ Codifica<.o do terminal e linguagem padr.o =$*! \ +iret;rio (ome do usurio logado U#!' : U#!'4A*! \ 4ome do usurio logado Pk+ \ +iret;rio corrente PAT= \ Camin(os pelos -uais o s(ell procurar os comandos -ue voc tentar e"ecutar =$#T4A*! \ 4ome da esta<.o de tra9al(o (ttp[pro"X \ Pro"X da rede para cone">es e"ternas / \ 5alor de retorno do ultimo comando e"ecutado

5ariveis de Am9iente
P#1 \ Formata o prompt padr.o 'A4+$* \ Fornece um n8mero inteiro de forma aleat;ria +%#PLA] \ %d do displaX utilizado pelo servidor K na corrente sess.o =%#TF%L! \ Ar-uivo -ue ir armazenar o (ist;rico dos comandos =%#TF%L!#%U! \ Taman(o m"imo do ar-uivo com (ist;rico l +ica para ver todas as vriaveisP c ec(o ceta9f

Tra9al(ando com ar-uivos de te"to


#(ell o am9iente. Um #(ell #cript formado por um con@unto de comandos -ue ser.o e"ecutados a partir de um ar-uivo de te"to. Para facilitar o entendimento so9re #(ell #cript teremos -ue analisar vrios fatores -ue ir.o contri9uir para sua correta e"ecu<.oP 1J F=# d Ar-uivos e diret;rios EJ #istema de permiss>es IJ Filtros de te"to bJ !ditores de te"to HJ Comandos 9sicos do #(ell

Tra9al(ando com ar-uivos de te"to


F=# d Ar-uivos e diret;rios (ttpP::ZZZ.pat(name.com:f(s:

Tra9al(ando com ar-uivos de te"to


F=# d Ar-uivos e diret;rios (ttpP::ZZZ.pat(name.com:f(s:
: d Q na raiz -ue ficam todos os diret;rios do A4U:Linu"D :9in d Contm os comandos essenciais para o funcionamento do sistemaD :9oot d Ar-uivos necessrios q inicializa<.o do sistemae os ar-uivos do gerenciador de 9ootD :dev d Armazena todos os ar-uivos&dispositivos6 c(amados de n;s de dispositivosD :etc d Ar-uivos de configura<.o do sistema da m-uina localD :li9 d Li9lilotecas compartil(adas e m;dulos do ?ernelD :media d Ponto de montagem para mBdias removBveisD :mnt d +iret;rio usado como ponto de montagem de sistema de ar-uivosD :opt d 4ormalmente6 utilizado por programas -ue foram instalados com o sistema @ em funcionamento6 e precisam de um espa<o maior para serem armazenados Ce". $pen$fficeJD :var d Contm ar-uivos de dados variveisD :s9in d Comandos utilizados para inicializar6 reparar6 restaurar e:ou recuperar o sistemaD :tmp d Utilizado para armazenar ar-uivos temporriosD

Tra9al(ando com ar-uivos de te"to


F=# d Ar-uivos e diret;rios (ttpP::ZZZ.pat(name.com:f(s:
:usr & Armazena dados compartil(ados6 somente&leituraD :(ome d Q o diret;rio -ue mantm os dados dos usuriosD :root d +iret;rio pessoal do adminsitrador CrootJ do sistemaD :proc d +iret;rio virtual6 mantido pelo ?ernel onde encontramos a configura<.o atual do sistemaD

Tra9al(ando com ar-uivos de te"to


#istema de permiss>es Tipos de permiss>es

Tra9al(ando com ar-uivos de te"to


#istema de permiss>es Tipos de permiss>es
aluno@gerds123:~/curso$ total 29604 -rw-r--r-- 1 aluno cstr drwxrwxrwx 5 aluno cstr -rwxr-xr-x 1 aluno cstr -rw------- 1 aluno cstr drwxrwxrwx 3 aluno cstr -rw-r--r-- 1 aluno cstr -rw-r--r-- 1 aluno cstr drwxrwxrwx 3 aluno cstr ls -l 2007101 44 5591278 1314131 19 6811510 6264237 17 Jan Jan Jan Jan Jan Jan Jan Jan 5 12 12 4 12 13 12 12 10:58 14:46 15:24 09:12 14:46 10:50 16:01 14:46 Curso-Gnome.pdf Debian-Desktop Desktop.sh Expresso.pdf Pessoa SL-2.odp SL.odp Totais

Tra9al(ando com ar-uivos de te"to


#istema de permiss>es
#U%+

Permiss>es especiais

#e este 9it estiver ligado em um ar-uivo e"ecutvel6 isso indica -ue -ue ele vai rodar com as permiss>es do seu dono Co proprietrio do ar-uivoJ e n.o com as permiss>es do usurio -ue o e"ecutou. $L#P #; tem efeito em ar-uivos e"ecutveis. #AU%+ Faz o mesmo -ue o #U%+6 mas agora o ar-uivo e"ecutado vai rodar com as permiss>es do grupo do ar-uivo. #e aplicado a um diret;rio6 for<a os ar-uivos:diret;rios criados dentro dele a ter o mesmo grupo do diret;rio pai6 ao invs do grupo primrio do usurio -ue o criou. #T%CT] #e este 9it for ativado6 faz com -ue ar-uivos criados em um determinado diret;rio s; possam ser apagados por -uem o criou CdonoJ ou pelo super&usurio do sistema. Um e"emplo de uso do #T%CT] o diret;rio :tmp.

Tra9al(ando com ar-uivos de te"to


#istema de permiss>es Utilitrios
g c(mod #inta"eP c(mod epermiss>esf ear-uivo:diret;riof *uda as permiss>es de um ar-uivo ou diret;rio. !"istem vrias formas de se alterar as permiss>es6 escol(a a -ue mais l(e agrada. g c(oZn #inta"eP c(oZn eusuriof ear-uivo:diret;riof $U #inta"eP c(oZn eusuriof.grupo ear-uivo:diret;riof $ comando c(oZn permite -ue se altere o usurio proprietrio de um ar-uivo ou diret;rio. Possui a possi9ilidade de alterar o grupo @unto ao proprietrio. g c(grp #inta"eP c(grp egrupof ear-uivo:diret;riof *uda o grupo do -ual um ar-uivo ou diret;rio faz parte.

Tra9al(ando com ar-uivos de te"to


#istema de permiss>es Utilitrios
g umas? #inta"eP umas? evalorf +efine uma mscara de permiss.o pela -ual os novos ar-uivos e diret;rios ser.o criados.

Tra9al(ando com ar-uivos de te"to


!"ercicios de Fi"a<.o
1J Foi determinado -ue os usurios comuns Cn.o rootJ n.o dever.o e"ecutar o comando df. Como retirar a permiss.o do comando df para -ue esses usurios n.o possam e"ecut&lo/ EJ Altere o grupo do ar-uivo :var:log:lpr.log para lpadmin para -ue os usurios desse grupo possam ler este ar-uivo. IJ Como fazer para -ue um diret;rio compartil(ado pelo sam9a crie ar-uivos fazendo com -ue ele manten(a as permiss>es para o grupo de usurios6 ou se@a6 a pessoa Ccom autoriza<.oJ -ue e"ecutar o ar-uivo Cacessar o diret;rioJ6 o far com se fosse mem9ro do grupo a -ual pertence o ar-uivo. bJ Como definir -ue um determinado ar-uivo ten(as as seguintes permiss>esP +onoP Ler6 Aravar e !"ecutar ArupoP Ler e Aravar $utrosP Ler HJ Vual o diret;rio -ue mant m informa<>es do sistema -ue podem variar durante o uso dos recursos Cdaeom6 logs6 etc...J/ aJ Vual diret;rio -ue mantm pontos din`micos de montagem de mBdias removiveis/

Tra9al(ando com ar-uivos de te"to


Filtros de Te"to

$ Linu" possui diversas ferramentas para tra9al(ar e transformar ar-uivos te"to6 puros sem formata<.o especial. !stas ferramentas s.o 8teis -uando estamos tra9al(ando com #cripts6 Ar-uivos de Configura<.o6 Ar-uivos de Log6 etc.

Tra9al(ando com ar-uivos de te"to


Filtros de Te"to

cat - concatenar arquivos, ou entrada padro, para a sada padro.


# cat teste1.txt # cat teste1.txt teste2.txt > teste # cat teste3.txt >> teste # cat < texto.txt # cat texto.txt | wc -l

Tra9al(ando com ar-uivos de te"to


Filtros de Te"to cut - L o contedo de um ou mais arquivos e tem como sada uma coluna vertical Opes -b numero - Imprime o byte nmero -c nmero - Imprime o caractere nmero -d delimitador elimitador que separa as colunas

-! nmero - Imprime a coluna nmero

Tra9al(ando com ar-uivos de te"to


Filtros de Te"to "#emplos de uso do comando cut$ d fconf ( eth6 ) (rep e net e ) c!t -d eGe -f * ) c!t -d e e -f * d ls -la ) c!t -c ,W-W6 d $c!t kd G -f + 9etc9pass%d d cat 9etc9hosts ) c!t kf *

Tra9al(ando com ar-uivos de te"to


Filtros de Te"to e#pand - %roca a tabulao dentro dos te#tos pelo nmero de espaos. te#to mais !&cil sua leitura. Opes$ -t nmero - especi!ica o nmero de espao para o tab. -i - 'onverte somente no incio das lin(as "#emplo de uso$ ) cat L"I*+".%,% aaaa a a a a ) e#pand -t - L"I*+".%,% aaaa aaaa ei#a o

Tra9al(ando com ar-uivos de te"to


Filtros de Te"to !mt - .ormata um te#to com uma lar/ura espec!ica. 0ode remover ou adicionar espaos. Opes$ -1 nmero - 'on!i/ura a lar/ura dese2ada para o te#to

) !mt 31 45 te#to.t#t

Tra9al(ando com ar-uivos de te"to


Filtros de Te"to grep - 0rocura por lin(as6palavras em um arquivo que satis!aa um determinado padro de busca. Opes$ -i -c -l -v -n i/nora maiscula e minscula contar quantas coincidncias no mostra a lin(a encontrada +ostra as lin(as no coincidentes +ostra a lin(a dentro do arquivo

Tra9al(ando com ar-uivos de te"to


Filtros de Te"to "#emplos de uso do /rep ) /rep aluno 6etc6pass1d 7.orma no ele/ante$ 8 cat 6etc6pass1d 9 /rep aluno: ) /rep aluno 6etc6pass1d 9cut 3d $ -! 4 ) /rep et(5 6proc6net6dev ) i!con!i/ et(5 9 /rep pac;ets

Tra9al(ando com ar-uivos de te"to


Filtros de Te"to

(ead - +ostra as primeiras -5 lin(as do incio de um te#to, ou um nmero de lin(as de!inido pelo usu&rio. Opes$ -n nmero 'on!i/ura o nmero de lin(as a ser mostrada

) (ead 3n <5 6etc6pass1d

Tra9al(ando com ar-uivos de te"to


Filtros de Te"to

tail - +ostra as ltimas -5 lin(as do !im de um te#to, ou um nmero de lin(as de!inido pelo usu&rio. Opes$ -n nmero 'on!i/ura o nmero de lin(as a ser mostrada

) tail 3n <5 6etc6pass1d

Tra9al(ando com ar-uivos de te"to


Filtros de Te"to 2oin - =nes a lin(as de ambos os arquivos que ten(am um ndice comum. =sado para criar um banco de dados simples. Opes$

-2- nmero - "scol(e o campo nmero como ndice para o arquivo-2< nmero - "scol(e o campo nmero como ndice para o arquivo< -2 nmero -2- nmero - "scol(e o campo nmero como ndice para ambos arquivos

Tra9al(ando com ar-uivos de te"to


Filtros de Te"to "#emplo de uso do comando 2oin #upondo um ar-uivo comP
1. AU=&1EIb E. =]+&EIiS

$utro ar-uivo comP


1. Fiat Uno *ille E. Audi AI

c @oin d@ 1 ar-uivo1 ar-uivoE


1. AU=&1EIb Fiat Uno *ille E. =]+&EIiS Audi AI

Tra9al(ando com ar-uivos de te"to


$ poderoso #!+ O utilit&rio >sed? @ um editor de streams. =m pro/rama desta natureAa, @ usado para realiAar trans!ormaes num arquivo de te#to ou num pipe 7!lu#o de dados:. Bed @ bastante til para !aAer trocas de letras, palavras ou lin(as inteiras de te#to. C uma !erramenta lar/amente utiliAada em scripts s(ell. sed DopesE DscriptE Darquivo6pipeE

Tra9al(ando com ar-uivos de te"to


$ poderoso #!+ d e"emplos de usoP $ sed n teste.txt Imprime o contedo do arquivo >teste.t#t? na sada padro 7monitor:. $ sed -n 2,4p teste.txt Imprime da se/unda F quarta lin(a do arquivo >teste.t#t? na sada padro 7monitor:. $ sed s/ !/"arc#us/ teste.txt Bubstitu a primeira ocorrncia da strin/ >A@? de cada lin(a por >marcius?, presente no arquivo >teste.t#t?.

Tra9al(ando com ar-uivos de te"to


$ poderoso #!+ d e"emplos de usoP $ sed -e 2$ -e s/ !/"arc#us/ teste.txt 0rocessa o arquivo >teste.t#t? at@ o inicio da se/unda lin(a, substituindo a primeira ocorrncia da strin/ >A@? por >marcius?. $sed s/ !/"arc#us/2 teste.txt Bubstitu a se/unda ocorrncia da strin/ >A@? de cada lin(a, pela strin/ >marcius?, presente no arquivo >teste.t#t?. $sed /%$/d teste.txt *pa/a as lin(as em branco do arquivo >teste.t#t?.

Tra9al(ando com ar-uivos de te"to


$ poderoso #!+ d e"emplos de usoP $ sed / !/d teste.txt *pa/a as lin(as que conten(am a strin/ >A@? do arquivo >teste.t#t?. $sed -# s/sa"&a/rede/ teste.txt Bubstitu a primeira ocorrncia da strin/ >samba? de cada lin(a por >rede?, e /rava esta alterao no arquivo >teste.t#t?. $ sed /'(('/)d teste.txt > teste*"od#+#cado.txt *pa/a todas as lin(as que conten(am a strin/ >'00'?, independentemente de maisculas e minsculas, /ravando o resultado no arquivo >testeGmodi!icado.t#t?.

Tra9al(ando com ar-uivos de te"to


!"ercBcios de Fi"a<.o -: Liste as lin(as do arquivo 6etc6/roup em que o usu&rio aluno este2a presente. <: Liste todos os usu&rios do sistema, apresentando na sada do comando apenas o nome do usu&rio e seu respectivo =I . 3, -#ste apenas as l#n.as do /etc/passwd co" usu/r#os $ue #n#c#e" co" a. 4, -#ste apenas as 0 1lt#"as l#n.as do ar$u#2o /etc/passwd $ue ter"#ne" co" a express3o /&#n/s.. 4: *ltere a sada do comando lspci para apresentar a se/uinte sada para placas de vdeo, som e rede$
# lspc# | <xxx | xxx | xxx> 44514.2 (laca de so"5 67) 7ec.nolog#es )nc 89x44 6 al#a :)ntel ;<6, 41540.4 (laca de =>deo5 67) 7ec.nolog#es )nc ?8@A4 B?adeon C1244 8er#esD 42544.4 (laca de rede5 ?ealteE 8e"#conductor 'o., -td. ?7-F141G/?7-F142G

Tra9al(ando com ar-uivos de te"to


!ditores de te"to cat nano gedit ooZriter Continuar... !ditor escol(idoP 5im & 5isual %nterface %mproved Para o9ter mais informa<>es so9re 5%* consulteP (ttpP::aurelio.net:vim:vim&9asico.t"t

Tra9al(ando com ar-uivos de te"to


!ditores de te"to & 5%*

Tra9al(ando com ar-uivos de te"to


!ditores de te"to d !"ecutando o 5%* $ vim => Abre o vim vazio, sem nenhum arquivo e exibe a tela de apresentao. $ vim arquivo => Abre o arquivo de nome "arquivo". $ vim arquivo + => Abre o arquivo de nome "arquivo", com o cursor no final do mesmo. $ vim arquivo +10 => Abre o arquivo de nome "arquivo", com o cursor na linha 10. $ vim arquivo +/Copag => Abre o arquivo de nome "arquivo", na primeira ocorrncia da palavra "Copag".

Tra9al(ando com ar-uivos de te"to


!ditores de te"to & 5%* 4o vim temos vrios mmodosm6 -ue s.o estados do editor. #.o elesP Modo de Insero de Comandos Visual Busca Reposio / R Tecla i <ESC> : / v Rodap Descrio Inser o de texto -------------------------------------------------------- INSERT -Comandos de manipula o de texto Comandos de manipula o arquivo Busca de padr es no texto Inser o sobreescrevendo

Linha de comando :

-- VISUAL -- Sele o visual de texto -- REPLACE --

Tra9al(ando com ar-uivos de te"to


!ditores de te"to d 5%* d *odo de comando :w => Salva o arquivo que est sendo editado no momento. :q => Sai. :wq => Salva e sai. :x => Idem. ZZ => Idem. :w! => Salva forado. :q! => Sai forado. :wq! => Salva e sai forado.

Tra9al(ando com ar-uivos de te"to


!ditores de te"to d 5%* d *odo 5isual Entre no modo visual: v Agora, utilize as teclas direcionais (setas) do teclado, para selecionar o texto desejado. Pressione e cole, utilizando a tecla "p" (paste). Veja agora como apagar um determinado texto: Utilizando normalmente as teclas Backspace/Delete, ou entrando em modo visual (v) e pressionando a tecla Delete. Voc pode remover at o final de uma palavra, utilizando: dw Pode tambm remover at o final de uma frase: d$

Tra9al(ando com ar-uivos de te"to


Criando o primeiro ar-uivo de #(ell #cript $ vim helloword.sh #!/bin/bash VAR=Hello Word! echo $VAR $ chmod +x helloword.sh $ ./helloword.sh Hello Word! $bash +xv helloword.sh # Execu o em modo de debug.

Tra9al(ando com ar-uivos de te"to


!"ercBcios de Fi"a<.o Crie um shell script com a seguinte sa da: ------- Descrio do sistema ------------Sistema operacional: $OS Processador: $CPU Clock da CPU: $CLOCK Memria da Mquina: $MEM Placa de vdeo: $VGA Placa de Rede: $NET Placa de Som: $SOUND Esta mquina j est no ar: $UPTIME

Tra9al(ando com ar-uivos de te"to


!"ercBcios de Fi"a<.o Faa um script que liste todos os execut veis que esto no seu PATH, ordene a sa da, e grave em um arquivo chamado executaveis.txt. erro. N o deixe aparecer nenhuma mensagem de

5ariveis especiais
5arivel cF c1 ... cS co1Fp ... cg cR c@ cc c/ Par`metros Posicionais Par`metro n8mero F Cnome do comando ou fun<.oJ Par`metro n8mero 1 Cda lin(a de comando ou fun<.oJ Par`metro n8mero 4 ... Par`metro n8mero S Cda lin(a de comando ou fun<.oJ Par`metro n8mero 1F Cda lin(a de comando ou fun<.oJ Par`metro n8mero 44 l
48mero total de par`metros da lin(a de comando ou fun<.o

Todos os par`metros6 como uma string 8nica Todos os par`metros6 como vrias strings protegidas 48mero P%+ do proc esso atual Cdo pr;prio scriptJ C;digo de retorno do 8ltimo comando e"ecutado

$peradores do #(ell

$peradores Aritmticos W Adi<.o & R : #u9tra<.o *ultiplica<.o +ivis.o

$peradores 'elacionais \\ %gual ,\ f e +iferente *aior *enor

f\ *aior ou %gual e\ *enor ou %gual

r *;dulo RR !"ponencia<.o

$peradores do #(ell

$peradores de Atri9ui<.o \ W\ &\ R\ :\ r\ WW d Atri9ui valor a uma varivel %ncrementa a varivel por uma constante +ecrementa a varivel por uma constante *ultiplica a varivel por uma constante +ivide a varivel por uma constante 'esto da divis.o por uma constante %ncrementa em 1 o valor da varivel +ecrementa em 1 o valor da varivel

$peradores do #(ell

$peradores L;gicos MM ! l;gico CA4+J NN R : $U l;gico C$'J *ultiplica<.o +ivis.o

$peradores de L%T \\ %gual ,\ f e +iferente

*aior *enor

f\ *aior ou %gual e\ *enor ou %gual

r *;dulo RR !"ponencia<.o

!strutura de decis.o
if T!#T! t(en comandos elif T!#T! comandos else comandos fi

Caso o comando se@a e"ecutado com sucesso ser.o e"ecutados os comandos do 9loco t(en.

!strutura de decis.o
if 2 copc &e- 1 3 t(en inclusao elif 2 copc &e- E 3 t(en alteracao elif 2 copc &e- I 3 t(en e"clusao elif 2 copc &e- b 3 t(en e"it else ec(o )+igite uma op<.o entre 1 e b.0 fi

!strutura de decis.o
Podemos associar a estrutura de decis.o com as op<>es do comando testP $P!'Ahs$ C$* A'VU%5$#P &e ar&s ar&f ar&d dir &z ar&r arar-uivo &Z ar&" ar-uero sa9er se pode alterar o ar-uivo -uero sa9er se ele consegue e"ecutar o ar-uivo verifica se o ar-uivo e"iste verifica se o ar-uivo e"iste e tem taman(o maior -ue zero verifica se ele um ar-uivo verificar se ele um diret;rio verifica se o ar-uivo e"iste e tem taman(o zero -uero sa9er se o usurio -ue esta e"ecutando o s(ell script pode ler o

... ver c man teste

!strutura de decis.o
Podemos associar a estrutura de decis.o com as op<>es do comando testP $P!'Ahs$ C$* #T'%4A &n string se maior -ue zero &z string se igual a zero $P!'Ahs$ C$* %4T!%'$# n1 &e- nE d igual n1 &gt nE d maior n1 &lt nE d menor ... 5er cman test

!strutura de decis.o
!"ercBcios utilizando a estrutura de decis.o CifJP 1J Crie um s(ell script -ue rece9a dois n8meros inteiros Centre F e 1FFJ e informe se o primeiro maior6 menor ou igual ao segundoD EJ !screva um script -ue rece9a um ar-uivo por par`metro6 com camin(o a9soluto6 e informe se o ar-uivo e"iste6 se tem taman(o maior -ue zero e se for um diret;rio liste seu conte8doD IJ Crie um programa -ue rece9e um comando simples6 por par`metro6 verifi-ue se ele realmente e"iste no sistema Cinformando sua aus nciaJ e informe o camin(o a9soluto do seu 9inrio. 4o final pergunte ao usurio se ele dese@a ver o manual on&line do comando rece9ido. Cconsidere um comando vlido os comandos encontrados pelo utilitrio Z(ic(J

!strutura de decis.o
Q uma estrutura de decis.o6 ainda mais sofisticada -ue )if0. A seguir6 a sinta"e de utiliza<.oP case 5A'%t5!L in 5AL$'1J comandosDD 5AL$'EJ comandosDD 5AL$'IJ comandosDD RJ comandosDD esac

!strutura de decis.o
=$'A\udate Wr=u case c=$'A in F/N12F13J ec(o mLom dia,m DD 12E&i3J ec(o mLoa tarde,m DD 1SNE/J ec(o mLoa noite,mDD RJ ec(o m!rro ao solicitar a (ora esac

!strutura de decis.o
!"ercBcios utilizando a estrutura de decis.o CcaseJP 1J Crie um s(ell script -ue limpe a tela6 forme um menu solicitando a idade do usurio6 e e"i9a as seguintes informa<>es de acordo com a idade informadaP 1&1I 5oc uma Crian<a6 v 9rincar. 1b&1G Adolecente6 v estudar. 1i&aF Adulto6 v tra9al(ar. a1&SS Apto para o clu9e da mel(or idade, Vual-uer outro valorP )%dade invlida,0

La<os
g lista os nomes a partir de uma lista criada em uma varivel nome\m@oao francisco deciom for i in cnome do ec(o ci sleep 1 done
g lista as lin(as de um ar-uivo6 aguardando 1 segundo entre uma lin(a e outra

for i in ucat ar-uivou do ec(o ci sleep 1 done

La<os
g lista o conte8do do diret;rio atual for i in R do ec(o ci sleep 1 done g Lista n8meros de 1 a 1FF6 aguardando 1 segundo entre um n8mero e outro. for i in cCse- 1 1FFJ do ec(o ci sleep 1 done g o caracter mRm ir trazer o conteudo do diret;rio corrente

La<os
g Lista n8meros de 1 a S for CCi\1D ie\SD iWWJJ do ec(o &n )ci ) done g Lista o conte8do de um arraX arraX\C1 E I b H a G i S 1FJ for i in coarraX2R3p do i\c2i&13 ec(o coarraX2ci3p done

La<os
!"ercBcios de Fi"a<.o utilizando a estrutura de repeti<.o CforJP 1J 5erifi-ue no sistema -uantos usurios e"istem6 -uantos s.o usurios de sistema CU%+ a9ai"o de 1FFFJ e -uantos s.o usurios criados para uso CU%+ igual ou acima de 1FFFJ. %nforme -uantos usurios utilizam o 9as( como s(ell6 -uantos utilizam s( e -uantos est.o 9lo-ueados para uso com s(ell C:9in:falseJ. EJ A partir de um diret;rio6 passado por par`metro6 escrever um script -ue renomeia todos os ar-uivos de uma determinada e"tens.o Cpar`metroJ para outra e"tens.o.
!"emploP Todos os ar-uivos .doc do diret;rio :tmp alterados para .t"t c .:renomeia.s( :tmp doc t"t

La<os
g 'epete a informa<.o en-uanto a varivel cinicio se@a menor -ue a varivel cfim

inicio\1 fim\1F Z(ile 2 cinicio &lt cfim 3 do ec(o m5alor inicial menor -ue o finalP cinicio cfimm inicio\cCCinicioW1JJ done ec(o m5alor inicial igual ao valor finalP cinicio cfimm

La<os
g L o conte8do de um ar-uivo6 lin(a a lin(a6 at o final.

ar-\c1 i\F ec(o m &&&&&&&&&&&&& %nicio do ar-uivo. &&&&&&&&&&&&& m cat car- N Z(ile read L%4! do i\cCCiW1JJ ec(o )Lin(a ciP cL%4!0 done ec(o m &&&&&&&&&&&&& Final do ar-uivo. &&&&&&&&&&&&& m

La<os
g 'epete o 9loco de comandos en-uanto a condi<.o n.o satisfeita g $u se@am en-uanto o usurio ca9rito n.o se logar no sistema o la<o n.o ser g desfeito.

until Z(o N grep ca9rito do clear ec(o mUsuario ca9rito nao se logou no sistemam sleep E done date mW $ usuario ca9rito logou&se no sistema em rd:rm:r] as r=Pr*m.

La<os
!"ercBcios utilizando a estrutura de repeti<.o CZ(ile:untilJP 1J Crie um s(ell script -ue monitore o taman(o de um diret;rio6 e passar dos 1F *L o script ir enviar um aviso de L$A para o sistema para -ue o administrador rece9a o alerta da (ora:minuto -ue isso ocorreu. EJ !screva um script -ue monitore o taman(o de um ar-uivo6 se o ar-uivo tiver um taman(o superior a HF lin(as o script ir enviar um aviso de L$A para o sistema para -ue o administrador rece9a o alerta da (ora:minuto -ue isso ocorreu.

Fun<>es
Fun<>es s.o aglomerados de comandos -ue podem ser definidos para uso posterior em -ual-uer parte do c;digo. Praticamente todas as linguagens usam fun<>es -ue a@udam a organizar o c;digo. 5e@amos a sinta"e de uma fun<.oP nome[da[funcaoCJ o comandos p $ corpo das fun<>es devem construBdos sempre antes de serem utilizados6 caso contrrio6 o sistema retornar um erro do tipo )command not found06 -ue significa -ue a fun<.o em -uest.o n.o pode ser encontrada.

Fun<>es
function entradaCJo read &p m5alor inicialP m inicio read &p m5alor finalP m fim p entrada Z(ile 2 cinicio &ge cfim 3 do ec(o m5alor inicial e( maior -ue o final.m entrada done for i in cCse- cinicio cfimJ do ec(o mcim done

!"press>es 'egulares

)!"press.o regular um mtodo formal de se especificar um padr.o de te"to0 $ uso de e"press>es regulares torna mais rpida a procura pela informa<.o dese@ada6 -uanto mais refinada for a sua constru<.o6 mais preciso e rpido ser o resultado.

!"press>es 'egulares

$ -ue podemos validar com uma e"press.o regular/ +ata =orrio !ndere<o %P !ndere<o de email !ndere<o de %nternet 48mero de Telefone6 'A6 CPF6 cart.o de crdito . . . +ados -ue este@am no come<o ou no final da lin(a.

!"press>es 'egulares

*etacaracteres ./RW^N23opCJO . & Um caracter -ual-uer Lista de caracteres permitidos Uero ou um caracter Uero6 um ou mais caracteres Um ou mais %nBcio da lin(a Fim da lin(a 2....3 & / R & &

2^...3 & Lista de caracteres n.o permitidos

W & ^ & c &

on6mp d +e n at m

!"press>es 'egulares

*etacaracteres ./RW^N23opCJO O9 & Oc & N & %nBcio ou fim de uma palavra Torna literal o caractere c $u um ou outro

ClJ & +elimita um grupo O1...OS d Te"to casado com os grupos 1...S

!"press>es 'egulares
!"emplos de uso de lista n2.a3o 2Tt3eclado e2"s3tendido 1E2P. 3bH n.o6 nao teclado6 Teclado estendido6 e"tendido 1EPbH6 1E.bH6 1E bH !"emplos de uso de lista n2.a3o 2Tt3eclado e2"s3tendido 1E2P. 3bH n.o6 nao teclado6 Teclado estendido6 e"tendido 1EPbH6 1E.bH6 1E bH

!"press>es 'egulares
Classes P$#%K Posi" um padr.o internacional -ue define classes de caracteres. !"emplos de usoP Classe P$#%K [:upper:] [:lower:] [:alpha:] [:alnum:] [:digit:] [:blank:] . . . #ignificado Letras maisculas [A-Z] Letras minsculas [a-z] Letras maisculas/minsculas [A-Za-z] Letras Letras e N meros [A-Za-z0-9] Nmeros [0-9] Espao e TAB [ \t]

!"press>es 'egulares
!"emplo de uso de uma e"press.o regular #!/bin/bash a=-10 # zerando a contagem while [ $a -lt 350 ] # limitando a amostragem ate 350 do echo $a | egrep -x '((1[0-9]|[1-9]?)[0-9]|2([0-4][0-9]|5[0-5]))' a=$((a+1)) # incrementan a contagem done Neste exemplo a varivel $a recebe nmeros de -10 a 349, mas somente mostra na tela valores de 0 a 255. Nmeros tpicos usados em um endereo IP.

!"press>es 'egulares
!"ercBcio de fi"a<.o Com base no exemplo dado escreva um shell script que receba um endereo IP e informe se um endereo vlido ou no. $ ValidaIP.sh 10.10.10.102 Endereo IP 10.10.10.102 um endereo Ipv4 vlido. $ ValidaIP.sh 10.10.10.266 O endereo 10.10.10.266 no um endereo Ipv4 vlido.

!"press>es 'egulares
Classes P$#%K Posi" um padr.o internacional -ue define classes de caracteres. !"emplos de usoP Classe P$#%K [:upper:] [:lower:] [:alpha:] [:alnum:] [:digit:] [:blank:] . . . #ignificado Letras maisculas [A-Z] Letras minsculas [a-z] Letras maisculas/minsculas [A-Za-z] Letras Letras e N meros [A-Za-z0-9] Nmeros [0-9] Espao e TAB [ \t]

#(ell #cript d !"ercBcios de Fi"a<.o

Estudo dirigido Com base nos conhecimentos apresentados e a fim de fixar proposto uma lista de exerccios a ser entregue at o dia da prova. Podero ser aproveitadas as aulas restantes. Esta lista ter peso 3.0 para avaliao do bimestre. Para obteno da nota total todos os exerc cios devero estar completos, sem erros de execu o, e seus cdigos copiados para um trabalho impresso entregue em m os.

'efer ncias
2 1 3 7A'AA#6 Aurlio *arin(o. Expresses regulares: uma abordagem divertida #.o PauloP 4ovatec !ditora6 EFFi. Ea ed. rev. e ampl.

2 E 3 4!5!#6 78lio Csar. !urso de "hell "cript # Papo de Bote$uim 'evista Linu" *agazine. !di<.o 11. Agosto EFFH. 2 I 3 P'%TC=A'+D P!##A4=AD #TA4A!'D +!A4D LA4AF!L+T. !erti%ica&'o (inux (P) Alta Loo?s. EFFG.

2 b 3 '%L!%'$6 Uir. !erti%ica&'o (inux

A"cel Loo?s. EFFb.

Voc- pode: copiar6 distri9uir6 e"i9ir e e"ecutar a o9ra criar o9ras derivadas fazer uso comercial da o9ra "ob as seguintes condi&es: *tribui&'o 5oc deve dar crdito ao autor original6 da forma especificada pelo autor ou licenciante. !ompartilhamento pela mesma (icen&a #e voc alterar6 transformar6 ou criar outra o9ra com 9ase nesta6 voc somente poder distri9uir a o9ra resultante so9 uma licen<a id ntica a esta. Para cada novo uso ou distri9ui<.o6 voc deve dei"ar claro para outros os termos da licen<a desta o9ra. Vual-uer uma destas condi<>es podem ser renunciadas6 desde -ue 5oc o9ten(a permiss.o do autor. Vual-uer direito de uso legBtimo Cou mfair usemJ concedido por lei6 ou -ual-uer outro direito protegido pela legisla<.o local6 n.o s.o em (ip;tese alguma afetados pelo disposto acima. Este Z !m s!m@r o para le (os da L cenAa ]!rQd ca Ena Qnte(raG httpG99creat -ecommons"or(9l censes91H-sa9*"V91r9le(alcodeF" 2ermo de e0oneraADo de responsa1 l dadeG httpG99creat -ecommons"or(9l censes9d scla mer-pop!pRlan(4pt

*tribui&'o#!ompartilhamento pela mesma licen&a + , C(ttpP::creativecommons.org:licenses:9X&sa:E.H:deed.ptJ

You might also like