Você está na página 1de 4

Operadores Variveis especiais Blocos e agrupamentos

Operadores Aritmticos Operadores Relacionais Varivel Parmetros Posicionais Sintaxe Descrio Exemplo
+ Adio == Igual $0 Parmetro nmero 0 (nome do comando ou funo) "..." Protege uma string, mas reconhece $, \ e ` como especiais "abc"
- Subtrao != Diferente $1 Parmetro nmero 1 (da linha de comando ou funo) '...' Protege uma string, nenhum caractere especial 'abc'
* Multiplicao > Maior ... Parmetro nmero N ... $'...' Protege uma string, mas interpreta \n, \t, \a, etc $'abc\n'
/ Diviso >= Maior ou Igual $9 Parmetro nmero 9 (da linha de comando ou funo) `...` Executa comandos numa subshell, retornando o resultado `ls`
% Mdulo < Menor ${10} Parmetro nmero 10 (da linha de comando ou funo) {...} Agrupa comandos em um bloco { ls ; }
** Exponenciao <= Menor ou Igual ... Parmetro nmero NN ... (...) Executa comandos numa subshell ( ls )
Operadores de Atribuio Operadores de BIT $# Nmero total de parmetros da linha de comando ou funo $(...) Executa comandos numa subshell, retornando o resultado $( ls )
= Atribui valor a uma varivel << Deslocamento esquerda $* Todos os parmetros, como uma string nica ((...)) Testa uma operao aritmtica, retornando 0 ou 1 ((5 > 3))
+= Incrementa a varivel por uma constante >> Deslocamento direita $@ Todos os parmetros, como vrias strings protegidas $((...)) Retorna o resultado de uma operao aritmtica $((5+3))
-= Decrementa a varivel por uma constante & E de bit (AND) Varivel Miscelnia [...] Testa uma expresso, retorna 0 ou 1 (alias do comando 'test') [ 5 -gt 3 ]
*= Multiplica a varivel por uma constante | OU de bit (OR) $$ Nmero PID do processo atual (do prprio script) [[...]] Testa uma expresso, retorna 0 ou 1 (podendo usar && e ||) [[ 5 > 3 ]]
/= Divide a varivel por uma constante ^ OU exclusivo de bit (XOR) $! Nmero PID do ltimo job em segundo plano
%= Resto da diviso por uma constante ~ Negao de bit $_ ltimo argumento do ltimo comando executado Opes do comando test ou [
++ Incrementa em 1 o valor da varivel ! NO de bit (NOT) $? Cdigo de retorno do ltimo comando executado Testes em arquivos Testes em variveis
-- Decrementa em 1 o valor da varivel -b um dispositivo de bloco
Operadores Lgicos Operadores de BIT (atribuio) Expanso de variveis -c um dispositivo de caractere Comparao Numrica
&& E lgico (AND) <<= Deslocamento esquerda Sintaxe Expanso Condicional -d um diretrio -lt menor que (LessThan)
|| OU lgico (OR) >>= Deslocamento direita ${var:-texto} Se var no est definida, retorna 'texto' -e O arquivo existe -gt maior que (GreaterThan)
&= E de bit ${var:=texto} Se var no est definida, defina-a com 'texto' -f um arquivo normal -le menor igual (LessEqual)
|= OU de bit ${var:?texto} Se var no est definida, retorna o erro 'texto' -g O bit SGID est ativado -ge maior igual (GreaterEqual)
^= OU exclusivo de bit ${var:+texto} Se var est definida, retorna 'texto', seno retorna o vazio -G O grupo do arquivo o do usurio atual -eq igual (EQual)
Sintaxe Expanso de Strings -k O sticky-bit est ativado -ne diferente (NotEqual)
Redirecionamento ${var} o mesmo que $var, porm no ambguo -L O arquivo um link simblico
-O O dono do arquivo o usurio atual Comparao de Strings
Operador Ao ${#var} Retorna o tamanho da string
-p O arquivo um named pipe = igual
< Redireciona a entrada padro (STDIN) ${!var} Executa o contedo de $var (igual 'eval \$$var')
-r O arquivo tem permisso de leitura != diferente
> Redireciona a sada padro (STDOUT) ${!texto*} Retorna os nomes de variveis comeadas por 'texto'
-s O tamanho do arquivo maior que zero -n no nula
2> Redireciona a sada de erro (STDERR) ${var:N} Retorna o texto partir da posio 'N'
-S O arquivo um socket -z nula
>> Redireciona a sada padro, anexando ${var:N:tam} Retorna 'tam' caracteres partir da posio 'N'
-t O descritor de arquivos N um terminal
2>> Redireciona a sada de erro, anexando ${var#texto} Corta 'texto' do incio da string
-u O bit SUID est ativado Operadores Lgicos
| Conecta a sada padro com a entrada padro de outro comando ${var##texto} Corta 'texto' do incio da string (* guloso)
-w O arquivo tem permisso de escrita ! NO lgico (NOT)
2>&1 Conecta a sada de erro na sada padro ${var%texto} Corta 'texto' do final da string
-x O arquivo tem permisso de execuo -a E lgico (AND)
>&2 Conecta a sada padro na sada de erro ${var%%texto} Corta 'texto' do final da string (* guloso)
-nt O arquivo mais recente (NewerThan) -o OU lgico (OR)
>&- Fecha a sada padro ${var/texto/novo} Substitui 'texto' por 'novo', uma vez
-ot O arquivo mais antigo (OlderThan)
2>&- Fecha a sada de erro ${var//texto/novo} Substitui 'texto' por 'novo', sempre
-ef O arquivo o mesmo (EqualFile)
3<>arq Conecta o descritor de arquivos 3 ao arquivo 'arq' ${var/#texto/novo} Se a string comear com 'texto', substitui 'texto' por 'novo'
<<FIM Alimenta a entrada padro (Here Document) ${var/%texto/novo} Se a string terminar com 'texto', substitui 'texto' por 'novo'
<<-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

Canivete Suo do Shell (bash) http://aurelio.net/shell/canivete/ Criado por Aurelio Marinho Jargas | www.aurelio.net | @oreio
Escapes do prompt (PS1) Formatadores do comando date Letras do comando ls -l
Escape Lembrete Expande para... Formato Descrio Letra Lembrete Tipos de Arquivo (primeiro caractere)
\a Alerta Alerta (bipe) %a Nome do dia da semana abreviado (Dom..Sb) - - Arquivo normal
\d Data Data no formato "Dia-da-semana Ms Dia" (Sat Jan 15) %A Nome do dia da semana (Domingo..Sbado) d Directory Diretrio
\e Escape Caractere Esc %b Nome do ms abreviado (Jan..Dez) l Link Link simblico
\h Hostname Nome da mquina sem o domnio (dhcp11) %B Nome do ms (Janeiro..Dezembro) b Block Dispositivo de blocos (HD)
\H Hostname Nome completo da mquina (dhcp11.empresa) %c Data completa (Sat Nov 04 12:02:33 EST 1989) c Char Dispositivo de caracteres (modem serial)
\j Jobs Nmero de jobs ativos %y Ano (dois dgitos) s Socket Socket mapeado em arquivo (comunicao de processos)
\l Tty Nome do terminal corrente (ttyp1) %Y Ano (quatro dgitos) p Pipe FIFO ou Named Pipe (comunicao de processos)
\n Newline Linha nova %m Ms (01..12) Letra Lembrete Permisses do Arquivo (prximos nove caracteres)
\r Return Retorno de carro %d Dia (01..31) - - Permisso desativada
\s Shell Nome do shell (basename $0) %j Dia do ano (001..366) r Read Acesso de leitura
\t Time Horrio no formato 24 horas HH:MM:SS %H Horas (00..23) w Write Acesso de escrita
\T Time Horrio no formato 12 horas HH:MM:SS %M Minutos (00..59) x eXecute Acesso de execuo (ou acesso ao diretrio)
\@ At Horrio no formato 12 horas HH:MM am/pm %S Segundos (00..60) X eXecute Acesso ao diretrio somente
\A At Horrio no formato 24 horas HH:MM %s Segundos desde 1 de Janeiro de 1970 s Set ID Usurio/grupo para execuo (SUID, SGID)
\u Usurio Login do usurio corrente %% Um % literal permisso 'x' ativada
\v Verso Verso do Bash (2.00) %t Um TAB S Set ID Usurio/grupo para execuo (SUID, SGID)
\V Verso Verso+subverso do Bash (2.00.0) %n Uma quebra de linha permisso 'x' desativada
\w Working Dir Diretrio corrente, caminho completo ($PWD) t sTicky Usurios s apagam seus prprios arquivos
\W Working Dir Diretrio corrente, somente o ltimo (basename $PWD) Formatadores do comando printf permisso 'x' ativada
\! Histrico Nmero do comando corrente no histrico Formato Descrio T sTicky Usurios s apagam seus prprios arquivos
\# Nmero Nmero do comando corrente %d Nmero decimal permisso 'x' desativada
\$ ID Mostra "#" se for root, "$" se for usurio normal %o Nmero octal
\nnn Octal Caractere cujo octal nnn %x Nmero hexadecimal (a-f) Curingas para nomes de arquivo (glob)
\\ Backslash Barra invertida \ literal %X Nmero hexadecimal (A-F) Curinga Casa com... Exemplo
\[ Escapes Inicia uma seqncia de escapes (tipo cdigos de cores) %f Nmero com ponto flutuante * Qualquer coisa *.txt
\] Escapes Termina uma seqncia de escapes %e Nmero em notao cientfica (e+1) ? Um caractere qualquer arquivo-??.zip
%E Nmero em notao cientfica (E+1) [...] Qualquer um dos caracteres listados [Aa]rquivo.txt
Escapes do comando echo %s String [^...] Qualquer um caractere, exceto os listados [^A-Z]*.txt
Escape Lembrete Descrio {...} Qualquer um dos textos separados por vrgula arquivo.{txt,html}
\a Alerta Alerta (bipe)
\b Backspace Caractere Backspace Curingas para o comando case
\c EOS Termina a string Curinga Casa com... Exemplo
\e Escape Caractere Esc * Qualquer coisa *.txt) echo ;;
\f Form feed Alimentao ? Um caractere qualquer arquivo-??.zip) echo ;;
\n Newline Linha nova [...] Qualquer um dos caracteres listados [0-9]) echo ;;
\r Return Retorno de carro [^...] Qualquer um caractere, exceto os listados [^0-9]) echo ;;
\t Tab Tabulao horizontal ...|... Qualquer um dos textos separados por | txt|html) echo ;;
\v Vtab Tabulao vertical
\\ Backslash Barra invertida \ literal
\nnn Octal Caractere cujo octal nnn
\xnn Hexa Caractere cujo hexadecimal nn

Canivete Suo do Shell (bash) http://aurelio.net/shell/canivete/ Criado por Aurelio Marinho Jargas | www.aurelio.net | @oreio
Sinais para usar com trap/kill/killall if, for, select, while, until, case Metacaracteres das expresses regulares
# Linux Cygwin SystemV AIX HP-UX Solaris BSD/Mac if for / select while / until case Meta Nome Descrio
1 HUP HUP HUP HUP HUP HUP HUP if COMANDO for VAR in LISTA while COMANDO case $VAR in . Ponto Curinga de um caractere
2 INT INT INT INT INT INT INT then do do txt1) ... ;; [] Lista Casa qualquer um dos caracteres listados
3 QUIT QUIT QUIT QUIT QUIT QUIT QUIT ... ... ... txt2) ... ;; [^] Lista negada Casa qualquer caractere, exceto os listados
4 ILL ILL ILL ILL ILL ILL ILL elif COMANDO done done txtN) ... ;; ? Opcional A entidade anterior pode aparecer ou no (opcional)
5 TRAP TRAP TRAP TRAP TRAP TRAP TRAP then *) ... ;; * Asterisco A entidade anterior pode aparecer em qualquer quantidade
6 ABRT ABRT IOT LOST ABRT ABRT ABRT ... esac + Mais A entidade anterior deve aparecer no mnimo uma vez
7 BUS EMT EMT EMT EMT EMT EMT else ou: {,} Chaves A entidade anterior deve aparecer na quantidade indicada
8 FPE FPE FPE FPE FPE FPE FPE ... for ((exp1;exp2;exp3)) ^ Circunflexo Casa o comeo da linha
9 KILL KILL KILL KILL KILL KILL KILL fi $ Cifro Casa o fim da linha
10 USR1 BUS BUS BUS BUS BUS BUS \b Borda Limita uma palavra (letras, nmeros e sublinhado)
11 SEGV SEGV SEGV SEGV SEGV SEGV SEGV Cdigos de retorno de comandos \ Escape Escapa um meta, tirando seu poder
12 USR2 SYS SYS SYS SYS SYS SYS Cdigo Significado Exemplo | Ou Indica alternativas (usar com o grupo)
13 PIPE PIPE PIPE PIPE PIPE PIPE PIPE 0 Nenhum erro, execuo terminou OK echo () Grupo Agrupa partes da expresso, quantificvel e multinvel
14 ALRM ALRM ALRM ALRM ALRM ALRM ALRM 1 A maioria dos erros comuns na execuo echo $((1/0)) \1 Retrovisor Recupera o contedo do grupo 1
15 TERM TERM TERM TERM TERM TERM TERM 2 Erro de uso em algum 'builtin' do Shell - \2 Retrovisor Recupera o contedo do grupo 2 (segue at o \9)
16 - URG USR1 URG USR1 USR1 URG 126 Comando no executvel (sem permisso) touch a ; ./a .* Curinga Casa qualquer coisa, o tudo e o nada
17 CHLD STOP USR2 STOP USR2 USR2 STOP 127 Comando no encontrado ("command not found") echooo ?? Opcional NG Idem ao opcional comum, mas casa o mnimo possvel
18 CONT TSTP CHLD TSTP CHLD CHLD TSTP 128 O parmetro para o 'exit' no um decimal exit 1.0 *? Asterisco NG Idem ao asterisco comum, mas casa o mnimo possvel
19 STOP CONT PWR CONT PWR PWR CONT 128+n 128 + cdigo do sinal que o matou kill -9 $PPID #exit 137 +? Mais NG Idem ao mais comum, mas casa o mnimo possvel
20 TSTP CHLD WINCH CHLD VTALRM WINCH CHLD 130 O programa interrompido com o Ctrl+C (128 + 2) - {}? Chaves NG Idem s chaves comuns, mas casa o mnimo possvel
21 TTIN TTIN URG TTIN PROF URG TTIN 255 Parmetro para o 'exit' no est entre 0 e 255 exit -1
22 TTOU TTOU IO TTOU IO IO TTOU Metacaracteres nos aplicativos
23 URG IO STOP IO WINCH STOP IO Cdigos de cores (ANSI) Programa Opcional Mais Chaves Borda Ou Grupo
24 XCPU XCPU TSTP XCPU STOP TSTP XCPU Cor Letra Fundo Atributo Valor Exemplos: ESC [ <N>;<N> m awk ? + - - | ()
25 XFSZ XFSZ CONT XFSZ TSTP CONT XFSZ Preto 30 40 Reset 0 ESC[m texto normal (desliga cores) ed \? \+ \{,\} \b \| \(\)
26 VTALRM VTALRM TTIN - CONT TTIN VTALRM Vermelho 31 41 Negrito 1 ESC[1m negrito egrep ? + {,} \b | ()
27 PROF PROF TTOU MSG TTIN TTOU PROF Verde 32 42 Sublinhado 4 ESC[33;1m amarelo emacs ? + - \b \| \(\)
28 WINCH WINCH VTALRM WINCH TTOU VTALRM WINCH Amarelo 33 43 Piscando 5 ESC[44;37m fundo azul, letra cinza expect ? + - - | ()
29 IO LOST PROF PWR URG PROF INFO Azul 34 44 Reverso 7 ESC[31;5m vermelho piscando find ? + - \b \| \(\)
30 PWR USR1 XCPU USR1 LOST XCPU USR1 Rosa 35 45 Na linha de comando: gawk ? + {,} \<\> | ()
31 SYS USR2 XFSZ USR2 - XFSZ USR2 Ciano 36 46 echo -e '\e[33;1m amarelo \e[m' grep \? \+ \{,\} \b \| \(\)
32 - - - PROF - WAITING - Branco 37 47 echo -e '\033[33;1m amarelo \033[m' mawk ? + - - | ()
33 - - - DANGER - LWP - perl ? + {,} \b | ()
34 - - - VTALRM - FREEZE - php ? + {,} \b | ()
35 - - - MIGRATE - THAW - python ? + {,} \b | ()
36 - - - PRE - CANCEL - sed \? \+ \{,\} \<\> \| \(\)
37 - - - - - LOST - vim \= \+ \{,} \<\> \| \(\)
Como obter a listagem: trap -l, kill -l ou killall -l
Veja tambm: man 7 signal

Canivete Suo do Shell (bash) http://aurelio.net/shell/canivete/ Criado por Aurelio Marinho Jargas | www.aurelio.net | @oreio
Cdigos prontos (echo 50; sleep 2; echo 100) | dialog --gauge 'abc' 8 40 0 diff Compara arquivos -u, -Nr, -i, -w
Condicionais com o IF dialog --infobox 'abc' 0 0 echo Mostra texto -e, -n
if [ -f "$arquivo" ]; then echo 'Arquivo encontrado'; fi dialog --inputbox 'abc' 0 0 find Encontra arquivos -name, -iname, -type f, -exec, -or
if [ ! -d "$dir" ]; then echo 'Diretrio no encontrado'; fi dialog --passwordbox 'abc' 0 0 fmt Formata pargrafo -w, -u
if [ $i -gt 5 ]; then echo 'Maior que 5'; else echo 'Menor que 5'; fi dialog --menu 'abc' 0 0 0 item1 'desc1' item2 'desc2' grep Encontra texto -i, -v, -r, -qs, -n, -l, -w -x, -A -B -C
if [ $i -ge 5 -a $i -le 10 ]; then echo 'Entre 5 e 10, incluindo'; fi dialog --msgbox 'abc' 8 40 head Mostra Incio -n, -c
if [ $i -eq 5 ]; then echo '=5'; elif [ $i -gt 5 ]; then echo '>5'; else echo '<5'; fi dialog --radiolist 'abc' 0 0 0 item1 'desc1' on item2 'desc2' off od Mostra Caracteres -a, -c, -o, -x
if [ "$USER" = 'root' ]; then echo 'Oi root'; fi dialog --tailbox /tmp/arquivo.txt 0 0 paste Paraleliza arquivos -d, -s
if grep -qs 'root' /etc/passwd; then echo 'Usurio encontrado'; fi dialog --textbox /tmp/arquivo.txt 0 0 printf Mostra texto nenhuma
dialog --timebox 'abc' 0 0 23 59 00 rev Inverte texto nenhuma
Condicionais com o E (&&) e OU (||)
dialog --yesno 'abc' 0 0 sed Edita texto -n, -f, s/isso/aquilo/, p, d, q, N
[ -f "$arquivo" ] && echo 'Arquivo encontrado'
Dica1: dialog ... && echo 'Apertou OK/Yes' || echo 'Apertou Cancel/No' seq Conta Nmeros -s, -f
[ -d "$dir" ] || echo 'Diretrio no encontrado'
Dica2: resposta=$(dialog --stdout --TIPODACAIXA 'abc' ...) sort Ordena texto -n, -f, -r, -k -t, -o
grep -qs 'root' /etc/passwd && echo 'Usurio encontrado'
tac Inverte arquivo nenhuma
cd "$dir" && rm "$arquivo" && touch "$arquivo" && echo 'feito!' Atalhos da linha de comando (set -o emacs) tail Mostra Final -n, -c, -f
[ "$1" ] && param=$1 || param='valor padro'
Atalho Descrio Tecla Similar tee Arquiva fluxo -a
[ "$1" ] && param=${1:-valor padro}
Ctrl+A Move o cursor para o incio da linha Home tr Transforma texto -d, -s, A-Z a-z
[ "$1" ] || { echo "Uso: $0 parmetro" ; exit 1 ; }
Ctrl+B Move o cursor uma posio esquerda uniq Remove duplicatas -i, -d, -u
Adicionar 1 varivel $i wc Conta Letras -c, -w, -l, -L
Ctrl+C Envia sinal EOF() para o sistema
i=$(expr $i + 1) Ctrl+D Apaga um caractere direita Delete xargs Gerencia argumentos -n, -i
i=$((i+1)) Ctrl+E Move o cursor para o fim da linha End
let i=i+1 Ctrl+F Move o cursor uma posio direita Caracteres ASCII imprimveis (ISO-8859-1)
let i+=1 Ctrl+H Apaga um caractere esquerda Backspace 32 64 @ 96 ` 162 194 226
let i++ Ctrl+I Completa arquivos e comandos Tab 33 ! 65 A 97 a 163 195 227
Loop de 1 10 34 " 66 B 98 b 164 196 228
Ctrl+J Quebra a linha Enter 35 # 67 C 99 c 165 197 229
for i in 1 2 3 4 5 6 7 8 9 10; do echo $i; done Ctrl+K Recorta do cursor at o fim da linha 36 $ 68 D 100 d 166 198 230
for i in $(seq 10); do echo $i; done 37 % 69 E 101 e 167 199 231
Ctrl+L Limpa a tela (igual ao comando clear) 38 & 70 F 102 f 168 200 232
for ((i=1;i<=10;i++)); do echo $i; done Ctrl+N Prximo comando 39 ' 71 G 103 g 169 201 233
i=1 ; while [ $i -le 10 ]; do echo $i ; i=$((i+1)) ; done Ctrl+P Comando anterior 40 ( 72 H 104 h 170 202 234
41 ) 73 I 105 i 171 203 235
i=1 ; until [ $i -gt 10 ]; do echo $i ; i=$((i+1)) ; done Ctrl+Q Destrava a shell (veja Ctrl+S) 42 * 74 J 106 j 172 204 236
Loop nas linhas de um arquivo ou sada de comando Ctrl+R Procura no histrico de comandos 43 + 75 K 107 k 173 205 237
44 , 76 L 108 l 174 206 238
cat /etc/passwd | while read LINHA; do echo "$LINHA"; done Ctrl+S Trava a shell (veja Ctrl+Q) 45 - 77 M 109 m 175 207 239
grep 'root' /etc/passwd | while read LINHA; do echo "$LINHA"; done Ctrl+T Troca dois caracteres de lugar 46 . 78 N 110 n 176 208 240
47 / 79 O 111 o 177 209 241
while read LINHA; do echo "$LINHA"; done < /etc/passwd Ctrl+U Recorta a linha inteira 48 0 80 P 112 p 178 210 242
while read LINHA; do echo "$LINHA"; done < <(grep 'root' /etc/passwd) Ctrl+V Insere caractere literal 49 1 81 Q 113 q 179 211 243
50 2 82 R 114 r 180 212 244
Curingas nos itens do comando case Ctrl+W Recorta a palavra esquerda 51 3 83 S 115 s 181 213 245
Ctrl+X Move o cursor para o incio/fim da linha (2x) Home/End 52 4 84 T 116 t 182 214 246
case "$dir" in /home/*) echo 'dir dentro do /home';; esac 53 5 85 U 117 u 183 215 247
case "$user" in root|joao|maria) echo "Oi $user";; *) echo "No te conheo";; esac Ctrl+Y Cola o trecho recortado 54 6 86 V 118 v 184 216 248
55 7 87 W 119 w 185 217 249
case "$var" in ?) echo '1 letra';; ??) echo '2 letras';; ??*) echo 'mais de 2';; esac 56 8 88 X 120 x 186 218 250
case "$i" in [0-9]) echo '1 dgito';; [0-9][0-9]) echo '2 dgitos';; esac Caixa de ferramentas do shelleiro 57 9 89 Y 121 y 187 219 251
Comando Funo Opes teis 58 : 90 Z 122 z 188 220 252
Caixas do Dialog 59 ; 91 [ 123 { 189 221 253
dialog --calendar 'abc' 0 0 31 12 1999 cat Mostra arquivo -n, -s 60 < 92 \ 124 | 190 222 254
cut Extrai campo -d -f, -c 61 = 93 ] 125 } 191 223 255
dialog --checklist 'abc' 0 0 0 item1 'desc1' on item2 'desc2' off 62 > 94 ^ 126 ~ 192 224
dialog --fselect /tmp 0 0 date Mostra data -d, +'...' 63 ? 95 _ 161 193 225

Canivete Suo do Shell (bash) http://aurelio.net/shell/canivete/ Criado por Aurelio Marinho Jargas | www.aurelio.net | @oreio

Você também pode gostar