Escolar Documentos
Profissional Documentos
Cultura Documentos
Canivete Shell
Canivete Shell
Variveis especiais
Varivel Parmetros Posicionais Sintaxe Descrio
Blocos e agrupamentos
Exemplo
+ * / % ** = += -= *= /= %= ++ --
Adio Subtrao Multiplicao Diviso Mdulo Exponenciao 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
Igual Diferente Maior Maior ou Igual Menor Menor ou Igual Deslocamento esquerda Deslocamento direita E de bit (AND) OU de bit (OR) OU exclusivo de bit (XOR) Negao de bit NO de bit (NOT)
Operadores de Atribuio
Operadores de BIT
Parmetro nmero 0 (nome do comando ou funo) Parmetro nmero 1 (da linha de comando ou funo) Parmetro nmero N ... Parmetro nmero 9 (da linha de comando ou funo) Parmetro nmero 10 (da linha de comando ou funo) Parmetro nmero NN ... Nmero total de parmetros da linha de comando ou funo Todos os parmetros, como uma string nica Todos os parmetros, como vrias strings protegidas Nmero PID do processo atual (do prprio script) Nmero PID do ltimo job em segundo plano ltimo argumento do ltimo comando executado Cdigo de retorno do ltimo comando executado
Varivel Miscelnia
"..." '...' $'...' `...` {...} (...) $(...) ((...)) $((...)) [...] [[...]]
Protege uma string, mas reconhece $, \ e ` como especiais "abc" Protege uma string, nenhum caractere especial 'abc' Protege uma string, mas interpreta \n, \t, \a, etc $'abc\n' Executa comandos numa subshell, retornando o resultado `ls` Agrupa comandos em um bloco { ls ; } Executa comandos numa subshell ( ls ) Executa comandos numa subshell, retornando o resultado $( ls ) Testa uma operao aritmtica, retornando 0 ou 1 ((5 > 3)) Retorna o resultado de uma operao aritmtica $((5+3)) Testa uma expresso, retornando 0 ou 1 (alias do comando 'test') [ 5 -gt 3 ] Testa uma expresso, retornando 0 ou 1 (podendo usar && e ||) [[ 5 > 3 ]]
Operadores Lgicos
Expanso de variveis
Sintaxe Expanso Condicional
Se var no est definida, retorna 'texto' Se var no est definida, defina-a com 'texto' Se var no est definida, retorna o erro 'texto' Se var est definida, retorna 'texto', seno retorna o vazio
Expanso de Strings
Redirecionamento
Operador Ao
< > 2> >> 2>> | 2>&1 >&2 >&2>&3<>arq <<FIM <<-FIM <(cmd) >(cmd)
Redireciona a entrada padro (STDIN) Redireciona a sada padro (STDOUT) Redireciona a sada de erro (STDERR) Redireciona a sada padro, anexando Redireciona a sada de erro, anexando Conecta a sada padro com a entrada padro de outro comando Conecta a sada de erro na sada padro Conecta a sada padro na sada de erro Fecha a sada padro Fecha a sada de erro Conecta o descritor de arquivos 3 ao arquivo 'arq' Alimenta a entrada padro (Here Document) Alimenta a entrada padro, cortando TABs A sada do comando 'cmd' um arquivo: diff <(cmd1) <(cmd2) A entrada do comando 'cmd' um arquivo: tar cf >(bzip2 -c >file.tbz) $dir
${var} ${#var} ${!var} ${!texto*} ${var:N} ${var:N:tam} ${var#texto} ${var##texto} ${var%texto} ${var%%texto} ${var/texto/novo} ${var//texto/novo} ${var/#texto/novo} ${var/%texto/novo}
o mesmo que $var, porm no ambguo Retorna o tamanho da string Executa o contedo de $var (igual 'eval \$$var') Retorna os nomes de variveis comeadas por 'texto' Retorna o texto partir da posio 'N' Retorna 'tam' caracteres partir da posio 'N' Corta 'texto' do incio da string Corta 'texto' do incio da string (* guloso) Corta 'texto' do final da string Corta 'texto' do final da string (* guloso) Substitui 'texto' por 'novo', uma vez Substitui 'texto' por 'novo', sempre Se a string comear com 'texto', substitui 'texto' por 'novo' Se a string terminar com 'texto', substitui 'texto' por 'novo'
um dispositivo de bloco um dispositivo de caractere um diretrio O arquivo existe um arquivo normal O bit SGID est ativado O grupo do arquivo o do usurio atual O sticky-bit est ativado O arquivo um link simblico O dono do arquivo o usurio atual O arquivo um named pipe O arquivo tem permisso de leitura O tamanho do arquivo maior que zero O arquivo um socket O descritor de arquivos N um terminal O bit SUID est ativado O arquivo tem permisso de escrita O arquivo tem permisso de execuo O arquivo mais recente (NewerThan) O arquivo mais antigo (OlderThan) O arquivo o mesmo (EqualFile)
Comparao Numrica -lt menor que (LessThan) -gt maior que (GreaterThan) -le menor igual (LessEqual) -ge maior igual (GreaterEqual) -eq igual (EQual) -ne diferente (NotEqual) Comparao de Strings = igual != diferente -n no nula -z nula Operadores Lgicos ! NO lgico (NOT) -a E lgico (AND) -o OU lgico (OR)
Letras do comando ls -l
Tipos de Arquivo (primeiro caractere)
\a \d \e \h \H \j \l \n \r \s \t \T \@ \A \u \v \V \w \W \! \# \$ \nnn \\ \[ \]
Alerta Data Escape Hostname Hostname Jobs Tty Newline Return Shell Time Time At At Usurio Verso Verso Working Dir Working Dir Histrico Nmero ID Octal Backslash Escapes Escapes
Alerta (bipe) Data no formato "Dia-da-semana Ms Dia" (Sat Jan 15) Caractere Esc Nome da mquina sem o domnio (dhcp11) Nome completo da mquina (dhcp11.empresa) Nmero de jobs ativos Nome do terminal corrente (ttyp1) Linha nova Retorno de carro Nome do shell (basename $0) Horrio no formato 24 horas HH:MM:SS Horrio no formato 12 horas HH:MM:SS Horrio no formato 12 horas HH:MM am/pm Horrio no formato 24 horas HH:MM Login do usurio corrente Verso do Bash (2.00) Verso+subverso do Bash (2.00.0) Diretrio corrente, caminho completo ($PWD) Diretrio corrente, somente o ltimo (basename $PWD) Nmero do comando corrente no histrico Nmero do comando corrente Mostra "#" se for root, "$" se for usurio normal Caractere cujo octal nnn Barra invertida \ literal Inicia uma seqncia de escapes (tipo cdigos de cores) Termina uma seqncia de escapes
%a %A %b %B %c %y %Y %m %d %j %H %M %S %s %% %t %n
Nome do dia da semana abreviado (Dom..Sb) Nome do dia da semana (Domingo..Sbado) Nome do ms abreviado (Jan..Dez) Nome do ms (Janeiro..Dezembro) Data completa (Sat Nov 04 12:02:33 EST 1989) Ano (dois dgitos) Ano (quatro dgitos) Ms (01..12) Dia (01..31) Dia do ano (001..366) Horas (00..23) Minutos (00..59) Segundos (00..60) Segundos desde 1 de Janeiro de 1970 Um % literal Um TAB Uma quebra de linha
d l b c s p r w x X s S t T
Directory Link Block Char Socket Pipe Read Write eXecute eXecute Set ID Set ID sTicky sTicky
Arquivo normal Diretrio Link simblico Dispositivo de blocos (HD) Dispositivo de caracteres (modem serial) Socket mapeado em arquivo (comunicao de processos) FIFO ou Named Pipe (comunicao de processos)
Permisses do Arquivo (prximos nove caracteres)
Letra Lembrete
%d %o %x %X %f %e %E %s
Nmero decimal Nmero octal Nmero hexadecimal (a-f) Nmero hexadecimal (A-F) Nmero com ponto flutuante Nmero em notao cientfica (e+1) Nmero em notao cientfica (E+1) String
Permisso desativada Acesso de leitura Acesso de escrita Acesso de execuo (ou acesso ao diretrio) Acesso ao diretrio somente Usurio/grupo para execuo (SUID, SGID) permisso 'x' ativada Usurio/grupo para execuo (SUID, SGID) permisso 'x' desativada Usurios s apagam seus prprios arquivos permisso 'x' ativada Usurios s apagam seus prprios arquivos permisso 'x' desativada
\a \b \c \e \f \n \r \t \v \\ \nnn \xnn
Alerta Backspace EOS Escape Form feed Newline Return Tab Vtab Backslash Octal Hexa
Alerta (bipe) Caractere Backspace Termina a string Caractere Esc Alimentao Linha nova Retorno de carro Tabulao horizontal Tabulao vertical Barra invertida \ literal Caractere cujo octal nnn Caractere cujo hexadecimal nn
Qualquer coisa Um caractere qualquer Qualquer um dos caracteres listados Qualquer um caractere, exceto os listados Qualquer um dos textos separados por vrgula
Qualquer coisa Um caractere qualquer Qualquer um dos caracteres listados Qualquer um caractere, exceto os listados Qualquer um dos textos separados por |
*.txt) echo ;; arquivo-??.zip) echo ;; [0-9]) echo ;; [^0-9]) echo ;; txt|html) echo ;;
1 HUP HUP HUP HUP 2 INT INT INT INT 3 QUIT QUIT QUIT QUIT 4 ILL ILL ILL ILL 5 TRAP TRAP TRAP TRAP 6 ABRT ABRT IOT LOST 7 BUS EMT EMT EMT 8 FPE FPE FPE FPE 9 KILL KILL KILL KILL 10 USR1 BUS BUS BUS 11 SEGV SEGV SEGV SEGV 12 USR2 SYS SYS SYS 13 PIPE PIPE PIPE PIPE 14 ALRM ALRM ALRM ALRM 15 TERM TERM TERM TERM 16 URG USR1 URG 17 CHLD STOP USR2 STOP 18 CONT TSTP CHLD TSTP 19 STOP CONT PWR CONT 20 TSTP CHLD WINCH CHLD 21 TTIN TTIN URG TTIN 22 TTOU TTOU IO TTOU 23 URG IO STOP IO 24 XCPU XCPU TSTP XCPU 25 XFSZ XFSZ CONT XFSZ 26 VTALRM VTALRM TTIN 27 PROF PROF TTOU MSG 28 WINCH WINCH VTALRM WINCH 29 IO LOST PROF PWR 30 PWR USR1 XCPU USR1 31 SYS USR2 XFSZ USR2 32 PROF 33 DANGER 34 VTALRM 35 MIGRATE 36 PRE 37 Como obter a listagem: trap -l, kill -l ou killall -l Veja tambm: man 7 signal
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1 USR2 CHLD PWR VTALRM PROF IO WINCH STOP TSTP CONT TTIN TTOU URG LOST -
HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1 USR2 CHLD PWR WINCH URG IO STOP TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ WAITING LWP FREEZE THAW CANCEL LOST
HUP if COMANDO for VAR in LISTA while COMANDO case $VAR in . Ponto Curinga de um caractere INT then do do txt1) ... ;; [] Lista Casa qualquer um dos caracteres listados QUIT ... ... ... txt2) ... ;; [^] Lista negada Casa qualquer caractere, exceto os listados ILL elif COMANDO done done txtN) ... ;; ? Opcional A entidade anterior pode aparecer ou no (opcional) TRAP then *) ... ;; * Asterisco A entidade anterior pode aparecer em qualquer quantidade ABRT ... esac + Mais A entidade anterior deve aparecer no mnimo uma vez EMT else ou: {,} Chaves A entidade anterior deve aparecer na quantidade indicada FPE ... for ((exp1;exp2;exp3)) ^ Circunflexo Casa o comeo da linha KILL fi $ Cifro Casa o fim da linha BUS \b Borda Limita uma palavra (letras, nmeros e sublinhado) Cdigos de retorno de comandos SEGV \ Escape Escapa um meta, tirando seu poder SYS | Ou Indica alternativas (usar com o grupo) Cdigo Significado Exemplo PIPE () Grupo Agrupa partes da expresso, quantificvel e multinvel 0 Nenhum erro, execuo terminou OK echo ALRM \1 Retrovisor Recupera o contedo do grupo 1 1 A maioria dos erros comuns na execuo echo $((1/0)) TERM \2 Retrovisor Recupera o contedo do grupo 2 (segue at o \9) 2 Erro de uso em algum 'builtin' do Shell URG .* Curinga Casa qualquer coisa, o tudo e o nada 126 Comando no executvel (sem permisso) touch a ; ./a STOP ?? Opcional NG Idem ao opcional comum, mas casa o mnimo possvel 127 Comando no encontrado ("command not found") echooo TSTP *? Asterisco NG Idem ao asterisco comum, mas casa o mnimo possvel 128 O parmetro para o 'exit' no um decimal exit 1.0 CONT +? Mais NG Idem ao mais comum, mas casa o mnimo possvel 128+n 128 + cdigo do sinal que o matou kill -9 $PPID #exit 137 CHLD {}? Chaves NG Idem s chaves comuns, mas casa o mnimo possvel 130 O programa interrompido com o Ctrl+C (128 + 2) TTIN 255 Parmetro para o 'exit' no est entre 0 e 255 exit -1 Metacaracteres nos aplicativos TTOU IO Programa Opcional Mais Chaves Borda Ou Grupo Cdigos de cores (ANSI) XCPU awk ? + | () Cor Letra Fundo Atributo Valor Exemplos: ESC [ <N>;<N> m XFSZ ed \? \+ \{,\} \b \| \(\) Preto 30 40 Reset 0 ESC[m texto normal (desliga cores) VTALRM Vermelho 31 egrep ? + {,} \b | () 41 Negrito 1 ESC[1m negrito PROF emacs ? + \b \| \(\) Verde 32 42 Sublinhado 4 ESC[33;1m amarelo WINCH expect ? + | () Amarelo 33 43 Piscando 5 ESC[44;37m fundo azul, letra cinza INFO find ? + \b \| \(\) Azul 34 44 Reverso 7 ESC[31;5m vermelho piscando USR1 gawk ? + {,} \<\> | () Rosa 35 45 Na linha de comando: USR2 grep \? \+ \{,\} \b \| \(\) Ciano 36 46 echo -e '\e[33;1m amarelo \e[m' mawk ? + | () Branco 37 47 echo -e '\033[33;1m amarelo \033[m' perl ? + {,} \b | () php ? + {,} \b | () python ? + {,} \b | () sed \? \+ \{,\} \<\> \| \(\) vim \= \+ \{,} \<\> \| \(\)
Cdigos prontos
Condicionais com o IF
if [ -f "$arquivo" ]; then echo 'Arquivo encontrado'; fi if [ ! -d "$dir" ]; then echo 'Diretrio no encontrado'; fi if [ $i -gt 5 ]; then echo 'Maior que 5'; else echo 'Menor que 5'; fi if [ $i -ge 5 -a $i -le 10 ]; then echo 'Entre 5 e 10, incluindo'; fi if [ $i -eq 5 ]; then echo '=5'; elif [ $i -gt 5 ]; then echo '>5'; else echo '<5'; fi 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
(echo 50; sleep 2; echo 100) | dialog --gauge 'abc' 8 40 0 dialog --infobox 'abc' 0 0 dialog --inputbox 'abc' 0 0 dialog --passwordbox 'abc' 0 0 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 'Apertou Cancel/No' Dica2: resposta=$(dialog --stdout --TIPODACAIXA 'abc' ...)
for i in 1 2 3 4 5 6 7 8 9 10; do echo $i; done for i in $(seq 10); do echo $i; done for ((i=1;i<=10;i++)); do echo $i; done i=1 ; while [ $i -le 10 ]; do echo $i ; i=$((i+1)) ; done i=1 ; until [ $i -gt 10 ]; do echo $i ; i=$((i+1)) ; done
Loop nas linhas de um arquivo ou sada de comando
cat /etc/passwd | while read LINHA; do echo "$LINHA"; done grep 'root' /etc/passwd | while read LINHA; do echo "$LINHA"; done while read LINHA; do echo "$LINHA"; done < /etc/passwd while read LINHA; do echo "$LINHA"; done < <(grep 'root' /etc/passwd)
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
Ctrl+A Ctrl+B Ctrl+C Ctrl+D Ctrl+E Ctrl+F Ctrl+H Ctrl+I Ctrl+J Ctrl+K Ctrl+L Ctrl+N Ctrl+P Ctrl+Q Ctrl+R Ctrl+S Ctrl+T Ctrl+U Ctrl+V Ctrl+W Ctrl+X Ctrl+Y
Move o cursor para o incio da linha Move o cursor uma posio esquerda Envia sinal EOF() para o sistema Apaga um caractere direita Move o cursor para o fim da linha Move o cursor uma posio direita Apaga um caractere esquerda Completa arquivos e comandos Quebra a linha Recorta do cursor at o fim da linha Limpa a tela (igual ao comando clear) Prximo comando Comando anterior Destrava a shell (veja Ctrl+S) Procura no histrico de comandos Trava a shell (veja Ctrl+Q) Troca dois caracteres de lugar Recorta a linha inteira Insere caractere literal Recorta a palavra esquerda Move o cursor para o incio/fim da linha (2x) Cola o trecho recortado
echo find fmt grep head od paste printf rev sed seq sort tac tail tee tr uniq wc xargs
Mostra texto Encontra arquivos Formata pargrafo Encontra texto Mostra Incio Mostra Caracteres Paraleliza arquivos Mostra texto Inverte texto Edita texto Conta Nmeros Ordena texto Inverte arquivo Mostra Final Arquiva fluxo Transforma texto Remove duplicatas Conta Letras Gerencia argumentos
-e, -n -name, -iname, -type f, -exec, -or -w, -u -i, -v, -r, -qs, -n, -l, -w -x, -A -B -C -n, -c -a, -c, -o, -x -d, -s nenhuma nenhuma -n, -f, s/isso/aquilo/, p, d, q, N -s, -f -n, -f, -r, -k -t, -o nenhuma -n, -c, -f -a -d, -s, A-Z a-z -i, -d, -u -c, -w, -l, -L -n, -i
Home/End
dialog --calendar 'abc' 0 0 31 12 1999 dialog --checklist 'abc' 0 0 0 item1 'desc1' on item2 'desc2' off dialog --fselect /tmp 0 0