+ All Categories
Home > Documents > d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017....

d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017....

Date post: 23-Mar-2021
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
31
U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o C C E N S U F E S Universidade Federal do Espírito Santo Centro de Ciências Agrárias – CCENS UFES Departamento de Computação Sistemas de Software Livre Site: http://jeiks.net E-mail: [email protected] Shell Script
Transcript
Page 1: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

Universidade Federal do Espírito SantoCentro de Ciências Agrárias – CCENS UFESDepartamento de Computação

Sistemas de Software LivreSite: http://jeiks.net E-mail: [email protected]

Shell Script

Page 2: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

2

Conteúdo

● O que é o Shell● Linha de Comandos● Redirecionamentos● Manipulação de arquivos● Tratamento de cadeias● Condicionais● Case● Laços

Page 3: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

3

Onde está o Shell?

Shell

Programas e Comandos

Kernel ou Núcleo

Hardware

Você está aqui

Page 4: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

4

Tipos de Shell

● Os principais Shells são:

sh, bash, ksh, dash● Efetivamente, o Shell é o programa associado ao último campo de

/etc/passwd

$ grep jneves /etc/passwd

jacson:x:54002:101::/home/jacson:/bin/bash

$ grep desliga /etc/passwd

desliga:x:0:0::/dsv/desliga:/usr/local/bin/desliga

Page 5: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

5

Linha de Comandos

● Atribuição ou comando?– Atribuição: VAR=5

– Comando sem opção e argumento: who

– Comando só com opção: who -H

– Comando só com argumento: who am i

– Comando com opção e argumento: who am i -H

Page 6: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

6

Linha de Comandos

● Comando– Indentifica o nome do programa – Pesquisa sua existência (PATH) e permissões– Identifica opções/parâmetros– Identifica redirecionamentos– Identifica variáveis

grep -i $CADEIA * > progs

grep

-i, $CADEIA, *

>

OK

$CADEIA

Page 7: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

7

Linha de Comandos

● Comando:– Resolução de redirecionamentos: sort arq > arq

– Substituição de variáveis: echo $LOGNAME

– Substituição de meta caracteres: echo *

– Passa a linha interpretada para execução

Bye-Byearq

Você devia ter feito:sort -o arq arq

Page 8: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

8

Redirecionamentos de saída

> Redireciona a saida de um comando para um arquivo, destruindo seu conteúdo.

>> Redireciona a saída de um comando para um arquivo, mantedo intacto o conteúdo.

2> Redireciona a saída de erros para um arquivo, destruindo seu conteúdo (anexa ao fim do arquivo).

$ ls JaEra

ls: JaEra: No such file or directory

$ ls JaEra 2> ArqErr

$ cat ArqErr

ls: JaEra: No such file or directory

Page 9: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

9

Redirecionamento de entrada

< Avisa ao Shell que a entrada não será feita pelo teclado, mas sim por um arquivo

$ mail usuario < ArqMala

<< Indica ao Shell que o escopo do comando começa na linha seguinte e termina quando encontrar um rótulo (label) definido.

$ mail jeiks << FimMail

> SP, `date`

> Hoje o conteudo do diretorio era `ls -l`

> FimMail

Prompts de continuação (PS2)

Page 10: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

10

Redirecionamentos especiais

| Passa a saída de um comando para a entrada de outro.

Conhecido como “pipe”.

tee Passa a saída de um comando para a saída

padrão (tela) e também para um arquivo.

$ ls c* | tee arq.tee

calculadora.sh

cores.sh

cripta.sed

$ cat arq.tee

calculadora.sh

cores.sh

cripta.sed

Page 11: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

11

Manipulação de Arquivos

● O Shell e os aplicativos da GNU fazem de forma Simples, Imediata e Eficiente.

● Principais ferramentas:

redirecionamentos

sed

awk

fgrep; grep; egrep (ou grep -e)

find

Page 12: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

12

Inserindo conteúdo em arquivos

$ cat arq

linha1

linha3

$ echo linha2 > arq

$ cat arq

linha2

$ echo linha1 >> arq

$ sort arq

linha1

linha2

$ cat arqlinha2linha1

Page 13: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

13

Apagando linhas

$ cat arq

linha1

linha2

linha3

$ grep -v linha3 arq > arq.novo

$ mv -f arq.novo arq

$ cat arq

linha1

linha2

$ sed 2d arq > arq.novo

$ mv -f arq.novo arq

$ cat arq

linha1

Page 14: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

14

Alterando valores

$ cat arq

linha1

$ sed s/1/Única/ arq > arq.novo

$ mv -vf arq.novo arq

$ cat arq

linhaÚnica

$ echo linha1 > arq

$ sed 's/1/Única/;s/l/L/' arq > arq.novo

$ mv -vf arq.novo arq

$ cat arq

LinhaÚnica

Page 15: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

15

Tratamento de cadeias

cut– Corta um pedaço ou um campo de uma cadeia

paste– O oposto do cut. Cola cadeias de caracteres

tr– Transforma <dos-caracteres> <para-os-caracteres>

awk– Linguagem própria.– Permite trabalhar com as colunas e com o texto.

Page 16: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

16

