65

Click here to load reader

Bash for Developers

Embed Size (px)

Citation preview

Page 1: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Bash para DesenvolvedoresAbrindo possibilidades com as habilidades de desenvolvimento

Fábio Chicout1

1Coordenação de Análise e Desenvolvimento de SistemasUnibratec

15/09/2011 / II Jornada Acadêmica 2011.2

Fábio Chicout Bash para Desenvolvedores

Page 2: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Outline

1 Introdução

2 Sintaxe

3 Aplicações

4 GUI

5 Web

Fábio Chicout Bash para Desenvolvedores

Page 3: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Histórico

1a Versão: Stephen L. Bourne (AT&T, 1974);

Influenciou outros Shells (csh, tcsh);

Influenciou a necessidade do padrão POSIX (1003.2);

FSS abraça o projeto e Brian Fox lança o Bourne Again SHell(bash);

Versão atual 4.2.10.

Fábio Chicout Bash para Desenvolvedores

Page 4: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Histórico

1a Versão: Stephen L. Bourne (AT&T, 1974);

Influenciou outros Shells (csh, tcsh);

Influenciou a necessidade do padrão POSIX (1003.2);

FSS abraça o projeto e Brian Fox lança o Bourne Again SHell(bash);

Versão atual 4.2.10.

Fábio Chicout Bash para Desenvolvedores

Page 5: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Histórico

1a Versão: Stephen L. Bourne (AT&T, 1974);

Influenciou outros Shells (csh, tcsh);

Influenciou a necessidade do padrão POSIX (1003.2);

FSS abraça o projeto e Brian Fox lança o Bourne Again SHell(bash);

Versão atual 4.2.10.

Fábio Chicout Bash para Desenvolvedores

Page 6: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Histórico

1a Versão: Stephen L. Bourne (AT&T, 1974);

Influenciou outros Shells (csh, tcsh);

Influenciou a necessidade do padrão POSIX (1003.2);

FSS abraça o projeto e Brian Fox lança o Bourne Again SHell(bash);

Versão atual 4.2.10.

Fábio Chicout Bash para Desenvolvedores

Page 7: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Histórico

1a Versão: Stephen L. Bourne (AT&T, 1974);

Influenciou outros Shells (csh, tcsh);

Influenciou a necessidade do padrão POSIX (1003.2);

FSS abraça o projeto e Brian Fox lança o Bourne Again SHell(bash);

Versão atual 4.2.10.

Fábio Chicout Bash para Desenvolvedores

Page 8: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Instalação

LinuxGeralmente nada a ser feito. Vem por padrão;

MacGeralmente nada a ser feito. Vem por padrão;

WindowsNão é o padrão. Pode ser instalado via Cygwin ou Mingw, comlimitações de expressividade e compatibilidade.

Fábio Chicout Bash para Desenvolvedores

Page 9: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Instalação

LinuxGeralmente nada a ser feito. Vem por padrão;

MacGeralmente nada a ser feito. Vem por padrão;

WindowsNão é o padrão. Pode ser instalado via Cygwin ou Mingw, comlimitações de expressividade e compatibilidade.

Fábio Chicout Bash para Desenvolvedores

Page 10: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Instalação

LinuxGeralmente nada a ser feito. Vem por padrão;

MacGeralmente nada a ser feito. Vem por padrão;

WindowsNão é o padrão. Pode ser instalado via Cygwin ou Mingw, comlimitações de expressividade e compatibilidade.

Fábio Chicout Bash para Desenvolvedores

Page 11: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Características

Fracamente tipada

Fábio Chicout Bash para Desenvolvedores

Page 12: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Características

Estimula a preguiça sadia!

Fábio Chicout Bash para Desenvolvedores

Page 13: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Características

Integradora de tecnologias!

Fábio Chicout Bash para Desenvolvedores

Page 14: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

IDE

Dispensável. . .

Programas pequenos, pontuais;

Forte modularização;

Voltado principalmente para administração do sistema;

Flexibilidade e reuso extremos!

Poucas regras que criam muitas possibilidades;

VIm, emacs, notepad,. . . são mais que suficientes.

Fábio Chicout Bash para Desenvolvedores

Page 15: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

IDE

Dispensável. . .

Programas pequenos, pontuais;

Forte modularização;

Voltado principalmente para administração do sistema;

Flexibilidade e reuso extremos!

Poucas regras que criam muitas possibilidades;

VIm, emacs, notepad,. . . são mais que suficientes.

Fábio Chicout Bash para Desenvolvedores

Page 16: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

IDE

Dispensável. . .

Programas pequenos, pontuais;

Forte modularização;

Voltado principalmente para administração do sistema;

Flexibilidade e reuso extremos!

Poucas regras que criam muitas possibilidades;

