Aula 1. 23/02/2015. Práticas de Desenvolvimento de Software Aula 1 – Unix, Linux e a linha de comando Oferecimento Ambiente de desenvolvimento Computador (hardware) Sistema operacional Ferramentas Idealmente: iguais para toda a equipe Virtualização (1) Virtualização Máquinas virtuais (VMs) Guest OS Guest OS Guest OS Aplicação de virtualização Sistema operacional hospedeiro (Host OS) Hardware Memória • Tamanho do disco virtual • Pastas compartilhadas • Acesso à Internet • “Hardware" configurável Virtualização (2) Virtualização – Por quê? • Maior aproveitamento de hardware • Segurança e isolamento • Padronização • Uso como ambiente de teste • Portabilidade DE Virtualização (3) M O OK, MAS E NA PRÁTICA? Sistema operacional Computador (hardware) Sistema operacional Ferramentas Idealmente: iguais para toda a equipe Ubuntu, Linux e Unix (1) Ubuntu 14.10 (Utopic Unicorn) Ubuntu 14.10 Ubuntu Debian Linux + GNU Unix é uma versão do… que usa como base o… que é uma distribuição do… que é compatível com… Ubuntu, Linux e Unix (2) Muita história por trás Ubuntu 14.10 Ubuntu Debian LINUX LINUS TORVALDS Linux + GNU RICHARD STALLMAN GNU Unix FREE SOFTWARE KEN THOMPSON DENNIS RITCHIE OPEN SOURCE Ubuntu, Linux e Unix (3) Ubuntu Um sistema operacional Unix-like Unix > Conceitos básicos Conceitos básicos de Unix/Linux • Arquivos e processos • Sistema de arquivos • Linha de comando (shell) • Comandos • Combinação de comandos • Modelo de segurança e permissões Unix > Conceitos básicos > Arquivos e processos Conceitos básicos de Unix/Linux • Arquivos e processos • Sistema de arquivos • Linha de comando (shell) • Comandos • Combinação de comandos • Modelo de segurança e permissões Unix > Conceitos básicos > Arquivos e processos Os 6 tipos de arquivos 1. 2. 3. 4. 5. 6. Regular (!= especial) Diretório Link Named pipes Sockets Arquivos de dispositivos Unix > Conceitos básicos > Arquivos e processos 1. Arquivos regulares Apresentações Documentos de texto Arquivos de código-fonte Planilhas de Excel Arquivos de áudio Para o SO, não importa o conteúdo. São as aplicações que atribuem sentido ao que está armazenado. Unix > Conceitos básicos > Arquivos e processos 2. Diretórios CÁLCULO.TXT FÍSICA.TXT ANOTAÇÕES QUÍMICA.TXT Unix > Conceitos básicos > Arquivos e processos 3. Link ATALHO PARA NOTAS.TXT NOTAS.TXT Unix > Conceitos básicos > Arquivos e processos 4. Named Pipes 5. Sockets Usados para comunicação entre processos (Inter-process communication, ou IPC). Unix > Conceitos básicos > Arquivos e processos 6. Arquivos de dispositivos Representam e permitem comunicação padronizada com dispositivos de hardware Exemplos: impressoras, discos rígidos, modems, portas seriais, … Unix > Conceitos básicos > Sistema de arquivos Sistema de arquivos Forma de representar, armazenar, organizar e recuperar os arquivos existentes em um dispositivo de armazenamento. == NOTAS.TXT ? notas.txt Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … home tmp var john file1.txt documents file1.txt music pictures projects Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … home tmp var john file1.txt documents file1.txt music pictures projects Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … home tmp var john file1.txt documents file1.txt music pictures projects Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … tmp var john file1.txt documents file1.txt /home/ home music pictures projects Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … tmp var john file1.txt documents file1.txt /home/john/ home music pictures projects Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … home tmp var john file1.txt documents file1.txt /home/john/documents/ music pictures projects Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … home tmp var john file1.txt documents music file1.txt /home/john/documents/file1.txt pictures projects Unix > Conceitos básicos > Sistema de arquivos Caminho absoluto bin dev / etc … home tmp var john file1.txt documents music file1.txt /home/john/documents/file1.txt pictures projects Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … home tmp var john file1.txt documents file1.txt music pictures projects Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … home tmp var john file1.txt documents file1.txt music pictures projects Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … home tmp var john file1.txt documents file1.txt music pictures projects Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … tmp var john file1.txt documents file1.txt documents/ home music pictures projects Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … home tmp var john file1.txt documents file1.txt documents/file1.txt music pictures projects Unix > Conceitos básicos > Sistema de arquivos Caminho relativo bin dev / etc … home tmp var john file1.txt documents file1.txt documents/file1.txt music pictures projects Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … home tmp var john file1.txt documents file1.txt music pictures projects Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … home tmp var john file1.txt documents file1.txt music pictures projects Unix > Conceitos básicos > Sistema de arquivos / bin dev etc … home tmp var john file1.txt documents file1.txt music pictures projects Unix > Conceitos básicos > Sistema de arquivos Diretórios especiais / bin dev etc … home tmp var john file1.txt documents file1.txt music pictures projects Unix > Conceitos básicos > Sistema de arquivos . Diretórios especiais / bin dev etc … home tmp var john file1.txt documents file1.txt music pictures projects Unix > Conceitos básicos > Sistema de arquivos ... Diretórios especiais / bin dev etc … home tmp var john file1.txt documents file1.txt music pictures projects Unix > Conceitos básicos > Sistema de arquivos ... Diretórios especiais / bin dev etc … tmp var john file1.txt documents file1.txt ../ home music pictures projects Unix > Conceitos básicos > Sistema de arquivos ... Diretórios especiais / bin dev etc … tmp var john file1.txt documents file1.txt ../../ home music pictures projects Unix > Conceitos básicos > Sistema de arquivos ... Diretórios especiais / bin dev etc … tmp var john file1.txt documents file1.txt ../../ ../ home music pictures projects Unix > Conceitos básicos > Sistema de arquivos ... Diretórios especiais / bin dev etc … tmp var john file1.txt documents file1.txt ../../ ../ dev home music pictures projects Unix > Conceitos básicos > Sistema de arquivos ... Diretórios especiais / bin dev etc … home tmp var john file1.txt documents music file1.txt ../../ ../ dev (Caminho relativo) pictures projects Unix > Conceitos básicos > Linha de comando Unix > Conceitos básicos > Linha de comando Unix > Conceitos básicos > Linha de comando Unix > Conceitos básicos > Linha de comando Unix > Conceitos básicos > Linha de comando # Listar arquivos do diretório atual. ls # Listar arquivos de outro diretório. ls ~/poli/2015/1quadrimestre/ # Listar arquivos normais e arquivos ocultos. ls -a ~/poli/ # O mesmo que o anterior + ordenar por tamanho. ls -aS ~/poli/ O comando [opções] [argumentos] M Sintaxe padrão DE Unix > Conceitos básicos > Linha de comando DE Unix > Conceitos básicos > Comandos M echo pwd, cd, ls touch, ln, mkdir, cp, mv, rm cat, more, tail, head, sort, wc find, grep man Cheat sheets: • http://cb.vu/unixtoolbox.xhtml • http://files.fosswire.com/2007/08/fwunixref.pdf O Alguns comandos básicos Unix > Conceitos básicos > Combinação de comandos Redirecionamento de I/O STDOUT STDIN cat STDERR Fluxo de informação de processos Normalmente: STDIN: teclado STDOUT: tela STDERR: tela Unix > Conceitos básicos > Combinação de comandos Redirecionamento de I/O cat < input.txt cat > output.txt cat 2> error.log cat < input.txt > output.txt Manipulação de entrada e/ou saída Unix > Conceitos básicos > Combinação de comandos Pipe: | cat STDOUT uniq STDOUT wc -l Encadeamento de processos cat | uniq | wc -l Unix > Conceitos básicos > Combinação de comandos Shell scripts • Sequências de comandos escritos na linguagem do shell • Podem ter estruturas de controle de fluxo • Uso comum: automatização de tarefas #!/bin/bash echo "Hello, $USER!" echo "Your current working directory is `pwd`" echo "Enter a path: " read directory file_counter.sh Unix > Conceitos básicos > Modelo de segurança Modelo de segurança • Todo usuário (id) pertence a um grupo primário (gid) e pode pertencer a grupos secundários. G3 G1 U1 U2 U4 U3 G2 U5 G4 U6 • U1 ∈ G1 • U2 ∈ G1 • U3 ∈ G1, U3 ∈ G2 • U4 ∈ G3 • U5 ∈ G2 • U6 ∈ G4 Unix > Conceitos básicos > Modelo de segurança Modelo de segurança • Todo arquivo ou processo pertence a um usuário (owner user) e a um grupo (owner group) G1 • U2 é o owner user de A1 • G2 é o owner group de A1 U1 U2 A1 U3 G2 Unix > Conceitos básicos > Modelo de segurança Modelo de segurança • Permissões são concedidas a classes para atuar sobre processos e arquivos. • Tipos de permissão: 1. Leitura (read) (r) 2. Escrita (write) (w) 3. Execução (execute) (x) • Tipos de classes: 1. Owner (u) 2. Group members (g) 3. Other (o) 4. Todos (a) Unix > Conceitos básicos > Modelo de segurança Modelo de segurança • chmod: change file modes • chown: change owner and/or group Comandos relacionados # Altera o owner do arquivo foo.txt chown john foo.txt # Altera o owner e o grupo do arquivo foo.txt chown john:developers foo.txt # Remove a permissão execução (x) de todos (a) para foo.sh Unix > Conceitos básicos > Modelo de segurança Modelo de segurança Visualização das permissões de arquivos: ls -l drwxr-xr-x 6 root admin 204 Feb 9 12:54 . drwxr-xr-x 33 root wheel 1190 Mar 1 13:57 .. drwxrwxrwt 7 root wheel 238 Feb 9 12:54 Shared drwxr-xr-x+ 60 deborasetton staff 2040 Mar 4 18:21 deborasetton drwxr-xr-x+ 23 infosimples staff 782 Sep 3 2013 infosimples Unix > Conceitos básicos > Modelo de segurança Modelo de segurança Visualização das permissões de arquivos: ls -l drwxr-xr-x 6 root admin 204 Feb 9 12:54 . drwxr-xr-x 33 root wheel 1190 Mar 1 13:57 .. drwxrwxrwt 7 root wheel 238 Feb 9 12:54 Shared drwxr-xr-x+ 60 deborasetton staff 2040 Mar 4 18:21 deborasetton drwxr-xr-x+ 23 infosimples staff 782 Sep 3 2013 infosimples Escopos: Permissions Owner user Owner group rwxr-xr-x user (u) group (g) other (o) Ambiente de desenvolvimento > OK ✓ Computador (hardware) ✓ Sistema operacional Ferramentas (linguagem de programação, editor de texto, outros softwares, …) To be continued…