Tratamento de cadeias$ who # Este comando lista usuários logadosbolpetti pts/0 Mar 25 08:06jneves pts/2 Mar 25 17:58bolpetti pts/1 Mar 25 08:07rlegaria pts/4 Mar 25 09:04

$ who | cut -f1 -d" "bolpettijnevesbolpettirlegaria

$ who | cut -f1 -d" " | sort | uniqbolpettijnevesrlegaria

Page 17: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

17

Tratamento de cadeias$ echo pocoto | tr o upucutu $ cat > arq1Linha1Linha2CTRL+D$ cat > arq2Continuacao1Continuacao2CTRL+D$ paste arq1 arq2 > arq3$ cat arq3Linha1 Continuacao1Linha2 Continuacao2$ awk '{print $1"--"$2}' arq3Linha1--Continuacao1Linha2--Continuacao2

Page 18: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

18

Instruções condicionais (if)

● Os quatro mandamentos do if:– Não testa condições– Testa instruções

– O comando test testa condições

– Para testar condições use o if junto com o test

$ if ls -l diret | grep ^d; then

> cd diret

> else

> mkdir diret

> cd diret

> fi

Page 19: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

19

if + test

$ test -d diret

$ echo $?

0

$ if test -d diret ; then

> cd diret

> else

> mkdir diret

> cd diret

> fi

Page 20: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

20

if + test

$ IDADE=27

$ if [ $IDADE -gt 18 ];then

> echo 'Você é maior de idade'

> else

> echo 'Você é menor de idade'

> fi

Page 21: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

21

Instruções condicionais (case)O comando case suporta uso de metacaracteres:

case var in

padrão1) comandos ;;

padrão2) comandos ;;

*) comandos ;;

esac

case $(date '+%H') in

0?|1[01]) echo Bom Dia

;;

1[2-7]) echo Boa Tarde

;;

*) echo Boa Noite

;;

esac

case $CHAR in [a-z])

echo Letra Minuscula ;; [A-Z])

echo Letra Maiuscula ;; [0-9])

echo Numero ;; *)

echo Caracter Especial ;;esac

Page 22: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

22

Instruções de Laço (Loop)

● Comando for– Recebe cadeias de caractere como parâmetro

● Comando while– Assim como o if, este comando testa instruções

● Comando until– Também testa instruções.

Page 23: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

23

Instruções de laço (for)

$ for VAR in a b c d

> do

> echo $VAR

> done

$ for ((i=0;i<=10;i++))

> do

> echo $i

> done

Page 24: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

24

Instruções de laço (while)

$ NUM = 0

$ while sleep 1;do

> echo $NUM

> let NUM++

> done

$ NUM=0

$ while [ $NUM -lt 10 ];do

> echo $NUM

> let NUM++

> done

Page 25: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

25

Instruções de laço (until)

$ Resp=

$ until [ "$Resp" = S -o "$Resp" = N ];do

> read -p “Deseja Continuar? “ Resp

> done

Page 26: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

26

Leitura (read)

$ read var1 var2 var3

Isto é um erro de pontuação!

$ echo "($var1) , [$var2] . $var3"

Isto,é.um erro de pontuação!

E qual é o resultado do comando abaixo?

$ echo '($var1) , [$var2] . $var3'

???

Page 27: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

27

Leitura de arquivos

# 1ª forma:

cat /etc/passwd | \

while read Linha; do

User=$(echo $Linha | cut -f1 -d:)

UID=`echo $Linha | cut -f3 -d:`

Coment=`echo $Linha | cut -f5 -d:`

done

echo $User $UID $Coment

Page 28: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

28

Leitura de arquivos

# 2ª forma:

while read Linha; do

User=$(echo $Linha | cut -f1 -d:)

UID=`echo $Linha | cut -f3 -d:`

Coment=`echo $Linha | cut -f5 -d:`

Done < /etc/passwd

echo $User $UID $Coment

Page 29: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

29

Opções do read

Otimizando a captura dos dados

Formas otimizadas do comando read:

read -p # Prompt

read -n # Número de caracteres

read -t # Tempo

read -s # Silenciosamente

Page 30: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

30

Comando read

$ read -p "Digite seu nome: " Nom

Botelho

$ echo O nome digitado foi: $Nom

O nome digitado foi: Botelho

$ if read -t 20 -p 'Opção: ' Opc ; then

> echo A opção escolhida foi: $Opc

> else

> echo Fim do prg. 20 segundos sem uso.

> exit 1

> fi

Page 31: d o Shell Script E s o S o C N Ujeiks.net/wp-content/uploads/2017/08/SSL_Linux-Shell.pdf · 2017. 11. 26. · U n i v e r s i d a d e F e d e r a l d o E s p í r i t o S a n t o

Unive rsidad e F

ede ral do Espír ito S

a nto – CC

EN

S U

FE

S

31

Obtendo informações do kernel

$ grep -m1 'model name' /proc/cpuinfo | \

cut -d: -f2

$ grep -m1 'MHz' /proc/cpuinfo | \

cut -d: -f2

$ grep 'MemTotal\|MemFree' /proc/meminfo

$ awk '{

if ($1=="cpu" && $2=="MHz")

print $NF

}' /proc/cpuinfo


Recommended