Академический Документы
Профессиональный Документы
Культура Документы
que faz interface com o usurio Linux tem vrios tipos de shell:
Kosh Shell C Shell Bourne Again shell (bash)
O que um script?
Apenas um arquivo texto com permisso de execuo e
script
Ex.: #!/bin/bash
comando which
$ which bash /bin/bash
Digite o seguinte:
#!/bin/bash # Este um comentrio, no ser executado # Este meu primeiro script "Hello World" echo "Hello World"
A 1 linha diz ao Linux para usar o interpretador bash parea executar o script Torne o script executvel:
$ echo SHELL SHELL $ echo $SHELL /bin/bash $ echo $HOME /home/gunasantos $ echo $PATH /usr/X11R6/bin:/usr/local/bin:/bin:/usr/bin
O comando env
Imprime todas as variveis de ambiente
PATH: Caminho de busca por comandos Setando PATH=$PATH:~/scripts o diretrio includo na busca por comandos, para isso usamos o comando export:
$ export PATH=$PATH:~/scripts $ hello.sh
LOGNAME: nome do usurio HOSTNAME: nome do computador. MACHTYPE: tipo de hardware PWD: caminho atual
Definidas pelo usurio quando executam o script So armazenadas como strings Declarando uma varivel:
$> STR='Hello World!' $> echo $STR Hello World!
Quando for definir dados que contenham espaos ou caracteres especiais, o dado deve estar entre aspas simples ou duplas. Aspas duplas permite que qualquer varivel referenciada entre as aspas seja resolvida
$ var=string de teste" $ newvar=O Valor de var $var" $ echo $newvar
11
A aspa reversa "`" diferente da aspa simples"". usada para substituio de comandos: `comando`
$ ls hello.sh $ LISTA=`ls` $ echo $LISTA hello.sh
12
$ hello_user.sh Hello guna! Sua pasta : /home/guna Hoje : Fri Mar 16 19:19:42 CDT 2012
$ vim hello_user.sh
#!/bin/bash echo "Hello $LOGNAME!" echo Sua pasta : $HOME" data=`date` echo Hoje : $data"
A expresso expr
Operadores: aritmticos: +, -, *, /, % Comparaes: <, <=, ==, !=, >=, > booleanos/lgicos: &, | parenteses: (, )
Limpeza de pasta
`ls dir`
Existe arq.?
No
Sim
move arq.
Sim
if/then/else, case, ... Laos: while, for, until, do, ... Saltos: Chamadas de subrotina
*.stdou t
No
Apaga arq.
Sim
*.tmp
No
Pronto
16
Permitem decidir quando executar uma ao ou no, atravs da avaliao de uma expresso
if [ expression ]; then ## deve ter espaos entre os colchetes
comandos elif [ expression ]; ## os colchetes testam uma expresso then comandos else comandos fi
Example:
$ cat if2.sh #!/bin/bash if grep Ola" hello_user.sh>/dev/null then echo Est aqui" else echo "Nao!" echo Ola nao esta no arquivo" fi
$ cat if3.sh #!/bin/bash if grep "UNIX" meuarquivo3 >/dev/null then echo "UNIX aparece em meuarquivo3 " elif grep "DOS" meuarquivo3 > /dev/null then echo "DOS aparece em meuarquivo3, nao UNIX" else echo Ninguem est aqui em meuarquivo3 " fi
Podem ser:
Comparaes de String Comparaes Numricas Operaes de arquivo Operaes Lgicas
21
Comparaes de String:
= != -n -z
compara se duas strings so iguais compara se duas strings no so iguais avalia se o tam da string maior que zero avalia se tam da string igual zero
Exemplos:
[ s1 = s2 ] [ s1 != s2 ] [ s1 ] [ -n s1 ] [ -z s2 ]
22
$ vim if4.sh #!/bin/bash echo -n Entre o seu login: " # pergunta ao usuario read nome # guarda a entrada em nome if [ "$nome" = "$USER" ]; then echo Ola, $nome. Como vai voc?" else echo Voc no $USER, quem voc?" fi
23
Comparaes Numricas:
compara se dois nmeros so iguais compara se um nmero maior ou igual a um nmero compara se um nmero menor ou igual a um nmero compara se dois nmeros no so iguais compara se um nmero maior que um nmero compara se um nmero menor que um nmero
Exemplos:
$ vim if5.sh #!/bin/bash echo -n "Entre um nmero 1 < x < 10: " read num if [ "$num" -lt 10 ]; then if [ "$num" -gt 1 ]; then echo "$num*$num=$(($num*$num))" else echo Entrada incorreta!" fi else echo " Entrada incorreta!" fi $ ./if5.sh Entre um nmero 1 < x < 10: 5 5*5=25
25
E lgico entre duas expresses lgicas OU lgico entre duas expresses lgicas
$ vim if7.sh #!/bin/bash echo -n "Entre um nmero 1 < x < 10: " read num if [ "$ num " -gt 1 ] && [ "$ num " -lt 10 ]; echo "$num*$num=$(($num*$num))" else echo Entrada incorreta!" fi $ ./if7.sh Entre um nmero 1 < x < 10: 5 5*5=$25
26
Operadores de arquivo:
-d -f -s -e -s -r -w -x
verifica se o caminho dado uma pasta verifica se o caminho dado um arquivo verifica se o caminho dado um link simblico verifica se o nome do arquivo passado existe verifica se um arquivo tem o tamanhao maior que zero verifica se o arquivo ou pasta tem permisso de leitura verifica se o arquivo ou pasta tem permisso de escrita verifica se o arquivo ou pasta tem permisso de execuo
Exemplos:
(verdadeiro se fname uma pasta, seno falso) (verdadeiro se fname uma arquivo, seno falso true) (verdadeiro se fname existe, seno falso) (verdadeiro se o tamanho de fname maior que zero, seno falso) (verdadeiro se fname tem permisso de leitura, seno falso) (verdadeiro se fname tem permisso de escrita, seno falso) (verdadeiro se fname tem permisso de execuo, seno falso)
27
Verifica se um arquivo existe $ cat if6.sh #!/bin/bash if [ -f /etc/fstab ]; then cp /etc/fstab . echo Feito." else echo O arquivo no existe." exit 1 fi $ ./if6.sh Feito.
28
Laos for permitem a repetio de um comando para um conjunto especfico de valores. Sintaxe:
for var in valor1 valor2 ... do conjunto_de_comandos done
$ ./for3.sh 3
30
31
32
Fasta um formato de arquivo texto usado para representar sequencias de nucleotdeos ou peptdeos. Ex.:
>MCHU - Calmodulin - Human, rabbit, bovine, rat, and chicken ADQLTEEQIAE FKEAFSLFDKDGDGTITTKELGTVMRS LGQNPTEAELQDMINEVDADGNGTID FPEFLTMMARKMKDTDSEEEIREAFRV FDKDGNGYISAAELRHVMTNLGEKLT DEEVDEMIREA DIDGDGQVNYEEFV QMMTAK*
#!/bin/bash # while2.sh counts the number of fasta sequences found in a fasta file
count=0 # initialize a variable that holds # the count of sequences
# in each iteration we are going to read the next line in file while read line do if echo $line | grep ">" > /dev/null # determine if the current line # is a sequence header ">" then count=`expr $count + 1` # perform an addition to the count fi done < "sequences.fasta" # define the filename you wish to use # tell me the total count of fasta sequences echo "Your fasta file contains $count sequences"
34
Parmetros posicionais so defindidos por argumentos do shell quando ele chamado (ex. ls l dir1 dir2) Um parmetro da posio N pode ser referenciado como ${N}, ou como $N quando consiste de apenas um nico dgito Parmetros especiais:
$# o nmero de parmetros passado $0 retorna o nome do script em execuo, bem como sua localizao
no sistema de arquivos $* retorna de uma s vez todos os parmetros passados para o script $@ d um array de palavras contendo todos os parmetros passados para o script
$ cat sparametros.sh #!/bin/bash echo "$#; $0; $1; $2; $*; $@" $ sparametros.sh alba chiara 2; ./sparametros.sh; alba; chiara; alba chiara; alba chiara
35
#!/bin/bash # while3.sh counts the number of fasta sequences found in a fasta file
filename=$1 # assign the input parameter filename to a variable count=0 # initialize a variable that holds the count of sequences # in each iteration we are going to read the next line in file while read line do if echo $line | grep ">" > /dev/null # determine if the current line # is a sequence header ">" then count=`expr $count + 1` # perform an addition to the count fi done < $filename # define the filename you wish to use # tell me the total count of fasta sequences echo "Your fasta file contains $count sequences"
36
37