Este documento discute o Bash para desenvolvedores. Ele introduz o Bash, sua sintaxe e aplicações, incluindo GUI e web. O documento também discute características do Bash como variáveis, redirecionamento, pipes, ferramentas como grep, awk e sed.
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Bash for Developers
1. Introdução
Sintaxe
Aplicações
GUI
Web
Bash para Desenvolvedores
Abrindo possibilidades com as habilidades de desenvolvimento
Fábio Chicout1
1
Coordenaçã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
Características
Fracamente tipada
Fábio Chicout Bash para Desenvolvedores
12. Introdução
Sintaxe
Aplicações
GUI
Web
Características
Estimula a preguiça sadia!
Fábio Chicout Bash para Desenvolvedores
13. Introdução
Sintaxe
Aplicações
GUI
Web
Características
Integradora de tecnologias!
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
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
19. 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
20. 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
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
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
23. 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
24. 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
25. Introdução
Sintaxe
Aplicações
GUI
Web
Redirect
Figura: Código Java para criar arquivo Texto.
Fábio Chicout Bash para Desenvolvedores
26. 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
27. 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
28. 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
29. 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
30. 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
31. 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
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
grep
Ferramenta para pesquisa em arquivos texto;
Usa expressões regulares;
Variantes: zgrep, pgrep;
Fábio Chicout Bash para Desenvolvedores
34. 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
35. 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
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
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
38. 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
39. 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
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
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
43. 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
44. 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
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
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
47. 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
48. 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
49. Introdução
Sintaxe
Aplicações
GUI
Web
DEMO
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
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
52. 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
53. 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
54. 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
55. 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
56. 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
57. 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
58. 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
59. 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
60. 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
61. 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
62. 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
63. 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
64. 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
65. Introdução
Sintaxe
Aplicações
GUI
Web
Segurança do CGI
Shell Injection!
Solução: UrlDecoder
Fábio Chicout Bash para Desenvolvedores