Вы находитесь на странице: 1из 15

PROGRAMAO BSICA EM SHELL SCRIPT

Decorrente da complexidade dos interpretadores de comando e tambm pela grande quantidade de comandos e opes disponveis, no h como abranger neste treinamento, todas as funcionalidades da programao em Shell Script !ara aqueles que dese"am se aprofundar na programao em Shell Script recomendvel a leitura do livro# !rogramao Shell Script, do $%lio &eves, da 'ditora (rasport )ivros e *ultimdia )tda 'ntretanto, as informaes que sero apresentadas, liberam grandes possibilidades de programao no ambiente Shell bash, onde as principais estruturas de controle e comandos adicionais, sero apresentadas + importante tambm que o leitor procure conhecer mais sobre as expresses regulares 'stas expresses so muito utili,adas e aceitas por diversos comandos do ambiente Shell, principalmente pelos comandos Sed, -./, grep, dentre outros

1 Shell Scripts
Shell scripts nada mais so que arquivos que contm uma seq01ncia de comandos para execuo seq0encial pelo Shell 2omo o tipo de interpretador de comandos que iremos descrever ser o bash, a primeira linha de um arquivo de Shell script dever conter a seguinte seq01ncia# #!/ i!/ "sh 3s arquivos do tipo Shell scripts precisam tambm possuir a permisso de execuo, no mnimo para o usurio dono do arquivo 'sta permisso pode ser concedida pelo comando abaixo# #ch#$% &'( )"r*&i+$,shell,script- $& #ch#$% .// )"r*&i+$,shell,script&unca demais lembrar que, para o Shell ao executar o seu arquivo de Shell script, ele precisa estar contido dentro dos diret4rios da varivel !-56, caso contrrio voc1 ter que informar o caminho completo at o arquivo Se estiver posicionado no mesmo diret4rio onde reside seu Shell script para sua execuo basta informar #0/)"r*&i+$,shell,script-0

1 Pr$te23$ %e C"r"cteres Especi"is 45&$ti!67


- flexibilidade da programao Shell tanta que se fa, necessrio o entendimento de certos conceitos referentes 7 proteo dos caracteres especiais e palavras reservadas do ambiente Shell - funcionalidade de 8uoting evitar a substituio de variveis ou ento remoo do significado dos caracteres especiais e palavras reservadas, tudo para permitir que estes se"am utili,ados literalmente 3s caracteres 8 4"sp"s si#ples79 : 4"sp"s %&pl"s7 e ; 4c$!tr"< "rr"7 so utili,ados para a funo de proteo de caracteres especiais 98uoting:

Pg. 1

Re6r"s

=sic"s>
8ualquer string entre aspas simples 9 8 : considerada literalmente, mas no permitido a 8ualquer string entre aspas duplas 9 : : considerada

substituio de par;metros< par;metros permitida< caracter seguinte<

literalmente e a substituio de

8ualquer caracter depois da contra=barra 9 ; : considerado literalmente 'le protege o &unca confundir aspas simples 9 8 : com a crase 9 ? :

'xemplos# # ech$ @PATH >usr>local>bin#>usr>local>sbin#>sbin#>usr>sbin#>bin#>usr>bin#>usr>bin>?@@ # ech$ 8@PATH8 A!-56 # e(p$rt PS1A?&!"#e <!?8@PBC8;;@ micro@>tmpB # ech$ O D"l$r %" D"ri=+el ;@TERM E @TERM 3 Calor da Carivel A5'D* xterm # ech$ FD$cG p$ss&i ?ls <l H Ic <l? "r*&i+$s e# ?pI%?F Coc1 possui @E arquivos em >tmp

J K$r#"s %e E(ec&23$ %e C$#"!%$s