VIm, emacs, notepad,. . . são mais que suficientes.

Fábio Chicout Bash para Desenvolvedores

Page 17: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

IDE

Dispensável. . .

Programas pequenos, pontuais;

Forte modularização;

Voltado principalmente para administração do sistema;

Flexibilidade e reuso extremos!

Poucas regras que criam muitas possibilidades;

VIm, emacs, notepad,. . . são mais que suficientes.

Fábio Chicout Bash para Desenvolvedores

Page 18: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

IDE

Dispensável. . .

Programas pequenos, pontuais;

Forte modularização;

Voltado principalmente para administração do sistema;

Flexibilidade e reuso extremos!

Poucas regras que criam muitas possibilidades;

VIm, emacs, notepad,. . . são mais que suficientes.

Fábio Chicout Bash para Desenvolvedores

Page 19: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

IDE

Dispensável. . .

Programas pequenos, pontuais;

Forte modularização;

Voltado principalmente para administração do sistema;

Flexibilidade e reuso extremos!

Poucas regras que criam muitas possibilidades;

VIm, emacs, notepad,. . . são mais que suficientes.

Fábio Chicout Bash para Desenvolvedores

Page 20: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

IDE

Dispensável. . .

Programas pequenos, pontuais;

Forte modularização;

Voltado principalmente para administração do sistema;

Flexibilidade e reuso extremos!

Poucas regras que criam muitas possibilidades;

VIm, emacs, notepad,. . . são mais que suficientes.

Fábio Chicout Bash para Desenvolvedores

Page 21: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Variáveis

nome=valor

São acessadas com um $ antes do nome;

Ficam guardadas globalmente, ou no tempo de execução d’umscript;

Obs.: Scripts são comandos customizados. Só recebem até 10parâmetros.

Fábio Chicout Bash para Desenvolvedores

Page 22: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Variáveis

nome=valor

São acessadas com um $ antes do nome;

Ficam guardadas globalmente, ou no tempo de execução d’umscript;

Obs.: Scripts são comandos customizados. Só recebem até 10parâmetros.

Fábio Chicout Bash para Desenvolvedores

Page 23: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Variáveis

nome=valor

São acessadas com um $ antes do nome;

Ficam guardadas globalmente, ou no tempo de execução d’umscript;

Obs.: Scripts são comandos customizados. Só recebem até 10parâmetros.

Fábio Chicout Bash para Desenvolvedores

Page 24: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Variáveis

nome=valor

São acessadas com um $ antes do nome;

Ficam guardadas globalmente, ou no tempo de execução d’umscript;

Obs.: Scripts são comandos customizados. Só recebem até 10parâmetros.

Fábio Chicout Bash para Desenvolvedores

Page 25: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Redirect

Figura: Código Java para criar arquivo Texto.

Fábio Chicout Bash para Desenvolvedores

Page 26: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Redirect

Leva conteúdo da saída de um comando para outra área

Arquivos, Tela, Saída de Erros, Logs,. . .

echo “Texto que será escrito” > Arquivo.txt

Fábio Chicout Bash para Desenvolvedores

Page 27: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Redirect

Leva conteúdo da saída de um comando para outra área

Arquivos, Tela, Saída de Erros, Logs,. . .

echo “Texto que será escrito” > Arquivo.txt

Fábio Chicout Bash para Desenvolvedores

Page 28: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Redirect

Leva conteúdo da saída de um comando para outra área

Arquivos, Tela, Saída de Erros, Logs,. . .

echo “Texto que será escrito” > Arquivo.txt

Fábio Chicout Bash para Desenvolvedores

Page 29: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Pipes

“Encanamento!”

Leva a saída de um comando como a entrada de outro comando!

Fábio Chicout Bash para Desenvolvedores

Page 30: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Pipes

“Encanamento!”

Leva a saída de um comando como a entrada de outro comando!

Fábio Chicout Bash para Desenvolvedores

Page 31: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Pipes

“Encanamento!”

Leva a saída de um comando como a entrada de outro comando!

Fábio Chicout Bash para Desenvolvedores

Page 32: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

grep

Ferramenta para pesquisa em arquivos texto;

Usa expressões regulares;

Variantes: zgrep, pgrep;

Fábio Chicout Bash para Desenvolvedores

Page 33: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

grep

Ferramenta para pesquisa em arquivos texto;

Usa expressões regulares;

Variantes: zgrep, pgrep;

Fábio Chicout Bash para Desenvolvedores

Page 34: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

grep

Ferramenta para pesquisa em arquivos texto;

Usa expressões regulares;

Variantes: zgrep, pgrep;

Fábio Chicout Bash para Desenvolvedores

Page 35: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

grep

Ferramenta para pesquisa em arquivos texto;

Usa expressões regulares;

Variantes: zgrep, pgrep;

