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
IntroduçãoSintaxe
AplicaçõesGUIWeb
Outline
1 Introdução
2 Sintaxe
3 Aplicações
4 GUI
5 Web
Fábio Chicout Bash para Desenvolvedores
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
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
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
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
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
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
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
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
IntroduçãoSintaxe
AplicaçõesGUIWeb
Características
Fracamente tipada
Fábio Chicout Bash para Desenvolvedores
IntroduçãoSintaxe
AplicaçõesGUIWeb
Características
Estimula a preguiça sadia!
Fábio Chicout Bash para Desenvolvedores
IntroduçãoSintaxe
AplicaçõesGUIWeb
Características
Integradora de tecnologias!
Fábio Chicout Bash para Desenvolvedores
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
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
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
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
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
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
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
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
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
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
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
IntroduçãoSintaxe
AplicaçõesGUIWeb
Redirect
Figura: Código Java para criar arquivo Texto.
Fábio Chicout Bash para Desenvolvedores
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
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
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
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
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
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
IntroduçãoSintaxe
AplicaçõesGUIWeb
grep
Ferramenta para pesquisa em arquivos texto;
Usa expressões regulares;
Variantes: zgrep, pgrep;
Fábio Chicout Bash para Desenvolvedores
IntroduçãoSintaxe
AplicaçõesGUIWeb
grep
Ferramenta para pesquisa em arquivos texto;
Usa expressões regulares;
Variantes: zgrep, pgrep;
Fábio Chicout Bash para Desenvolvedores
IntroduçãoSintaxe
AplicaçõesGUIWeb
grep
Ferramenta para pesquisa em arquivos texto;
Usa expressões regulares;
Variantes: zgrep, pgrep;
Fábio Chicout Bash para Desenvolvedores
IntroduçãoSintaxe
AplicaçõesGUIWeb
grep
Ferramenta para pesquisa em arquivos texto;
Usa expressões regulares;
Variantes: zgrep, pgrep;
Fábio Chicout Bash para Desenvolvedores
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
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
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
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
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
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
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
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
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
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
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
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
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
IntroduçãoSintaxe
AplicaçõesGUIWeb
DEMO
Fábio Chicout Bash para Desenvolvedores
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
IntroduçãoSintaxe
AplicaçõesGUIWeb
Segurança do CGI
Shell Injection!
Solução: UrlDecoder
Fábio Chicout Bash para Desenvolvedores