Você está na página 1de 4

1.

Operadores
Operadores Aritmticos
+

Adio

Subtrao

Multiplicao

Diviso

%
**

Exponenciao
Operadores de Atribuio

Atribui valor a uma varivel

+=

Incrementa a varivel por uma constante

-=

Decrementa a varivel por uma constante

*=

Multiplica a varivel por uma constante

/=

Divide a varivel por uma constante

%=

Resto da diviso por uma constante

++

Incrementa em 1 o valor da varivel

--

Decrementa em 1 o valor da varivel


Operadores Relacionais

Retorna nome de varivel comea p/


'texto'

${var:N}

Retorna o texto partir da posio 'N'

Redireciona a sada de erro, anexando

${var:N:tam}

Conecta a sada padro com a entrada padro de


outro comando

Return 'tam' caracter partir da posio


'N'

${var#texto}

Corta 'texto' do incio da string

${var##texto}

Corta 'texto' do incio da string (* guloso)

${var%texto}

Corta 'texto' do final da string

${var%%texto}

Corta 'texto' do final da string (* guloso)

${var/texto/novo}

Substitui 'texto' por 'novo', uma vez

${var//texto/novo}

Substitui 'texto' por 'novo', sempre

${var/#texto/novo}

Se a string comear com 'texto', substitui


'texto' por 'novo'

${var/%texto/novo}

Se a string terminar com 'texto', substitui


'texto' por 'novo'

Redireciona a sada padro (STDOUT)


Redireciona a sada de erro (STDERR)

>>

Redireciona a sada padro, anexando

2>>
|

Mdulo

${!texto*}

>
2>

2>&1

Conecta a sada de erro na sada padro

>&2

Conecta a sada padro na sada de erro

>&-

Fecha a sada padro

2>&-

Fecha a sada de erro

3<>arq

Conecta o descritor de arquivos 3 ao arquivo 'arq'

<<FIM

Alimenta a entrada padro (Here Document)

<<-FIM

Alimenta a entrada padro, cortando TABs

<(cmd)

A sada do comando 'cmd' um arquivo: diff


<(cmd1) <(cmd2)

>(cmd)

A entrada do comando 'cmd' um arquivo: tar cf


>(bzip2 -c >file.tbz) $dir

3. Variveis especiais
Varivel

Parmetros Posicionais

5. if, for, select, while, until, case


if

for / select

while / until

If cmd

for var in lista

wile cmd

then ...

do ...

do

elif cmd

done

then ...

ou for

param2) ;;
param3) ;;

$0

Parmetro nmero 0 (nome do comando ou funo)

!=

Diferente

$1

>

Maior

...

Maior ou Igual

$9

Parmetro nmero 1 (da linha de comando ou funo) else ...


((expr1;expr2;expr3))
Parmetro nmero N ...
6. Blocos e agrupamentos

<

${10}

Menor

<=

Menor ou Igual

&&

E lgico (AND)

||

OU lgico (OR)

Operadores Lgicos

Operadores de BIT
<<

Deslocamento esquerda

>>

Parmetro nmero 10 (da linha de comando / funo)

...

Parmetro nmero NN ...

$#

Nmero total de parmetro da linha de cmd ou funo

$*

Todos os parmetros, como uma string nica

$@

Todos os parmetros, como vrias strings protegidas

Varivel

Nmero PID do processo atual (do prprio script)

Deslocamento direita

$!

Nmero PID do ltimo job em segundo plano

&

E de bit (AND)

$_

ltimo argumento do ltimo comando executado

OU de bit (OR)

$?

Cdigo de retorno do ltimo comando executado

OU exclusivo de bit (XOR)

Negao de bit

NO de bit (NOT)

4. Expanso de variveis
Sintaxe

Operadores de BIT (atribuio)


<<= Deslocamento esquerda
>>= Deslocamento direita
&=

E de bit

|=

OU de bit

^=

OU exclusivo de bit

Operador
<

Ao
Redireciona a entrada padro (STDIN)

Descrio

Exemplo

"..."

Protege uma string, mas reconhece $, \


e ` como especiais

"abc"

'...'

Protege uma string completamente


(nenhum caractere especial)

'abc'

$'...'

Protege uma string completamente ,


mas interpreta \n, \t, \a, etc

`...`

Executa comandos numa subshell,


retornando o resultado

{...}

Agrupa comandos em um bloco

(...)

Executa comandos numa subshell

( ls )

$(...)

Executa comandos numa subshell,


retornando o resultado

$( ls )

((...))

Testa uma operao aritmtica,


retornando 0 ou 1

((5 > 3))

$'abc\n'
`ls`
{ ls ; }

${var:-texto}

Se var no est definida, retorna 'texto'

${var:=texto}

Se var no est definida, defina-a com


'texto'

$((...))

Retorna o resultado de uma operao


aritmtica

$((5+3))

${var:?texto}

Se var no est definida, retorna o erro


'texto'

[...]

Testa uma expresso, retornando 0 ou


1 (alias do comando 'test')

[ 5 -gt 3 ]

${var:+texto}

Se var est definida, retorna 'texto', seno


retorna o vazio

[[...]]

Testa uma expresso, retornando 0 ou


1 (podendo usar && e ||)

[[ 5 > 3 ]]

Sintaxe

2. Redirecionamento

Expanso Condicional

*) ;;

Sintaxe

Miscelnia

$$

param1) ;;

done

Igual

Parmetro nmero 9 (da linha de comando ou funo)

case $var in

...

==

>=

case

Expanso de Strings

7. Opes do comando test ou [


Comparao Numrica

${var}

o mesmo que $var, porm no ambguo

${#var}

Retorna o tamanho da string

-lt

menor que (LessThan)

${!var}

Executa contedo $var (igual 'eval \$$var')

-gt

maior que (GreaterThan)

-le

menor igual (LessEqual)

\j

Jobs

Nmero de jobs ativos

%b

Nome do ms abreviado (Jan..Dez)

-ge

maior igual (GreaterEqual)

\l

Tty

Nome do terminal corrente (ttyp1)

%B

Nome do ms (Janeiro..Dezembro)

-eq

igual (EQual)

\n

Newline

Linha nova

-ne

diferente (NotEqual)

\r

Return

Retorno de carro

\s

Shell

Nome do shell (basename $0)

Comparao de Strings
=

igual

\t

Time

Horrio no formato 24 horas HH:MM:SS

!=

diferente

\T

Time

Horrio no formato 12 horas HH:MM:SS

-n

no nula

-z

nula
Operadores Lgicos

NO lgico (NOT)

-a

E lgico (AND)

-o

OU lgico (OR)
Testes em arquivos

-b

um dispositivo de bloco

-c

um dispositivo de caractere

-d

um diretrio

-e

O arquivo existe

%j

Dia do ano (001..366)

\u

Usurio

Login do usurio corrente

%H

Horas (00..23)

\v

Verso

Verso do Bash (2.00)

%M

Minutos (00..59)

\V

Verso

Verso+subverso do Bash (2.00.0)

%S

Segundos (00..60)

\w

Working Dir

Diretrio corrente, caminho completo


($PWD)

Working Dir

Diretrio corrente, somente o ltimo


(basename $PWD)

\W
\!

Histrico

Nmero do comando corrente no


histrico

Nmero

Nmero do comando corrente

ID

Mostra "#" para root, "$" usurio normal

Octal

Caractere cujo octal nnn

O grupo do arquivo o do usurio atual

-k

O sticky-bit est ativado

\\

Backslash

Barra invertida \ literal

-L

O arquivo um link simblico

\[

Escapes

-O

O dono do arquivo o usurio atual

Inicia uma seqncia de escapes (tipo


cdigos de cores)

\]

Escapes

Termina uma seqncia de escapes

\nnn

-r

O arquivo tem permisso de leitura


O tamanho do arquivo maior que zero

-S

O arquivo um socket

\a

Alerta

Alerta (bipe)

-t

O descritor de arquivos N um terminal

\b

Backspace

Caractere Backspace

-u

O bit SUID est ativado

\c

EOS

Termina a string

-w

O arquivo tem permisso de escrita

\e

Escape

Caractere Esc

-ef

O arquivo o mesmo (EqualFile)

8. Escapes especiais p/ usar no prompt (PS1)


Escape
\a
\d
\e
\h
\H

Lembrete

Expande para...

Alerta

Alerta (bipe)

Data

Data no formato "Dia-da-semana Ms


Dia" (Sat Jan 15)

Escape

Caractere Esc

Hostname

Nome da mquina sem o domnio


(dhcp11)

Hostname

Nome completo da mquina


(dhcp11.empresa)

%s

Segundos desde 1 de Janeiro de 1970

%%

Um % literal

%t

Um TAB

%n

Uma quebra de linha

11. Formatadores do comando printf


Formato

9. Escapes reconhecidos pelo comando echo

-s

O arquivo mais antigo (OlderThan)

Dia (01..31)

Horrio no formato 24 horas HH:MM

-G

-ot

Ms (01..12)

At

\$

O arquivo mais recente (NewerThan)

%m

\A

O bit SGID est ativado

O arquivo tem permisso de execuo

Ano (quatro dgitos)

Horrio no formato 12 horas HH:MM


am/pm

um arquivo normal

-x

%Y

At

-f

-nt

Ano (dois dgitos)

\@

-g

O arquivo um named pipe

Data completa (Sat Nov 04 12:02:33 EST 1989)

%d

\#

-p

%c
%y

Escape

Lembrete

Descrio

Descrio

%d

Nmero decimal

%o

Nmero octal

%x

Nmero hexadecimal (a-f)

%X

Nmero hexadecimal (A-F)

%f

Nmero com ponto flutuante

%e

Nmero em notao cientfica (e+1)

%E

Nmero em notao cientfica (E+1)

%s

String

12. Letra identificadora arquivo comando ls -l


Letra

Lembrete

Directory

Link

Tipos de Arquivo (primeiro caractere)


Arquivo normal

\f

Form feed

Alimentao

\n

Newline

Linha nova

\r

Return

Retorno de carro

Block

Dispositivo de blocos (HD)

\t

Tab

Tabulao horizontal

Char

Dispositivo de caracteres (modem serial)

\v

Vtab

Tabulao vertical

Socket

\\

Backslash

Barra invertida \ literal

\nnn

Octal

Caractere cujo octal nnn

Pipe

\xnn

Hexa

Caractere cujo hexadecimal nn

Letra

Lembrete

10. Formatadores do comando date


Formato

Descrio

Diretrio
Link simblico

Socket mapeado em arquivo (comunicao


de processos)
FIFO ou Named Pipe (com. de processos)
Permisses arquivo (nove caracteres)
Permisso desativada

Read

Acesso de leitura

Write

Acesso de escrita

%a

Nome do dia da semana abreviado (Dom..Sb)

eXecute

Acesso de execuo (ou ao diretrio)

%A

Nome do dia da semana (Domingo..Sbado)

eXecute

Acesso ao diretrio somente

Set ID

Set ID

sTicky

sTicky

Usurio/grupo para execuo (SUID, SGID) - 18


permisso 'x' ativada
19
Usurio/grupo para execuo (SUID, SGID) - 20
permisso 'x' desativada
21
Usurios s apagam seus prprios arquivos
22
- permisso 'x' ativada
Usurios s apagam seus prprios arquivos 23
- permisso 'x' desativada
24

13. Curingas para nomes de arquivo (glob)


Curinga

Casa com...
Qualquer coisa

*.txt

Um caractere qualquer

arquivo-??.zip

Qualquer caracter listado

[Aa]rquivo.txt

[^...]

Qualquer um dos
caracteres no listados

[^A-Z]*.txt

{...}

Qualquer um dos textos


separados por vrgula

[...]

Casa com...

arquivo.{txt,html}

CHLD VTALRM WINCH

CHLD

Rosa

35

45

TTIN

TTIN

URG

TTIN

PROF

URG

TTIN

Ciano

36

46

TTOU

TTOU

IO

TTOU

IO

IO

TTOU

Branco

37

URG

IO

STOP

IO

WINCH

STOP

IO

XCPU

XCPU

TSTP

XCPU

STOP

TSTP

XCPU

AIX

XFSZ

CONT

XFSZ

TSTP

CONT

XFSZ

VTALRM

TTIN

CONT

TTIN

27 PROF

PROF

TTOU

MSG

TTIN

28 WINCH

WINCH

VTALRM

WINCH

LOST

PROF

30 PWR

USR1

31

SYS

USR2

32

33

VTALRM

IO

TTOU

PROF

Reverso

TTOU

VTALRM

WINCH

PWR

URG

PROF

INFO

Texto normal (desliga cores)

XCPU

USR1

LOST

XCPU

USR1

Negrito

ESC[1m

XFSZ

USR2

XFSZ

USR2

Amarelo

ESC[33;1m

PROF

WAITING

Fundo azul, letra cinza

DANGER

LWP

Vermelho piscando

FREEZE

36

PRE

CANCE
L

37

LOST

HUP

OBS: Como obter a listagem: trap -l, kill -l ou killall -l, man 7 signal

16. Cdigos de retorno de comandos

HUP

Significado

Exemplo

Nenhum erro, execuo terminou OK

echo

A maioria dos erros comuns na


execuo

echo $((1/0))

Erro de uso em algum 'builtin' do Shell

INT

INT

INT

INT

INT

INT

INT

QUIT

QUIT

QUIT

QUIT

QUIT

QUIT

QUIT

ILL

ILL

ILL

ILL

ILL

ILL

ILL

TRAP

TRAP

TRAP

TRAP

TRAP

TRAP

TRAP

126

Comando no executvel (sem


permisso)

touch a ; ./a

ABRT

ABRT

IOT

LOST

ABRT

ABRT

ABRT

127

echooo

BUS

EMT

EMT

EMT

EMT

EMT

EMT

Comando no encontrado ("command


not found")

FPE

FPE

FPE

FPE

FPE

FPE

FPE

KILL

KILL

KILL

KILL

KILL

KILL

KILL

10 USR1

BUS

BUS

BUS

BUS

BUS

BUS

11 SEGV

SEGV

SEGV

SEGV

SEGV

SEGV

SEGV

12 USR2

SYS

SYS

SYS

SYS

SYS

SYS

# Linux Cygwin SystemV

AIX

HP-UX Solaris BSD/Mac

128+n 128 + cdigo do sinal que o matou

exit 1.0
kill -9 $PPID
#exit 137

130

O programa interrompido com o Ctrl+C


(128 + 2)

255

Parmetro 'exit' no est entre 0 e 255 exit -1

17. Cdigos de cores (ANSI)

ESC[m

ESC[44;37m
ESC[31;5m

Na linha de comando
echo -e '\e[33;1m amarelo \e[m'
echo -e '\033[33;1m amarelo \033[m'

18. Meta caracteres das expresses regulares


Meta

Nome

Descrio

Ponto

Curinga de um caractere

[]

Lista

Casa qualquer um dos caracteres listados

Lista negada

Casa qquer caractere, exceto os listados

Opcional

Entidade anterior pode aparecer ou no.

Asterisco

Entidade anterior. pode aparecer em


qualquer quantidade

Mais

Entidade ant.deve aparecer mnimo 1 vez

Chaves

Entidade anterior. deve aparecer na


quantidade indicada.

Circunflexo

Casa o comeo da linha

Cifro

Casa o fim da linha

\b

Borda

Limita uma palavra (letra, nm e subl.)

Escape

Escapa um meta, tirando seu poder

Ou

Indica alternativas (usar com o grupo)

()

Grupo

Agrupa partes da expresso,


quantificvel e multinvel

\1

Retrovisor

Recupera o contedo do grupo 1

\2

Retrovisor

Recupera contedo grupo 2 ( at o \9)

[^]

{,}

.*

Curinga

Casa qualquer coisa, o tudo e o nada

Fundo

??

Opcional NG

Idem comum, casa o mnimo possvel

Preto

30

40

*?

Asterisco NG

Idem ao * comum, casa mnimo possvel

URG

Vermelho

31

41

+?

Mais NG

Idem comum, casa o mnimo possvel

STOP

Verde

32

42

{}?

Chaves NG

Idem chave comun, casa mnimo possvel

PIPE

PIPE

PIPE

PIPE

PIPE

PIPE

14 ALRM

ALRM

ALRM

ALRM

ALRM

ALRM

ALRM

15 TERM

TERM

TERM

TERM

TERM

TERM

TERM

16

URG

USR1

URG

USR1

USR1

STOP

USR2

STOP

USR2

USR2

17 CHLD

O parmetro para o 'exit' no um


decimal

7
Exemplos: ESC [ <N>;<N> m

Letra

13 PIPE

128

1
4

HUP

Piscando

THAW

HP-UX Solaris BSD/Mac

Reset

VTALRM

Cdigo

Valor

Sublinhado

MIGRATE

txt|html) echo ;;

47

Atributo

HP-UX Solaris BSD/Mac Negrito

15. Sinais para usar com trap/kill/killall


HUP

WINCH

[^0-9]) echo ;;

HUP

CHLD

Qualquer numero no listado

HUP

44

TSTP

35

[0-9]) echo ;;

HUP

43

34

Qualquer numero listado

33

Azul

arquivo-??.zip) echo ;;

AIX

Amarelo

CONT

Um caractere qualquer

# Linux Cygwin SystemV

TSTP

PWR

34

Qualquer um dos textos


separados por | pipe

CHLD

PWR

Exemplo
*.txt) echo ;;

...|...

CHLD

CONT

VTALR
M

Qualquer coisa

[^...]

TSTP

PWR

29

*
[...]

CHLD

CONT

# Linux Cygwin SystemV


26

14. Curingas para os itens do comando case


Curinga

TSTP

STOP

25 XFSZ

Exemplo

CONT

Cor

19. Meta caracteres diferentes nos aplicativos


Programa

Opc

Mais

Chaves

Borda

Ou

Grupo

awk

()

ed

\?

\+

\{,\}

\b

\|

\(\)

egrep

{,}

\b

()

emacs

\b

\|

\(\)

expect

()

find

\b

\|

\(\)

gawk

{,}

\<\>

()

grep

\?

\+

\{,\}

\b

\|

\(\)

mawk

()

perl

{,}

\b

()

php

{,}

\b

()

python

{,}

\b

()

sed

\?

\+

\{,\}

\<\>

\|

\(\)

vim

\=

\+

\{,}

\<\>

\|

\(\)

22. Cdigos prontos para copiar e colar


Condicionais com o IF

i=1 ; while [ $i -le 10 ]; do echo $i ; i=$((i+1)) ; done

Ctrl+K

Recorta do cursor at o fim da linha

i=1 ; until [ $i -gt 10 ]; do echo $i ; i=$((i+1)) ; done

Ctrl+L

Limpa a tela (igual ao comando clear)

Ctrl+N

Prximo comando

cat /etc/passwd | while read LINHA; do echo "$LINHA"; done

Ctrl+P

Comando anterior

grep 'root' /etc/passwd | while read LINHA; do echo "$LINHA";


done

Ctrl+Q

Destrava a shell (veja Ctrl+S)

Ctrl+R

Procura no histrico de comandos

while read LINHA; do echo "$LINHA"; done < /etc/passwd

Ctrl+S

Trava a shell (veja Ctrl+Q)

while read LINHA; do echo "$LINHA"; done < <(grep 'root'


/etc/passwd)

Ctrl+T

Troca dois caracteres de lugar

Ctrl+U

Recorta a linha inteira

Ctrl+V

Insere caractere literal

Loop nas linhas de um arquivo ou sada de comando

Curingas nos itens do comando case


case "$dir" in /home/*) echo 'dir dentro do /home';; esac
case "$user" in root|joao|maria) echo "Oi $user";; *) echo "No te
conheo";; esac
case "$var" in ?) echo '1 letra';; ??) echo '2 letras';; ??*) echo
'mais de 2';; esac
case "$i" in [0-9]) echo '1 dgito';; [0-9][0-9]) echo '2 dgitos';;
esac
Caixas do Dialog
dialog --calendar 'abc' 0 0 31 12 1999
dialog --checklist 'abc' 0 0 0 item1 'desc1' on item2 'desc2' off

if [ -f "$arquivo" ]; then echo 'Arquivo encontrado'; fi

dialog --fselect /tmp 0 0

if [ ! -d "$dir" ]; then echo 'Diretrio no encontrado'; fi

(echo 50; sleep 2; echo 100) | dialog --gauge 'abc' 8 40 0

if [ $i -gt 5 ]; then echo 'Maior que 5'; else echo 'Menor que 5'; fi

dialog --infobox 'abc' 0 0

if [ $i -ge 5 -a $i -le 10 ]; then echo 'Entre 5 e 10, incluindo'; fi

dialog --inputbox 'abc' 0 0

if [ $i -eq 5 ]; then echo '=5'; elif [ $i -gt 5 ]; then echo '>5'; else
echo '<5'; fi

dialog --passwordbox 'abc' 0 0

if [ "$USER" = 'root' ]; then echo 'Oi root'; fi


if grep -qs 'root' /etc/passwd; then echo 'Usurio encontrado'; fi
Condicionais com o E (&&) e OU (||)
[ -f "$arquivo" ] && echo 'Arquivo encontrado'
[ -d "$dir" ] || echo 'Diretrio no encontrado'
grep -qs 'root' /etc/passwd && echo 'Usurio encontrado'
cd "$dir" && rm "$arquivo" && touch "$arquivo" && echo 'feito!'
[ "$1" ] && param=$1 || param='valor padro'
[ "$1" ] && param=${1:-valor padro}
[ "$1" ] || { echo "Uso: $0 parmetro" ; exit 1 ; }
Adicionar 1 varivel $i

dialog --menu 'abc' 0 0 0 item1 'desc1' item2 'desc2'


dialog --msgbox 'abc' 8 40
dialog --radiolist 'abc' 0 0 0 item1 'desc1' on item2 'desc2' off
dialog --tailbox /tmp/arquivo.txt 0 0
dialog --textbox /tmp/arquivo.txt 0 0
dialog --timebox 'abc' 0 0 23 59 00
dialog --yesno 'abc' 0 0
Dica1: dialog ... && echo 'Apertou OK/Yes' || echo 'Cancel/No'
Dica2: resposta=$(dialog --stdout --TIPODACAIXA 'abc' ...)

23. Atalhos linha de comando (set -o emacs)


Atalho

Descrio

i=$(expr $i + 1)

Ctrl+A

Move o cursor para o incio da linha

i=$((i+1))

Ctrl+B

Move cursor uma posio esquerda

let i=i+1

Ctrl+C

Envia sinal EOF() para o sistema

let i+=1

Ctrl+D

Apaga um caractere direita

let i++
Loop de 1 10
for i in 1 2 3 4 5 6 7 8 9 10; do echo $i; done

Ctrl+E

Move o cursor para o fim da linha

Ctrl+F

Move o cursor uma posio direita

Ctrl+H

Apaga um caractere esquerda

for i in $(seq 10); do echo $i; done

Ctrl+I

Completa arquivos e comandos

for ((i=1;i<=10;i++)); do echo $i; done

Ctrl+J

Quebra a linha

Ctrl+W Recorta a palavra esquerda


Ctrl+X

Move cursor para incio/fim da linha

Ctrl+Y

Cola o trecho recortado

24. A caixa de ferramentas do shelleiro


Comando

-n, -s

cut

Extrai campo

-d -f, -c

Mostra data

-d, +'...'

Compara arquivos

-u, -Nr, -i, -w

echo

Mostra texto

-e, -n

find

Encontra arquivos

-name/-iname/-type f/-exec/or

fmt

Formata pargrafo

-w, -u

grep

Encontra texto

-i/-v/-r/-qs/-n/-l/-w/-x/-A/-B/-C

head

date
diff

Mostra Incio

-n, -c

od

Mostra Caracteres

-a, -c, -o, -x

paste

Paraleliza arquivos

-d, -s

printf

Mostra texto

nenhuma

rev

Inverte texto

nenhuma

sed

Edita texto

-n, -f, s/isso/aquilo/, p, d, q, N

seq

Conta Nmeros

-s, -f

sort

Ordena texto

-n, -f, -r, -k -t, -o

tac

Inverte arquivo

nenhuma

tail

Mostra Final

-n, -c, -f

tee

Arquiva fluxo

-a

Transforma texto

-d, -s, A-Z a-z

Remove duplicatas

-i, -d, -u

Conta Letras

-c, -w, -l, -L

Home

uniq
wc
xargs

End

Opes teis

Mostra arquivo

Tcla Similar

Delete

Funo

cat

tr

Home/End

Gerencia argumento -n, -i

dmidecode Inventrio Hardware

-t bios/processor/memory ...

xfs_admin Manipula partio xfs -U generate


partimage Clona/restaura hd

-z1 -d -b -f0 save restore

Backspace

ssh

Login remoto

-b -i -l -p -C usuario@hots

Tab

scp

Tranferencia remota

-r -C -i -l -o -p usuario@hots

Enter

Você também pode gostar