Fábio Chicout Bash para Desenvolvedores

Page 36: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

awk

Ferramenta para buscar padrões e executar processamento;

Possui uma linguagem própria;

Útil para buscar dados de arquivos tabulares;

Pode carregar scripts próprios em arquivos externos ou embutirna sua chamada.

Fábio Chicout Bash para Desenvolvedores

Page 37: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

awk

Ferramenta para buscar padrões e executar processamento;

Possui uma linguagem própria;

Útil para buscar dados de arquivos tabulares;

Pode carregar scripts próprios em arquivos externos ou embutirna sua chamada.

Fábio Chicout Bash para Desenvolvedores

Page 38: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

awk

Ferramenta para buscar padrões e executar processamento;

Possui uma linguagem própria;

Útil para buscar dados de arquivos tabulares;

Pode carregar scripts próprios em arquivos externos ou embutirna sua chamada.

Fábio Chicout Bash para Desenvolvedores

Page 39: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

awk

Ferramenta para buscar padrões e executar processamento;

Possui uma linguagem própria;

Útil para buscar dados de arquivos tabulares;

Pode carregar scripts próprios em arquivos externos ou embutirna sua chamada.

Fábio Chicout Bash para Desenvolvedores

Page 40: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

sed

Ferramenta para editar texto pela linha de comando;

Comandos baseados em partes;

Imperativa;

Adicionar texto, remover texto, alterar texto;

Efetivando no arquivo ou ’whatif mode’;

Fábio Chicout Bash para Desenvolvedores

Page 41: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

sed

Ferramenta para editar texto pela linha de comando;

Comandos baseados em partes;

Imperativa;

Adicionar texto, remover texto, alterar texto;

Efetivando no arquivo ou ’whatif mode’;

Fábio Chicout Bash para Desenvolvedores

Page 42: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

sed

Ferramenta para editar texto pela linha de comando;

Comandos baseados em partes;

Imperativa;

Adicionar texto, remover texto, alterar texto;

Efetivando no arquivo ou ’whatif mode’;

Fábio Chicout Bash para Desenvolvedores

Page 43: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

sed

Ferramenta para editar texto pela linha de comando;

Comandos baseados em partes;

Imperativa;

Adicionar texto, remover texto, alterar texto;

Efetivando no arquivo ou ’whatif mode’;

Fábio Chicout Bash para Desenvolvedores

Page 44: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

sed

Ferramenta para editar texto pela linha de comando;

Comandos baseados em partes;

Imperativa;

Adicionar texto, remover texto, alterar texto;

Efetivando no arquivo ou ’whatif mode’;

Fábio Chicout Bash para Desenvolvedores

Page 45: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

dialog

Construção de Interface gráfica em modo texto;

Comandos simples que criam interfaces de comunicação comoutros;

Resultados enviados para a saída de erro do bash;

calendário, checklist, seleção de diretórios, textbox, seleção dearquivos, barras de progresso, caixas de mensagens, edição dearquivos, menus, campos de senha, radio buttons, e outroscomponentes úteis.

Fábio Chicout Bash para Desenvolvedores

Page 46: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

dialog

Construção de Interface gráfica em modo texto;

Comandos simples que criam interfaces de comunicação comoutros;

Resultados enviados para a saída de erro do bash;

calendário, checklist, seleção de diretórios, textbox, seleção dearquivos, barras de progresso, caixas de mensagens, edição dearquivos, menus, campos de senha, radio buttons, e outroscomponentes úteis.

Fábio Chicout Bash para Desenvolvedores

Page 47: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

dialog

Construção de Interface gráfica em modo texto;

Comandos simples que criam interfaces de comunicação comoutros;

Resultados enviados para a saída de erro do bash;

calendário, checklist, seleção de diretórios, textbox, seleção dearquivos, barras de progresso, caixas de mensagens, edição dearquivos, menus, campos de senha, radio buttons, e outroscomponentes úteis.

Fábio Chicout Bash para Desenvolvedores

Page 48: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

dialog

Construção de Interface gráfica em modo texto;

Comandos simples que criam interfaces de comunicação comoutros;

Resultados enviados para a saída de erro do bash;

calendário, checklist, seleção de diretórios, textbox, seleção dearquivos, barras de progresso, caixas de mensagens, edição dearquivos, menus, campos de senha, radio buttons, e outroscomponentes úteis.

Fábio Chicout Bash para Desenvolvedores

Page 49: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

DEMO

Fábio Chicout Bash para Desenvolvedores

Page 50: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

zenity

Construção de Interface gráfica sobre um servidor X;

Comandos simples que se interfaces de comunicação comoutros;

calendário, textbox, mensagem de erro, mensagem informativa,seleção de arquivos, listas, notificações, barras de progresso,caixa de pergunta, caixa de aviso (warning), caixa de seleção decor, campo de senha.

