Baixe o app para aproveitar ainda mais
Prévia do material em texto
Unidade IV LINGUAGEM DE PROGRAMAÇÃO APLICADA Prof. Rogério Gião Sistema operacional Linux O Unix foi o primeiro sistema a introduzir conceitos muito importantes para os Sistemas Operacionais (SO), como suporte a multiusuários, multitarefas e portabilidade. Logo que foi concebido, esse sistema funcionou sob uma forma de licença livre, o que, com certeza, influenciou na popularidade. Apenas depois de certo tempo a sua licença se tornou proprietária. Atualmente, diversos sistemas operacionais são baseados no Unix e a maioria deles funciona sob um sistema total ou parcial de código aberto. Isso, com certeza, impulsionou a proliferação desse sistema. Sistema operacional Linux Um dos principais SO baseados no Unix encontrados no mercado é o Linux. O Linux possui o seu código-fonte aberto, o que permite que qualquer pessoa veja como o sistema funciona, corrija algum problema ou faça a sua sugestão de melhoria. Um dos destaques do Linux é sua estabilidade, praticamente não apresentando travamentos do sistema. Sistema operacional Linux O Linux possui todas as características que você pode esperar de um Unix moderno, incluindo: Multitarefa real; Memória virtual; Multiusuário; Conectividade com outros tipos de plataformas como: Apple, Sun, Macintosh, Unix, Windows, DOS etc. Modularização: o Linux somente carrega para a memória o que é utilizado durante o processamento, liberando totalmente a memória, assim que o programa é finalizado. Sistema operacional Linux Não há a necessidade de se reiniciar o sistema após modificar a configuração de qualquer periférico de computador ou parâmetro da rede. Somente é necessário reiniciar o sistema no caso de uma instalação de um novo periférico ou falha em algum hardware. Biblioteca compartilhada. Gerenciamento de memória próprio. Executáveis copy-on-write compartilhados. Rede TCP/IP (incluindo SLIP/PPP/ISDN). Sistema operacional Linux Uma das maiores vantagens de se utilizar o Linux é o fato de a maioria dos programas que rodam nele ser gratuita, muitos provenientes do projeto GNU. O projeto GNU determina os critérios que definem se um determinado software se qualifica dentro da categoria de software livre. É possível baixar o Linux diretamente do site do desenvolvedor. Atualmente, ele é usado tanto para o desenvolvimento de softwares como para plataforma de usuário final. Sistema operacional Linux Cada versão do Linux possui as suas particularidades e muitas vezes diferenças significativas, como as próprias interfaces gráficas que variam muito de uma versão para outra. A escolha adequada de cada versão deve analisar essas particularidades a fim de atender as expectativas dos usuários. Um exemplo de distribuição Linux muito utilizada é o Ubuntu. A palavra Ubuntu é de origem africana e significa “sou o que sou pelo que nós somos” ou “a crença em uma ligação universal de compartilhamento que conecta toda a humanidade”, ou seja, seu significado possui estreita ligação com a filosofia de software livre. Sistema operacional Linux – histórico O sistema operacional Linux tem origem no Unix e foi, originalmente, escrito por Linus Torvalds, um programador finlandês, então com 21 anos, pertencente ao departamento de Ciências da Computação da Universidade de Helsinki, na Finlândia. Ele também contou com a ajuda de vários programadores voluntários pela internet. Fonte: livro-texto Sistema operacional Linux – histórico Linus Torvalds iniciou o projeto não totalmente do zero, mas sim como uma variação do Minix, um pequeno sistema Unix desenvolvido por Andy Tannenbaum. Depois de algum tempo de trabalho solitário em seu projeto, ele divulgou uma mensagem para a lista de discussões da qual participava em que dizia que estava desenvolvendo um sistema operacional. O seu intuito era encontrar voluntários e acelerar o desenvolvimento do seu sistema. Então, ele disponibilizou seu sistema com código aberto na internet para que colaboradores pudessem aprimorá-lo e compartilhar as suas versões com todo o mundo. Fonte: livro-texto Sistema operacional Linux – histórico No dia 5 de outubro de 1991, Linus Torvalds anunciou a primeira versão oficial do Linux, a versão 0.02. Desde então, muitos programadores têm atendido ao seu chamado e têm ajudado a fazer do Linux o sistema operacional que é hoje. Inicialmente, por não possuir uma interface com o usuário muito amigável, o Linux era utilizado na maioria das vezes por programadores ou por quem tinha conhecimento de programação e usava essencialmente linhas de comando na execução de suas tarefas. Atualmente, existem muitas empresas que produzem distribuições Linux com interfaces mais amigáveis, de forma que todos conseguem usar o Linux. Interatividade Assinale a alternativa que não representa uma alternativa verdadeira quando se fala em Unix/Linux: a) Inicialmente, o Unix funcionou sob uma forma de licença livre, tornando-se proprietária apenas depois de certo tempo. b) O fato de os Sistemas Operacionais baseados em Unix funcionarem sob um sistema de código aberto, com certeza, impulsionou a proliferação desse sistema. c) Um dos únicos pontos em que o Linux peca é em sua instabilidade. d) O projeto GNU determina os critérios que definem se um determinado software se qualifica como um software livre. e) O Linux tem origem no Unix e foi escrito por Linus Torvalds com a ajuda de vários programadores voluntários pela internet. Sistema operacional Linux Sistemas de arquivos O Linux é conhecido por suportar uma grande quantidade de sistemas de arquivos, inclusive que são suportados em outros sistemas operacionais. Um sistema de arquivos é um conjunto de rotinas e estruturas lógicas, que permite ao sistema operacional controlar o acesso ao disco rígido. Conforme cresce a capacidade dos discos e aumenta o volume de arquivos e acessos, essa tarefa torna-se mais e mais complicada, exigindo o uso de sistemas de arquivos cada vez mais complexos e robustos. Sistema operacional Linux Sistemas de arquivos São muitos os sistemas de arquivos suportados pelo Linux. A seguir mostraremos apenas alguns mais comuns: EXT2 O sistema de arquivos ext2 é conhecido como Second Extended FileSystem. Foi desenvolvido para ser mais “eficiente” que o sistema de arquivos Minix, seu antecessor, muito utilizado nas primeiras versões do Linux. O sistema de arquivos ext2 não possui journaling e foi substituído pelo ext3. Sistema operacional Linux Sistemas de arquivos EXT3 O sistema de arquivos ext3 tem as mesmas características do ext2, mas com suporte a journaling. Isso fez do ext3 um sistema de arquivos mais robusto e estável. É possível converter um sistema de arquivos ext2 para ext3, adicionado suporte a journaling. O contrário também é possível, bastando apenas remover o suporte a journaling. Sistema operacional Linux Sistemas de arquivos ReiserFS Apesar de ter sido criado recentemente, o sistema de arquivos ReiserFS já é suportado por quase todas as distribuições Linux. Apresenta um excelente desempenho, principalmente para um número muito grande de arquivos pequenos. ReiserFS também possui suporte a journaling. Sistema operacional Linux Sistemas de arquivos XFS O sistema de arquivos XFS foi desenvolvido pela Silicon Graphics e, posteriormente, disponibilizado seu código-fonte. Ele é considerado um dos melhores sistemas de arquivos para banco de dados devido à sua velocidade na gravação. Por utilizar muitos recursos decache com memória RAM, é recomendado que se use esse sistema de arquivos em sistemas que possuem redundância de energia elétrica. Sistema operacional Linux Sistemas de arquivos VFAT O sistema de arquivos VFAT é também conhecido como FAT32 (MS Windows). Esse sistema de arquivos, geralmente, não é utilizado para sistemas Linux, a não ser para transferência de dados entre sistemas MS Windows e Linux instalados no mesmo disco, pois pode ser lido e escrito por ambos os sistemas operacionais. Esse sistema não possui suporte a journaling. Sistema operacional Linux Interpretador de comandos Shell O Shell é o intérprete de comandos do Linux. É a interface entre o usuário e o sistema operacional e essa interface se dá por meio das linhas de comando por ele escritas. A sua função é executar as linhas de comando, interpretar o seu significado e devolver o resultado pelas saídas. A interface Shell é um arquivo executável que interpreta os comandos, transmite-os ao sistema e devolve o resultado desse processamento. Sistema operacional Linux Interpretador de comandos Shell Existem diversos tipos de Shell. Os mais comuns são o sh (chamado Bourne shell), o bash (Bourne again shell), o csh (C Shell), o Tcsh (Tenex C shell), o ksh (Korn shell) e o zsh (Zero shell). Cada usuário possui o seu próprio Shell, que é ativado na abertura de um interpretador de comandos. É o Shell que interpreta os comandos que são digitados, examina as suas sintaxes e encaminha-os para a execução. O Shell padrão é definido no arquivo de configuração /etc/passwd no último campo da linha que corresponde ao usuário. Sistema operacional Linux Tarefas do Shell Veremos a seguir as principais tarefas executadas pelo Shell. Exame da linha de comandos Nesse exame, o Shell identifica os caracteres reservados, os quais possuem significado especial para a interpretação da linha de comando; em seguida, identifica se a linha passada é um comando (ou programa) ou uma atribuição. Sistema operacional Linux Tarefas do Shell Comando Quando uma linha é digitada no Shell, ela é dividida em partes separadas por espaços em branco. A primeira parte consiste no nome do programa (comandos são vistos como programas) que é analisado e, comprovada a sua existência, identifica também as suas opções/parâmetros, redirecionamentos e variáveis. Também são analisadas as permissões dos arquivos envolvidos e, caso o usuário não tenha o perfil necessário para a execução dessa tarefa, uma mensagem de erro será gerada no sistema. Sistema operacional Linux Tarefas do Shell Atribuição Dois comandos separados por um sinal de igualdade e sem espaços em branco entre eles identificam uma atribuição. Exemplo: $ ls linux O texto “ls” foi identificado como um programa e o texto “linux” foi identificado como um parâmetro passado para “ls”. $ valor=1000 No trecho acima, o Shell identificou uma atribuição e escreveu o valor 1000 na variável valor. Sistema operacional Linux Tarefas do Shell Resolução de redirecionamentos Após analisar o conteúdo da linha digitada e identificar os componentes, o Shell segue para a resolução de redirecionamentos, que podem ser de entrada (stdin), de saída (stdout) ou dos erros (stderr). Sistema operacional Linux Tarefas do Shell Passa linha de comando para o kernel Após a finalização das tarefas anteriores, a linha de comando é montada pelo Shell já com todas as substituições feitas. O kernel é chamado para executar essa linha de comando em um novo Shell (Shell filho), o qual ganha um número de processo (PID ou Process IDentification) e permanece inativo durante a execução do programa. Uma vez encerrado esse processo, o Shell recebe novamente o controle e exibe um prompt, indicando que está pronto para executar outros comandos. Interatividade Assinale a alternativa que não representa uma alternativa verdadeira quando se fala em sistemas de arquivo e Shell: a) Um sistema de arquivos é um conjunto de rotinas e estruturas lógicas, que permitem ao SO controlar o acesso ao disco rígido. b) Podemos considerar dentre os principais sistemas de arquivo: os sistemas EXT2, EXT3, ReiserFS, XFS e VFAT. c) Um dos pontos fracos do Linux é a sua limitada compatibilidade aos sistemas de arquivo. d) O Shell é a interface entre o usuário e o sistema operacional e essa interface se dá por meio das linhas de comando escritas pelo usuário. e) O Shell interpreta os comandos que são digitados pelo usuário, examina as suas sintaxes e encaminha-os para a execução. Sistema operacional Linux Principais Shells Existem diversas versões de Shells. A seguir veremos alguns exemplos das versões mais encontradas e utilizadas. Bourne Shell (sh) Esse Shell foi por muitos anos o Shell padrão do Unix. Foi desenvolvido por Stephen Bourne da Bell Labs e é indiscutivelmente o Shell mais usado até porque ele foi portado para todos os ambientes Unix. Fonte: livro-texto Sistema operacional Linux Principais Shells Boune Again Shell (bash) Esse é o Shell padrão do Linux e o seu número de adeptos é o que mais cresce em todo o mundo, levado pelo grande crescimento do seu Sistema Operacional hospedeiro. Possui uma diversidade elevada de comandos e é quase 100% compatível com o Bourne Shell além de incorporar diversas instruções do C Shell. Sua representação para o Unix é bash. Sistema operacional Linux Principais Shells Korn Shell (ksh) É uma atualização do Bourne Shell, ou seja, reconhece todos os comandos do Bourne Shell, além de ter agregado muitos outros. Foi desenvolvido por David Korn, também da Bell Labs. A compatibilidade com o Bourne Shell tem trazido muitos usuários e programadores de Shell para esse ambiente. Sua representação para o Unix é ksh. Fonte: livro-texto Sistema operacional Linux Principais Shells C Shell Esse Shell foi desenvolvido por Bill Joy, da Berkley University, e é o Shell mais utilizado em ambientes *BSD e Xenix (versões de Sistemas Operacionais Unix). Possui estrutura de comandos similar à linguagem C. Pela falta de compatibilidade com o Bourne, Shell acabou não se popularizando muito. Fonte: livro-texto Sistema operacional Linux Editores de texto Editor vi O vi é um dos editores de texto mais utilizados nos sistemas do tipo Unix/Linux. Ele foi criado também por Bill Joy em 1976. O nome vi é inspirado na palavra visual. Ele está presente em praticamente todas as distribuições Linux. O vi torna-se uma ferramenta muito importante, considerando que os arquivos de configuração do Linux são escritos em formato texto. O vi pode ser classificado em modo de edição e modo de comando, como veremos mais adiante. Sistema operacional Linux Editores de texto Modo de exibição No modo de edição é possível a digitação de textos, como em qualquer outro editor de texto de qualquer sistema operacional existente. Inicia-se esse modo por meio do Shell, conforme comando abaixo: $ vi nome_do_arquivo Esse comando inicia o vi e abre o arquivo de nome: “nome_do_arquivo”. Sistema operacional Linux Editores de texto Modo de exibição Fonte: livro-texto Sistema operacional Linux Editores de texto Modo de comando Ao se abrir o vi, ele é aberto no modo de comando. Nesse modo, as entradas de texto são interpretadas como ações a serem executadas no arquivo aberto. Os comandos podem ser divididos em: comandos básicos de operação; comandos de inserção, substituição e deleção; comandosde movimentação; comandos de busca/localização. Sistema operacional Linux Trabalhando com variáveis Uma variável é uma posição nomeada de memória que tem a função de armazenar valor para, posteriormente, ser utilizada em seu código. Palavras reservadas. Palavras reservadas são aquelas que, em algumas linguagens de programação, não pode ser utilizada como um identificador por ser reservada para uso da gramática da linguagem. Algumas palavras reservadas do Shell são: case, do, done, elif, else, esac, for, function, if, in, select, then, time, until e while. Sistema operacional Linux Trabalhando com variáveis Criação de variáveis No ambiente Shell, a linguagem não é tipada, ou seja, uma variável pode armazenar valores desde strings a números. Abaixo podemos ver a sintaxe de declaração de variável: $ nome_variavel=valor, em que: nome_variavel: sequência de caracteres que permite identificar a variável no código. Valor: o dado que a variável irá armazenar. Sistema operacional Linux Trabalhando com variáveis Declarando e utilizando variáveis Abaixo veremos um código exemplificando o uso das variáveis no Shell. Utilizaremos o editor vi, já visto anteriormente. Vamos abrir o arquivo pelo comando: $ vi exemplo1.sh Em seguida, tecle “i” para colocar o vi em modo de inserção. No nosso exemplo exibiremos na tela algumas informações sobre o usuário e sobre a máquina, conforme a seguir: Sistema operacional Linux Trabalhando com variáveis Declarando e utilizando variáveis echo “O nome de usuário é:” whoami echo “Informação atual de hora e tempo que o computador está ligado:” uptime echo “O script está executando do diretório:” pwd Para executar o script, se tivermos salvado o arquivo no diretório atual, basta digitar o comando abaixo: $ ./exemplo1.sh Sistema operacional Linux Trabalhando com variáveis O comando echo, conforme já visto anteriormente, exibe na tela a string entre aspas duplas. O comando whoami exibe o usuário registrado no sistema. O comando uptime exibe o horário atual, o tempo decorrido desde a última inicialização do computador, o número de usuários logados e uma média do número de processos carregados nos último um, cinco e 15 minutos. O comando pwd exibe o diretório no qual o arquivo está rodando. Interatividade Assinale a alternativa que não representa uma alternativa verdadeira quando se fala em Shell, editores de texto e variáveis. a) O Shell é o intérprete de comandos do Linux e a sua função é executar as linhas de comando, interpretar o seu significado e devolver o resultado pelas saídas. b) O Shell interpreta os comandos que são digitados, examina as suas sintaxes e encaminha-os para a execução. Interatividade c) O Shell é a interface entre o usuário e o sistema operacional e essa interface se dá por meio de sua interface gráfica com o usuário. d) O vi é um dos editores de texto mais utilizados nos sistemas do tipo Unix/Linux e está presente em praticamente todas as distribuições Linux. e) Os editores de texto possuem um modo de edição e um modo de comando. Sistema operacional Linux Comandos básicos do Linux Os sistemas operacionais mais atuais, em sua grande maioria, são baseados em interface gráfica, pelo uso de janelas, mouses etc.; facilitando, assim, a sua utilização por parte dos usuários. No entanto, pode ser que, em algumas vezes, seja necessário utilizar o sistema em modo texto, não só por necessidade, mas também por existirem tarefas que, se realizadas por comandos em modo texto, são mais rápidas e eficientes. Podemos usar o aplicativo “Terminal”, frequentemente chamado de linha de comando ou Shell para entrar com comandos de linha de texto no sistema Linux. Sistema operacional Linux Comandos básicos do Linux Podemos utilizar um atalho no teclado para acessar Terminal. Por exemplo: pressione as teclas Ctrl + Alt + t. Isso vai abrir o Terminal. Fonte: livro-texto Sistema operacional Linux Comandos básicos do Linux Manual dos comandos A instrução man exibe um manual contendo as explicações dos comandos, incluindo suas opções e parâmetros. É de grande utilidade, pois mostra aos usuários como utilizar os comandos do sistema. Para sair do manual basta pressionar a tecla “q”. Fonte: livro-texto Sistema operacional Linux Comandos básicos do Linux Na sequência veremos alguns comandos básicos que podem ser encontrados nos sistemas operacionais baseados em Unix, como o Linux por exemplo. Comando ls O comando ls lista os arquivos e os diretórios da pasta. Ele assemelha-se ao comando DIR do MS-DOS. Exemplo: $ ls A opção “-a” mostra também os arquivos ocultos e executáveis. Exemplo: $ ls -a A opção “-l” mostra o conteúdo do diretório com mais detalhes. Exemplo: $ ls -l Sistema operacional Linux Comandos básicos do Linux Comando who O comando who apresenta os usuários que estão logados no sistema. Exemplo: $ who Comando cat Exibe o conteúdo de um arquivo, semelhante ao TYPE do MS- DOS. Ele também pode ser utilizado para concatenar arquivos. Exemplo:$ cat a.txt b.txt > c.txt Essa linha de comando junta o conteúdo do arquivo a.txt com o do arquivo b.txt e salva o resultado no arquivo c.txt. Sistema operacional Linux Comandos básicos do Linux Comando ed O ed é um editor de texto que utiliza as mesmas expressões regulares usadas pelo vi. Ele é muito utilizado na elaboração e no desenvolvimento de scripts. Exemplo: $ ed arquivo.txt Comando cd O comando cd permite ao usuário mudar o diretório de trabalho. A mudança de diretório pode ser feita de forma sequencial (de diretório pai para diretório filho ou vice-versa) ou pode ser feita de forma aleatória (de um diretório qualquer para outro diretório qualquer). Sistema operacional Linux Comandos básicos do Linux Exemplos de utilização do comando cd $ cd ou cd ~/ -> vai para o diretório home. $ cd / -> vai para o diretório raiz do Linux. $ cd nome_diretorio -> vai para um diretório filho do diretório atual. $ cd.. -> vai para o diretório pai do diretório atual. $ cd../nome_diretorio -> vai para um diretório do mesmo nível do diretório atual. $ cd- -> volta ao último diretório visitado antes do diretório atual. $ cd /usr/lib -> vai para o diretório do caminho fornecido. Sistema operacional Linux Comandos básicos do Linux Comando cp O comando cp copia um arquivo para um determinado caminho. Exemplo: $ cp imagem.jpg /Estacao/Wallpapers Comando mv O comando mv pode ser usado para mover ou renomear arquivos. Esse comando tem algumas opções, conforme poderemos ver a seguir: -b -> backup: cria um backup do arquivo de destino existente. -f -> force: apaga arquivos de destino existentes sem perguntar ao usuário. Sistema operacional Linux Comandos básicos do Linux -i -> interactive: pergunta se deseja sobrescrever o arquivo de destino existente. -n -> no-clobber: não sobrescrever um arquivo já existente. -u -> update: move o arquivo apenas quando ele for mais novo que o arquivo de destino, ou quando o arquivo de destino estiver faltando. -v -> verbose: detalha o que está sendo feito no momento. Sistema operacional Linux Execução de programas Um programa pode ser escrito em um editor de texto como o vi, ed, entre outros. O arquivo é salvo como um texto comum. Um Shell script começa definindo qual o interpretador de comandos será utilizado para interpretar e executar o script. O exemplo abaixo define a utilização do bash,acrônimo para “Bourne-Again Shell”, interpretador de comandos já visto anteriormente. #!/bin/bash Sistema operacional Linux Execução de programas Os caracteres especiais #! informam ao kernel que o próximo argumento é o programa interpretador de comandos que será utilizado para executar esse arquivo, nesse caso, /bin/bash. O kernel lê os caracteres especiais no início da linha e, em seguida, inicia o bash. É preciso mudar a permissão do arquivo para executável para ele funcionar. Utilizamos para isso o comando chmod. Interatividade Assinale a alternativa que não representa uma alternativa verdadeira quando se fala em programação em Linux. a) Existem tarefas nos sistemas operacionais que, se realizadas por comandos em modo texto, são mais rápidas e eficientes. b) O aplicativo “Terminal” pode ser usado para entrar com comandos de linha de texto no sistema Linux. c) A instrução man exibe um manual contendo as explicações dos comandos, incluindo suas opções e parâmetros. d) No Shell, a linguagem é fortemente tipada, ou seja, é necessário definir o tipo da variável no momento da declaração. e) O aplicativo “Terminal” é frequentemente chamado de linha de comando ou Shell. ATÉ A PRÓXIMA!
Compartilhar