- forma de execuo de comandos no bash tambm possui suas caractersticas Ce"amos abaixo as seguintes formas de executar comandos# L; 'xecuta m%ltiplos comandos e linhas separadas 3 caracter especial FGH permite adicione comandos em vrias linhas 'xemplo# # c% /+"r/l$6 L; ls <lrt L; t"il <M "&th0l$6 c$#"!%$ N 'xemplo# # #$&!t <" N O1P Q/RJ ==I &%mero do processo que foi gerado em bac/ground O1P Done mount =a ==I Jnforma que o processo em bac/ground com I% O1P encerrou
Pg. 2

que

se

'xecuta um comando e o coloca em segundo plano 9bac/ground:

c$#"!%$1 L c$#"!%$1 'xemplo#

'xecuta dois comandos em seq01ncia e na mesma linha

# c% /etc L ls <l" ==I Cai para o diret4rio >etc e executa o comando ls =la # ech$ Ol" @SSER9 h$Te E ?%"te? L ech$ DeT" $ c"le!%=ri$ " "i($> L c"l 3la root, ho"e Sb -br @K @K#LK#KM (D5 NEEO Ce"a o calendrio abaixo# -bril NEEO Do Se 5e 8u 8u Se S @ N P L K O Q R M @E @@ @N @P @L @K @O @Q @R @M NE N@ NN NP NL NK NO NQ NR NM PE c$#"!%$1 ?c$#"!%$1? ==I Substituio de comandos 'sta sintaxe utili,a a sada do comandoN como entrada de par;metros para comando@ 'xemplo# # Uill <V ?ls$M <t <& t&(? 'ste comando ir encerrar todos os processos do usurio tux no sistema c$#"!%$1 H c$#"!%$1 ==I 2anali,a a sada do comando@ como entrada do comandoN 'xemplo# #ls <l /etc/W0c$!M H Ic <l 'ste comando informa o n%mero de arquivos com a extenso 0c$!M no diret4rio /etc c$#"!%$1 NN c$#"!%$1 ==I 'xecuta comandoN se o comando@ for bem=sucedido

'xemplo# # %M <h NN %& <hs /etc -presenta a utili,ao dos discos no sistema e o total de espao utili,ado pelo diret4rio >etc c$#"!%$1 HH c$#"!%$1 ==I 'xecuta comandoN se o comando@ falhar 4&# $& $&tr$70 'xemplo# # c"t p"ssI$r% HH c"t p"ssI% H Ic <l 3 comando c"t p"ssI$r% ir falhar, logo o segundo comando ser executado
Pg. 3

X Oper"%$res
3s operadores l4gicos so utili,ados em qualquer linguagem de programao, inclusive na programao Shell script -baixo esto listados os operadores l4gicos e aritmticos usados pelo Shell, pela ordem decrescente de preced1ncia# ! 9 Y &egao l4gica, complemento de @ 9usado em operaes binrias:< W 9 / 9 Z *ultiplicao, Diviso, m4dulo 9resto da diviso:< ' 9 < -dio, Subtrao< )) 9 -- Deslocamento de bit 7 esquerda e deslocamento de bit 7 direita< )A 9 -A *enor ou igual, *aior ou igual< ) 9 *enor que, *aior que< AA 9 !A Jgualdade, Desigualdade< N ' 9-&D:, utili,ado para operaes binrias< [ 3S 'xclusivo 9exclusive 3D:, usado em operaes binrias< H 3S 93D:, utili,ado em operaes binrias< NN ' 9-&D: l4gico< HH 3S 93D: l4gico< A -tribuio de valor

/ D"ri=+eis Especi"is
- implementao do Shell bash, libera algumas variveis especiais que so pr=definidas quando ele iniciado, permitido grande flexibilidade na programao, inclusive a passagem de par;metros D"ri=+eis %$ Shell> @# @< @\ @@ @! @! @R @W @] Jnforma o n%mero de par;metros passados ao script Shell< 3pes fornecidas pelo Shell< Jnforma o valor de retorno do %ltimo comando executado pelo script Shell< Jnforma o n%mero do processo 9!JD: do script Shell em execuo< &%mero do %ltimo processo 9!JD: executado em bac/ground< Calor do par;metro passado ao Shell, nT@, at M, da esquerda para a direita< &ome do programa ou Shell em execuo< Jnforma todos os par;metros passados ao script, separados por espaos em branco< Jgual 7 varivel anterior AU

