Professional Documents
Culture Documents
"atas #istemas $peracionais %%% & C#T' #(ell #cript )*eu +eus do #(ell, Por-ue eu n.o optei pelo Linu" antes/01
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
#(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
$ #=!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.
#(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.
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
$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
%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
$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.
$ "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.
$ 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.
$ ?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
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 --
$ date
:;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
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
-! -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
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
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
c route
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
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
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
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
Comandos avan<ados
c no(up altera a saQda padrDo de !m comando <non-ttH>C tornando
c pidof
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
c 9g
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
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.
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
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.
$ 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.
) !mt 31 45 te#to.t#t
(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
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
-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
Linha de comando :
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
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
*aior *enor
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
!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 > nE d maior n1 < 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
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 < 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 & &
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]
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.
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