Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Bash for Developers

Bash for Developers

Some ways to open mind on bash. Speech focused to developers, and presented on Jornada Acadêmica 2011.2 at Unibratec, Recife-PE, Brazil

Fábio Chicout

September 15, 2011
Tweet

Other Decks in Programming

Transcript

  1. Introdução Sintaxe Aplicações GUI Web Bash para Desenvolvedores Abrindo possibilidades

    com as habilidades de desenvolvimento Fábio Chicout1 1Coordenação de Análise e Desenvolvimento de Sistemas Unibratec 15/09/2011 / II Jornada Acadêmica 2011.2 Fábio Chicout Bash para Desenvolvedores
  2. Introdução Sintaxe Aplicações GUI Web Outline 1 Introdução 2 Sintaxe

    3 Aplicações 4 GUI 5 Web Fábio Chicout Bash para Desenvolvedores
  3. Introdução Sintaxe Aplicações GUI Web 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
  4. Introdução Sintaxe Aplicações GUI Web 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
  5. Introdução Sintaxe Aplicações GUI Web 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
  6. Introdução Sintaxe Aplicações GUI Web 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
  7. Introdução Sintaxe Aplicações GUI Web 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
  8. Introdução Sintaxe Aplicações GUI Web Instalação Linux Geralmente nada a

    ser feito. Vem por padrão; Mac Geralmente nada a ser feito. Vem por padrão; Windows Não é o padrão. Pode ser instalado via Cygwin ou Mingw, com limitações de expressividade e compatibilidade. Fábio Chicout Bash para Desenvolvedores
  9. Introdução Sintaxe Aplicações GUI Web Instalação Linux Geralmente nada a

    ser feito. Vem por padrão; Mac Geralmente nada a ser feito. Vem por padrão; Windows Não é o padrão. Pode ser instalado via Cygwin ou Mingw, com limitações de expressividade e compatibilidade. Fábio Chicout Bash para Desenvolvedores
  10. Introdução Sintaxe Aplicações GUI Web Instalação Linux Geralmente nada a

    ser feito. Vem por padrão; Mac Geralmente nada a ser feito. Vem por padrão; Windows Não é o padrão. Pode ser instalado via Cygwin ou Mingw, com limitações de expressividade e compatibilidade. Fábio Chicout Bash para Desenvolvedores
  11. Introdução Sintaxe Aplicações GUI Web 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
  12. Introdução Sintaxe Aplicações GUI Web 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
  13. Introdução Sintaxe Aplicações GUI Web 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
  14. Introdução Sintaxe Aplicações GUI Web 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
  15. Introdução Sintaxe Aplicações GUI Web 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
  16. Introdução Sintaxe Aplicações GUI Web 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
  17. Introdução Sintaxe Aplicações GUI Web 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
  18. Introdução Sintaxe Aplicações GUI Web Variáveis nome=valor São acessadas com

    um $ antes do nome; Ficam guardadas globalmente, ou no tempo de execução d’um script; Obs.: Scripts são comandos customizados. Só recebem até 10 parâmetros. Fábio Chicout Bash para Desenvolvedores
  19. Introdução Sintaxe Aplicações GUI Web Variáveis nome=valor São acessadas com

    um $ antes do nome; Ficam guardadas globalmente, ou no tempo de execução d’um script; Obs.: Scripts são comandos customizados. Só recebem até 10 parâmetros. Fábio Chicout Bash para Desenvolvedores
  20. Introdução Sintaxe Aplicações GUI Web Variáveis nome=valor São acessadas com

    um $ antes do nome; Ficam guardadas globalmente, ou no tempo de execução d’um script; Obs.: Scripts são comandos customizados. Só recebem até 10 parâmetros. Fábio Chicout Bash para Desenvolvedores
  21. Introdução Sintaxe Aplicações GUI Web Variáveis nome=valor São acessadas com

    um $ antes do nome; Ficam guardadas globalmente, ou no tempo de execução d’um script; Obs.: Scripts são comandos customizados. Só recebem até 10 parâmetros. Fábio Chicout Bash para Desenvolvedores
  22. Introdução Sintaxe Aplicações GUI Web Redirect Figura: Código Java para

    criar arquivo Texto. Fábio Chicout Bash para Desenvolvedores
  23. Introdução Sintaxe Aplicações GUI Web 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
  24. Introdução Sintaxe Aplicações GUI Web 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
  25. Introdução Sintaxe Aplicações GUI Web 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
  26. Introdução Sintaxe Aplicações GUI Web Pipes “Encanamento!” Leva a saída

    de um comando como a entrada de outro comando! Fábio Chicout Bash para Desenvolvedores
  27. Introdução Sintaxe Aplicações GUI Web Pipes “Encanamento!” Leva a saída

    de um comando como a entrada de outro comando! Fábio Chicout Bash para Desenvolvedores
  28. Introdução Sintaxe Aplicações GUI Web Pipes “Encanamento!” Leva a saída

    de um comando como a entrada de outro comando! Fábio Chicout Bash para Desenvolvedores
  29. Introdução Sintaxe Aplicações GUI Web grep Ferramenta para pesquisa em

    arquivos texto; Usa expressões regulares; Variantes: zgrep, pgrep; Fábio Chicout Bash para Desenvolvedores
  30. Introdução Sintaxe Aplicações GUI Web grep Ferramenta para pesquisa em

    arquivos texto; Usa expressões regulares; Variantes: zgrep, pgrep; Fábio Chicout Bash para Desenvolvedores
  31. Introdução Sintaxe Aplicações GUI Web grep Ferramenta para pesquisa em

    arquivos texto; Usa expressões regulares; Variantes: zgrep, pgrep; Fábio Chicout Bash para Desenvolvedores
  32. Introdução Sintaxe Aplicações GUI Web grep Ferramenta para pesquisa em

    arquivos texto; Usa expressões regulares; Variantes: zgrep, pgrep; Fábio Chicout Bash para Desenvolvedores
  33. Introdução Sintaxe Aplicações GUI Web 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 embutir na sua chamada. Fábio Chicout Bash para Desenvolvedores
  34. Introdução Sintaxe Aplicações GUI Web 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 embutir na sua chamada. Fábio Chicout Bash para Desenvolvedores
  35. Introdução Sintaxe Aplicações GUI Web 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 embutir na sua chamada. Fábio Chicout Bash para Desenvolvedores
  36. Introdução Sintaxe Aplicações GUI Web 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 embutir na sua chamada. Fábio Chicout Bash para Desenvolvedores
  37. Introdução Sintaxe Aplicações GUI Web 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
  38. Introdução Sintaxe Aplicações GUI Web 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
  39. Introdução Sintaxe Aplicações GUI Web 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
  40. Introdução Sintaxe Aplicações GUI Web 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
  41. Introdução Sintaxe Aplicações GUI Web 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
  42. Introdução Sintaxe Aplicações GUI Web dialog Construção de Interface gráfica

    em modo texto; Comandos simples que criam interfaces de comunicação com outros; Resultados enviados para a saída de erro do bash; calendário, checklist, seleção de diretórios, textbox, seleção de arquivos, barras de progresso, caixas de mensagens, edição de arquivos, menus, campos de senha, radio buttons, e outros componentes úteis. Fábio Chicout Bash para Desenvolvedores
  43. Introdução Sintaxe Aplicações GUI Web dialog Construção de Interface gráfica

    em modo texto; Comandos simples que criam interfaces de comunicação com outros; Resultados enviados para a saída de erro do bash; calendário, checklist, seleção de diretórios, textbox, seleção de arquivos, barras de progresso, caixas de mensagens, edição de arquivos, menus, campos de senha, radio buttons, e outros componentes úteis. Fábio Chicout Bash para Desenvolvedores
  44. Introdução Sintaxe Aplicações GUI Web dialog Construção de Interface gráfica

    em modo texto; Comandos simples que criam interfaces de comunicação com outros; Resultados enviados para a saída de erro do bash; calendário, checklist, seleção de diretórios, textbox, seleção de arquivos, barras de progresso, caixas de mensagens, edição de arquivos, menus, campos de senha, radio buttons, e outros componentes úteis. Fábio Chicout Bash para Desenvolvedores
  45. Introdução Sintaxe Aplicações GUI Web dialog Construção de Interface gráfica

    em modo texto; Comandos simples que criam interfaces de comunicação com outros; Resultados enviados para a saída de erro do bash; calendário, checklist, seleção de diretórios, textbox, seleção de arquivos, barras de progresso, caixas de mensagens, edição de arquivos, menus, campos de senha, radio buttons, e outros componentes úteis. Fábio Chicout Bash para Desenvolvedores
  46. Introdução Sintaxe Aplicações GUI Web zenity Construção de Interface gráfica

    sobre um servidor X; Comandos simples que se interfaces de comunicação com outros; 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 de cor, campo de senha. Menos abrangente que o dialog; Precisa de interface gráfica executando. Fábio Chicout Bash para Desenvolvedores
  47. Introdução Sintaxe Aplicações GUI Web zenity Construção de Interface gráfica

    sobre um servidor X; Comandos simples que se interfaces de comunicação com outros; 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 de cor, campo de senha. Menos abrangente que o dialog; Precisa de interface gráfica executando. Fábio Chicout Bash para Desenvolvedores
  48. Introdução Sintaxe Aplicações GUI Web zenity Construção de Interface gráfica

    sobre um servidor X; Comandos simples que se interfaces de comunicação com outros; 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 de cor, campo de senha. Menos abrangente que o dialog; Precisa de interface gráfica executando. Fábio Chicout Bash para Desenvolvedores
  49. Introdução Sintaxe Aplicações GUI Web zenity Construção de Interface gráfica

    sobre um servidor X; Comandos simples que se interfaces de comunicação com outros; 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 de cor, campo de senha. Menos abrangente que o dialog; Precisa de interface gráfica executando. Fábio Chicout Bash para Desenvolvedores
  50. Introdução Sintaxe Aplicações GUI Web zenity Construção de Interface gráfica

    sobre um servidor X; Comandos simples que se interfaces de comunicação com outros; 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 de cor, campo de senha. Menos abrangente que o dialog; Precisa de interface gráfica executando. Fábio Chicout Bash para Desenvolvedores
  51. Introdução Sintaxe Aplicações GUI Web 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
  52. Introdução Sintaxe Aplicações GUI Web 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
  53. Introdução Sintaxe Aplicações GUI Web 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
  54. Introdução Sintaxe Aplicações GUI Web 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
  55. Introdução Sintaxe Aplicações GUI Web CGI - Instalando LoadModule cgi_module

    modules/mod_cgi.so ScriptAlias /cgi-bin/ “/var/www/cgi-bin” Fábio Chicout Bash para Desenvolvedores
  56. Introdução Sintaxe Aplicações GUI Web CGI - Instalando LoadModule cgi_module

    modules/mod_cgi.so ScriptAlias /cgi-bin/ “/var/www/cgi-bin” Fábio Chicout Bash para Desenvolvedores
  57. Introdução Sintaxe Aplicações GUI Web CGI - Instalando LoadModule cgi_module

    modules/mod_cgi.so ScriptAlias /cgi-bin/ “/var/www/cgi-bin” Fábio Chicout Bash para Desenvolvedores
  58. Introdução Sintaxe Aplicações GUI Web CGI - Programando Primeiras linhas:

    “shebang” echo -e “Content-Type: text/html” Processamento de Formulários: read Fábio Chicout Bash para Desenvolvedores
  59. Introdução Sintaxe Aplicações GUI Web CGI - Programando Primeiras linhas:

    “shebang” echo -e “Content-Type: text/html” Processamento de Formulários: read Fábio Chicout Bash para Desenvolvedores
  60. Introdução Sintaxe Aplicações GUI Web CGI - Programando Primeiras linhas:

    “shebang” echo -e “Content-Type: text/html” Processamento de Formulários: read Fábio Chicout Bash para Desenvolvedores
  61. Introdução Sintaxe Aplicações GUI Web Segurança do CGI Shell Injection!

    Solução: UrlDecoder Fábio Chicout Bash para Desenvolvedores