^ Estr&t&r"s %e Pr$6r"#"23$ Shell ^01 C$#"!%$ Re"%


Sintaxe# re"% O<ersP O<& M%P O<t ti#e$&tP O<p pr$#ptP O<" "rr"_P O<! !ch"rsP O<% %eli#P O!"#e 000P

Pg. 4

3nde# <t )se6&!%$s- 5imeout para a entrada de dados, em segundos< <p )pr$#pt- !rompt a ser apresentado na digitao dos dados< <! )!`#er$,c"r"ct- &%mero de caracteres que sero lidos pelo comando< <% )%eli#it"%$r- 2aractere delimitador Dead l1 entrada at encontrar o delimitador< !"#e )!$#e,c"#p- &ome da varivel que guardar os valores lidos pelo read 'xemplo# BV>bin>bash B echo =n W'ntre com &ome e Sobrenome# W read &3*' S3(D'&3*' echo W3l A&3*' V seu Sobrenome # AS3(D'&3*'W

^01 C$#"!%$ let


Si!t"(e> let )e(press3$- ==I Xa, expresses aritmticas com n%meros inteiros 'xemplo# BV>bin>bash B clear echo =n W'ntre com dois n%meros inteiros# W read - ( let 2TE< let DTE let 2T-Y( let DT-U( echo W- soma deles # A2, seu produto # ADW

^0J C$#"!%$ test


Sintaxe# test )e(press3$- ou O )e(press3$- P ==I -valia a expresso e, se o valor for verdadeiro, retorna o c4digo de sada em AZ igual a ,ero, seno retorna o c4digo de sada diferente de ,ero Ce"a tambm os operadores utili,ados pelo comando test Oper"%$r < <c <% <e <M <6 I!terpret"23$ 4p"r" "r*&i+$s $& e(pressaes lb6ic"s7 dispositivo de bloco 9disco:< dispositivo de caractere 9terminal:< diret4rio< existe< arquivo comum< possui o bit set group id 9S[JD: ativado<
Pg. 5