Menos abrangente que o dialog;

Precisa de interface gráfica executando.

Fábio Chicout Bash para Desenvolvedores

Page 51: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

zenity

Construção de Interface gráfica sobre um servidor X;

Comandos simples que se interfaces de comunicação comoutros;

calendário, textbox, mensagem de erro, mensagem informativa,seleção de arquivos, listas, notificações, barras de progresso,caixa de pergunta, caixa de aviso (warning), caixa de seleção decor, campo de senha.

Menos abrangente que o dialog;

Precisa de interface gráfica executando.

Fábio Chicout Bash para Desenvolvedores

Page 52: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

zenity

Construção de Interface gráfica sobre um servidor X;

Comandos simples que se interfaces de comunicação comoutros;

calendário, textbox, mensagem de erro, mensagem informativa,seleção de arquivos, listas, notificações, barras de progresso,caixa de pergunta, caixa de aviso (warning), caixa de seleção decor, campo de senha.

Menos abrangente que o dialog;

Precisa de interface gráfica executando.

Fábio Chicout Bash para Desenvolvedores

Page 53: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

zenity

Construção de Interface gráfica sobre um servidor X;

Comandos simples que se interfaces de comunicação comoutros;

calendário, textbox, mensagem de erro, mensagem informativa,seleção de arquivos, listas, notificações, barras de progresso,caixa de pergunta, caixa de aviso (warning), caixa de seleção decor, campo de senha.

Menos abrangente que o dialog;

Precisa de interface gráfica executando.

Fábio Chicout Bash para Desenvolvedores

Page 54: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

zenity

Construção de Interface gráfica sobre um servidor X;

Comandos simples que se interfaces de comunicação comoutros;

calendário, textbox, mensagem de erro, mensagem informativa,seleção de arquivos, listas, notificações, barras de progresso,caixa de pergunta, caixa de aviso (warning), caixa de seleção decor, campo de senha.

Menos abrangente que o dialog;

Precisa de interface gráfica executando.

Fábio Chicout Bash para Desenvolvedores

Page 55: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

CGI

Common Gateway Interface;

Historicamente, a primeira abstração para aplicações web;

Suportado por qualquer servidor Web;

Arquivos com código fazendo dump de texto plano. Naturalmente’spaghetti code’;

Fábio Chicout Bash para Desenvolvedores

Page 56: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

CGI

Common Gateway Interface;

Historicamente, a primeira abstração para aplicações web;

Suportado por qualquer servidor Web;

Arquivos com código fazendo dump de texto plano. Naturalmente’spaghetti code’;

Fábio Chicout Bash para Desenvolvedores

Page 57: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

CGI

Common Gateway Interface;

Historicamente, a primeira abstração para aplicações web;

Suportado por qualquer servidor Web;

Arquivos com código fazendo dump de texto plano. Naturalmente’spaghetti code’;

Fábio Chicout Bash para Desenvolvedores

Page 58: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

CGI

Common Gateway Interface;

Historicamente, a primeira abstração para aplicações web;

Suportado por qualquer servidor Web;

Arquivos com código fazendo dump de texto plano. Naturalmente’spaghetti code’;

Fábio Chicout Bash para Desenvolvedores

Page 59: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

CGI - Instalando

LoadModule cgi_module modules/mod_cgi.so

ScriptAlias /cgi-bin/ “/var/www/cgi-bin”

Fábio Chicout Bash para Desenvolvedores

Page 60: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

CGI - Instalando

LoadModule cgi_module modules/mod_cgi.so

ScriptAlias /cgi-bin/ “/var/www/cgi-bin”

Fábio Chicout Bash para Desenvolvedores

Page 61: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

CGI - Instalando

LoadModule cgi_module modules/mod_cgi.so

ScriptAlias /cgi-bin/ “/var/www/cgi-bin”

Fábio Chicout Bash para Desenvolvedores

Page 62: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

CGI - Programando

Primeiras linhas:“shebang”echo -e “Content-Type: text/html”

Processamento de Formulários: read

Fábio Chicout Bash para Desenvolvedores

Page 63: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

CGI - Programando

Primeiras linhas:“shebang”echo -e “Content-Type: text/html”

Processamento de Formulários: read

Fábio Chicout Bash para Desenvolvedores

Page 64: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

CGI - Programando

Primeiras linhas:“shebang”echo -e “Content-Type: text/html”

Processamento de Formulários: read

Fábio Chicout Bash para Desenvolvedores

Page 65: Bash for Developers

IntroduçãoSintaxe

AplicaçõesGUIWeb

Segurança do CGI

Shell Injection!

Solução: UrlDecoder

Fábio Chicout Bash para Desenvolvedores