<U <L <p <r <s <S <& <I <( <O <G "r*1 <!t "r*1 "r*1 <$t "r*1 "r*1 <eM "r*1 <c stri!6 <! stri!6 stri!61 A stri!61 stri!6 1 !A stri!61 !e(press3$ e(p1 <" e(p1 e(p1 <$ e(p1 "r61 <e* "r61 "r61 <!e "r61 "r61 <lt "r61 "r61 <6t "r61 "r61 <6e "r61 "r61 <le "r61 'xemplos#

possui o stic/\ bit ligado< lin/ simb4lico< pipe< possvel ler o arquivo< tamanho maior que ,ero< soquete< possui o bit set user id 9SSJD: ativado< possvel gravar no arquivo< possvel executar o arquivo< proprietrio do 'SJD< proprietrio do '[JD< arq@ mais novo que arqN< arq@ mais velho que arqN< arq@ lin/ absoluto para arqN< string de tamanho ,ero< string de tamanho maior que ,ero< as strings so iguais< as strings so diferentes< nega a expresso, ou tambm a expresso falsa< exp@ -&D expN< exp@ 3D expN< argumento@ igual ao argumentoN< argumentos so diferentes< argumento@ menor que argumentoN argumento@ maior que argumentoN argumento@ maior ou igual ao argumentoN argumento@ menor ou igual ao argumentoN

# test <( /&sr/s i!/!# % <" <( /&sr/s i!/s# % HH e(it R Cerifica se ambos 9-&D: os daemon do samba so executveis 'sta comparao toda o primeiro comando, executada com sucesso, logo o comando exit E no ser executado O F@TBACdSPF A CIKEREeCIAL P NN; Mi!% @CBACdSP <#ti#e <@CIK Ht"r <cT+M @STOCED <T < ; 1- /+"r/l$6/ "cU&p,%iM,?%"te 'ZfZ%Z#ZUZMZS? ; 1-/+"r/l$6/ "cU&p,%iM,?%"te 'ZfZ%Z#ZUZMZS? N TPICA@! Cerifica se o conte%do da varivel @TBACdSP CIKEREeCIAL e caso positivo executa o comando Mi!%, buscando os diret4rios>arquivos contidos na varivel @CBACdSP, com o par;metro #ti#e <@CIK9 onde a varivel @CIK informa quantas horas atrs os arquivos foram modificados, o default NL horas, ou se"a, busca arquivos alterados nas %ltimas NL horas 3 resultado do comando Mi!% passado ao comando t"r para criar um pacote de arquivos em @STOCED 9pode ser arquivo ou fita magntica:, com compresso cip10 3 par;metro <T< informa ao t"r para pegar os arquivos da entrada padro, que na verdade a sada do comando Mi!%

Pg. 6

5anto a sada padro do t"r, quanto sua s"g%" %e err$s, iro gerar um log no diret4rio >var>log indicando no nome do arquivo o ano, dia, m1s, hora, minuto e segundo 5odo o comando ser executado em "cU6r$&!% e seu PIC ser arma,enado na varivel @TPIC

^0X C$#"!%$ iM
-baixo veremos o comando if que utili,ado para testes condicionais Sintaxe# iM )e(press3$1the! list" %e c$#"!%$s 1 eliM )e(press3$1the! list" %e c$#"!%$s 1 else $&tr$s c$#"!%$s Mi 'xemplo# BV>bin>bash B if ] AB =ge N ^ then echo AN elif ] AB =eq @ ^ then echo A@ else echo F&enhum par;metroVH fi

^0/ C$#"!%$ c"se


'xecuta comandos da entrada do case na qual a varivel valor igual a um dos par;metros passados, onde so comparados como padres, padro@, padroN, , Se nenhum valor for coincidente com os valores esperados, o case executar os comandos da entrada definida com o padro U Sintaxe#

c"se )+"l$r- i!

p"%r3$17 c$#"!%$s 1LL p"%r3$17 c$#"!%$s 1LL W7 $&tr$s c$#"!%$sLL

es"c
Pg. 7

'xemplos# case WA@W in start: echo =n WJniciando Samba daemons#W echo =n W nmbdW start=stop=daemon ==start ==quiet ==exec >usr>sbin>nmbd == =D<< stop: echo =n W!arando o Samba daemons# W start=stop=daemon ==stop ==quiet ==pidfile A&*(D!JD<< U: echo WSso# >etc>init d>samba _start`stop`reload`restart`force=reloadaW exit @ << esac

^0^ C$#"!%$ M$r


'xecuta uma interao do lao de controle para cada elemento da FlistabdebvaloresH - cada iterao, :+"ri=+elh assume o valor de um elemento de :list",%e,+"l$resh Sintaxe# M$r )+"ri=+el- i! )list",%e,+"l$res%$ list" %e c$#"!%$s %$!e

Exemplos:
BV>bin>bash B clear for i in @ N P L K do echo WCalor de iTAiW done

^0. C$#"!%$ Ihile


'ste comando executa os comandos dentro do lao enquanto a cexpressoI for verdadeira Sintaxe# Ihile )e(press3$%$ list" %e c$#"!%$s %$!e
Pg. 8

'xemplo# BV>bin>bash B clear let contTE .hile ] AB =gt E ^ do echo W!ar;metros passados T A@W shift let contTcontY@ done if ] Acont =eq E ^ then echo Wvoc1 no digitou par;metros W exit @ else echo Wvoc1 digitou Acont par;metros W fi exit

^0Q C$#"!%$ shiMt


5ecnicamente no h limitao no n%mero de par;metros a serem passados, via linha de comandos, para os Shell scripts 'ntretanto, somente conseguimos ler diretamente as variveis de @1 "tE @V &o existe a varivel @1R0 !ara resolver este pequeno problema h o comando shiMt, o qual fa, o %esl$c"#e!t$ de todos os par;metros em AU, para a esquerda em n posies e decrementa a varivel AB em n 3 valor default para n @ Sintaxe# ShiMt O!P ==I Desloca n par;metros para a esquerda, atuali,ando as variveis especiais AU e AB 'xemplo# BV>bin>bash B clear argsTAU echo WXoram passados AB par;metrosW echo W'les foram# AUW shift N echo W-gora existem AB par;metrosW echo W'les so# AUW echo W3s par;metros iniciais eram# AargsW
Pg. 9

^0V C$#"!%$ tr"p


'xecuta um comando ao receber um sinal + um comando muito importante para controlar ambiente de usurios, caso voc1 dese"e criar um sub=shell especfico, onde somente alguns comandos ou programas podem ser executados Sintaxe# tr"p 8)c$#"!%$1-L)c$#"!%$1-L00)c$#"!%$e-8 )si!"l 1- )si!"l 1- 000)si!"l !Sinais R 1 1 V 1/ 1Q Descrio Sada normal do programa< 'quivale ao comando /ill =6S!< Jnterrompe o processo, enviado via teclas cctrlI Y ccI< Jnterrompe o processo incondicionalmente 5rap no trata este sinal< 'ncerra o processo de forma correta 'quivale ao comando /ill pidbprocesso< 2oloca o processo em bac/ground, enviado via teclas cctrlI Y c,I

Exemplo#

BV>bin>bash B clear trap decho Coc1 digitou 2trl=2 < exit<d N trap decho Coc1 digitou 2trl=e< exit<d @R trap decho !rocesso saindo por =6S! < exit<d @ trap decho !rocesso saindo por fill< exit<d @K trap decho !rocesso saindo pelas pr4prias pernas 9exit E:< exit<d E .hile true do echo W-inda estou no ar AA W sleep P done

^01R C$#"!%$ e(it


'ste comando possui a finalidade de encerrar a execuo do Shell script Se no for especificado um c4digo de sada, ele ser o mesmo do %ltimo comando executado imediatamente antes do comando exit !ara informar um erro ocorrido num determinado procedimento, onde tenha que encerrar ento o script, informe um n%mero maior que ,ero 5ipicamente um c4digo de erro igual a @ 9um: " informa erro de execuo Sintaxe# e(it O!P 'xemplo# Ce"a o exemplo anterior do comando .hile
Pg. 10

^011 C$#"!%$ ret&r!


Detorna de uma funo dentro do Shell script Dever ser informado o seu c4digo de sada, caso contrrio ser o mesmo do %ltimo comando executado dentro da funo Sintaxe# ret&r! O!P

^011 C$#"!%$

re"U

Encerra um lao, do tipo .hile, until ou for, ap4s ! iteraes 3 padro para ! E 1 Sintaxe# re"U O!P

^01J C$#"!%$ c$!ti!&e


Jnterrompe a iterao atual de um lao e salta para a n=sima iterao 3 padro para n @ Sintaxe# c$!ti!&e O!P

^01X Cecl"r"23$ M&!cti$!


'sta declarao permite ao programador em Shell script elaborar uma funo dentro do seu arquivo funo declarada funciona da mesma forma que uma funo em outra linguagem de programao Sintaxe# M&!cti$! )!$#e,M&!23$- 47 i c$#"!%$s j $& )!$#e,M&!23$- 47 i c$#"!%$ j 'xemplo# BV>bin>bash B B function fatorial 9: _ let -T@
Pg. 11

numTA& .hile ] A& =gt E ^ do let -T-U& let &T&=@ done echo WXatorial de Anum T W Aa clear echo =n W'ntre com um n%mero inteiro# W read & if ] xWA&W TT WxW ^ then let &TE fi fatorial A& exit

^01/ C$#"!%$ c&t


2omando do Shell para cortar fluxos de texto, conforme suas opes Sintaxe# c&t )$p2aes- )"r*&i+$3pes mais utili,adas# <% )%eli#it"%$rJnforma ao cut qual o delimitador de campo< <M )!`#er$,c"#p$-Jmprime o campo informado, conforme o delimitador especificado< < )!`#er$, _tes- Jmprime a quantidade de b\tes conforme o n%merobb\tes< 'xemplos# Bcat >etc>pass.d ` cut =d # =f @ ==I Jmprime os usurios cadastrados localmente< Bcat >etc>group ` cut =d # =f @ ==I Jmprime os grupos de usurios [rupos locais<

^01^ C$#"!%$ tp&t


3 comando tput utili,ado para posicionamento do cursor de entrada dos terminais 'le tambm possui outras funcionalidades mais avanadas, como por exemplo, setar o terminal para imprimir os caracteres em negrito e informar o n%mero de linhas do terminal 'xemplos# B tput bold B tput cup NN NE Jmprime os caracteres em modo bold 9negrito:< !osiciona o cursos na linha NN e coluna NE do terminal<

Pg. 12

B tput cols B tput reset B tput clear

Jnforma o n%mero de colunas do terminal< Jniciali,a o terminal com seus valores defaults< )impa a tela do terminal<

BV>bin>bash B clear tput bold tput cup NE NE < echo Sistema de 2adastro &ome=5elefone tput cup NN NE < echo ] @ ^ 2onsulta tput cup NP NE < echo ] N ^ -ltera tput cup NP PK < echo =n W3po ] ^W tput cup NP LP < read =n @ opc tput cup NP KE < echo 'scolhi a opo# Aopc

^01. C$#"!%$ se%


3 sed 9stream editor: um e%it$r %e te(t$s si#ples que executa procura, substituio, insero e eliminao de caracteres, oriundos de arquivos textos ou de qualquer outra fonte de stre"# de textos, como uma simples varivel de ambiente 3 sed no transforma os arquivos originais, pois ele recebe o stream de textos da entrada padro, reali,a o processamento e ento devolve os resultados para a sada padro Se houver necessidade de gravar estas alteraes, basta redirecionar a sada do comando, atravs do direcionador :-h, para um arquivo em disco Sintaxe# se% O$p2aesP iscriptj i"r*&i+$sj 'xemplos# # se% 8s/t&(/pi!6&i#/68 /etc/p"ssI% B 5roca tux por pinguim em todo arquivo pass.d< # se% 8s/ "sh/csh/68 /etc/p"ssI% B 5roca a palavra bash por csh em todo arquivo pass.d< # se% 8s/;/&sr;/l$c"l;/ i!/;/&sr;/ i!/68 te(t$0t(t B 5roca >usr>local>bin por >usr>bin em texto txt< # se% 8J9/%8 "r*0t(t ==I Deleta as linhas P,L,K do arquivo arq txt # se% 8Q91R!%8 "r*0t(t ==I Deleta todas as linhas, exceto as linhas R, M e @E de arq txt< # se% 8/M"ri"/9/k$3$/%? "r*0t(t ==I Deleta as linhas entre *aria e $oo, do arquivo arq txt< 3 comando sed trabalha muito com expresses regulares -baixo temos uma tabela com as expresses mais utili,adas

Pg. 13

Sg# $l$
8 : ; [ @ O"<cP OR<VP O[" cP /te(t$/ 0

T" el" %e E(pressaes Re6&l"res B=sic"s Cescri23$ -spas simples so utili,adas para delimitar o texto dentro delas como caracteres literais, no interpretando nenhum caractere como metacaractere -spas duplas so utili,adas para delimitar o texto dentro delas como caracteres literais, exceto os caracteres A e G 2ontra=barra utili,ada para informar que o caractere imediatamente posterior deve ser considerado como literal 3 acento circunflexo usado para indicar o incio de uma linha 3 cifro 9d4lar: usado para indicar o fim de uma linha Jndica que o intervalo de caracteres, de a at , so vlidos Jndica que qualquer n%mero de E 7 M so vlidos para a pesquisa 8ualquer caracter, menos a, b ou c so vlidos para a busca Jndica que texto procurado dever estar entre espaos 3 ponto decimal indica qualquer caracter menos uma linha em branco

-daptada do livro 2ertificao )inux, de Sir Dibeiro, 'dio NEEL, 'ditora 'xcel, pginas @EK e @EO

^01Q C$#"!%$ "IU


3 a./ na verdade um interpretador de comandos, quase como uma linguagem de programao 'ntretanto, sua utili,ao na forma simples auxilia muito no tratamento de campos de dados + mais eficiente que o comando cut e muitos outros Ce"amos alguns exemplos# # # # # c"t /etc/p"ssI% H "IU <K > 8ipri!t @1j8 ==I Jmprime a primeira coluna do arquivo pass.d< c"t /etc/p"ssI% H "IU <K > 8ipri!t @1 : : @/j8 ==I Jmprime a primeira e a quinta colunas< "IU <K > 8@J -A 1RRR ipri!t @1j8 /etc/p"ssI% ==I Jmprime usurios com SJD IT @EEE< ech$ 1R01110/0J1 H "IU <K 0 8ipri!t @X :0h @J :0h @1 :0h @1j8 ==I Jmprime o J! Deverso

Ces"Mi$> El" $re &# script e# Shell *&e per#it" i!cl&ir9 e(cl&ir9 c$!s&lt"r e "lter"r &# re6istr$ c$!te!%$ !$#e e teleM$!e %e &#" pess$"0

Pg. 14

Cic"s e Res&#$ p"r" Script Shell


Seq. 1 2 3 4

Comando # AB=$(ls -1 /etc/init.d) # [ x$VAR = x ] && echo Varivel VAR est vazia # tamAB=${#AB} # AB="Dez letras"

Descrio Executa o comando ls e guarda na varivel AB. Testa se a varivel VAR est vazia. Guarda o TAMANHO da varivel AB na varivel tamAB. Guarda o texto Dez letras na varivel AB Imprime, a partir do 5o caracter, mais 6 caracteres da varivel AB (inicia em 0 ). Testa se arquivo /etc/passwd no existe. Testa se prog1 um executvel. Testa se /etc um diretrio. Testa se passwd possui o bit Setuid setado. Troca espaos por _ da varivel AB e guarda na varivel AC Transforma varivel AB minsculas e guarda em AC. Transforma varivel AB maisculas e guarda em AC. Apaga a varivel AB. em em

5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

# echo ${AB:4:6} # [ ! -f /etc/passwd ] && echo Arq. passwd no existe # [ -f prog1 -a -x prog1 ] && echo um executvel # [ -d /etc -a -x /etc ] && echo um diretrio # [ -u /usr/bin/passwd ] && echo Possui Setuid # AC=$(echo $AB | tr [:blank:] ["_"]) # AC=$(echo $AB | tr [A-Z] [a-z]) # AC=$(echo $AB | tr [a-z] [A-Z]) # unset AB

# ech$ 1R01110/0J1 H "IU <K 0 8ipri!t @X :0h @J :0h Jmprime o J! Deverso @1 :0h @1j8 # find /usr -perm -4000 # find /var/log -size +1M | xargs ls -lah # find / -name *.iso # lsof -u daemon | awk '{print$2,$3,$9}' Lista arquivos do diretrio /usr com bit Suid setado. Lista arquivos com tamanho maior 1Megabytes do diretrio /var/log Procura arquivos .iso em toda a rvore de diretrios. Lista arquivos abertos pelo usurio daemon

# ps h -eo user,pid,pcpu,size,stat,cmd | sort -rn -k3 | Lista e classifica os 10 processos com mais utilizao de cpu. head -10 # find / -name "*.*~" | xargs rm -rf Procura e remove todos os arquivos que tenham o caracter ~ no final do seu nome.

20

Pg. 15

Вам также может понравиться