Introdução ao Linux e Shell Script

Documentos relacionados
Shell Script. Rafael Silva Guimarães

Sistema Operacional. Disciplina: Softwares, Aplicativos e Sistema Operacional. Professor: Thiago Silva Prates

Shell Script. Básico do básico

Conceitos Básicos de Scripts

Aula 9: Shell Script

Contatos do Professor Apresentação do Conteúdo Datas das Avaliações Referências Conceitos Básicos Arquivos de Configuração de Ambiente Regras a

Programação de Scripts Considerações Gerais. Adaptado do material do Prof. Mário Fiocco Júnior

Aula 5 e 6: Introdução ao shell

Administração de Redes de Computadores

Introdução a shell scripts

Shell script. Prof. Lara P. Z. B. Oberderfer

IFSC - SJ CURSO DE TELECOMUNICAÇÕES DISCIPLINA: ICO

105 Shell Script. João Bosco Teixeira Junior

Sistemas Operacionais. Laboratório 1 (Ambiente de Aprendizado)

Sistemas Operacionais II. Prof. Gleison Batista de Sousa Aula 01

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

Linux. Linux é um núcleo (kernel) para sistemas operacionais baseados no conceito de software livre.

Programação para Servidores. Cassio Diego

Redes de Computadores

IFSC - SJ CURSO TÉCNICO DE TELECOMUNICAÇÕES DISCIPLINA: MAN / SOP

Programação Aplicada a Redes de Computadores Shell Script

Programação para Servidores. Cassio Diego

SO Conceitos Básicos. Gerência. Objetivos do SO 07/05/2011. Qual sistema operacional escolher? Qual sistema operacional escolher?

LINUX. Uma visão geral

ADMINISTRAÇÃO DE SISTEMAS UNIX Aula Prática 01 Sistemas Operacionais Gil Eduardo de Andrade

Minicurso Básico de Linux

S.O.R. A Interface de comando

Administração Central Cetec Capacitações Capacitação Sistema Operacional Linux Semana III

Sistemas Operacionais II. Prof. Gleison Batista de Sousa Aula 01

Programação Shell Script: como dominar seu terminal

Sistema operacional. Linux Debian 8 Windows 7

Instalação e Configuração de Servidores Linux Server. Prof. Alex Furtunato

Introdução a Sistemas Abertos. Ambiente shell

CÓDIGO FONTE CÓDIGO FONTE DO BOLO DE CHOCOLATE MOLHADINHO

Sistemas Operacionais e Introdução à Programação. Módulo 1 Sistemas Operacionais

Minicurso Básico de Linux

Introdução a Sistemas Abertos. Shell Script

Interpretador de comandos Formas de envio de Comandos Terminal Linux Curingas Listando Placas Particularidades. Aula 02

Introdução ao. Script. Baltazar Tavares (Psycho Mantys)

Introdução à Informática

Preparatório LPIC-101

MÓDULO 01 INTRODUÇÃO AO LINUX

Informática básica. Professor: Francisco Ary

Introdução ao Linux. Marcelo Gomes de Paula

ADMINISTRAÇÃO DE REDES I LINUX. Shell Script. Frederico Madeira LPIC 1, CCNA

Programação Aplicada a Redes de Computadores. Faculdade IESGO 2º Sem 2016

Informática Sistemas Operacionais Aula 5. Cleverton Hentz

Programação Shell Script: como dominar seu terminal

C A P I T U L O 2 S I N T A X E B Á S I C A - V A R I Á V E I S E C O N S T A N T E S E M P H P

Administração de Sistemas Operacionais

Formação de Administradores de Redes Linux LPI level 1

Introdução à Sistemas Operacionais

Administração de Sistemas Operacionais Prof.: Marlon Marcon

SHELL. Alberto Felipe Friderichs Barros

CPU. Memória. Periféricos, dispositivos de entrada, saída 07/04/2017

Introdução ao Linux. Thiago Yukio Kikuchi Oliveira

M4 SO Open Source LINUX. Técnico de Gestão e Programação de Sistemas Informáticos

Tipos de usuários do Linux Root Usuário Comum: #

Introdução à Informática

Informática. Linux. Professor Márcio Hunecke.

Passo-a-passo para desenvolver um Programa usando a Linguagem Python

Comandos. Sistema Operacional GNU/Linux. Explicações Básicas

Técnico Subsequente em Redes de Computadores Introdução a Sistemas Abertos (ISA)

Exercícios Repetição

Aula de Linux Modo Texto

Introdução à Ciência da Computação ICC0001 Prof. Diego Buchinger

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

Linux e Segurança: porque ele é tão seguro?

Estácio-FIC Graduação em Redes de Computadores

Sistemas Operacionais II. Linux - Introdução

Programação Shell Script: como dominar seu terminal (versão 2)

Introdução ao uso do Linux (parte 2)

Instalador e Operador de Sistemas de Telefonia e Comunicação de Dados

Histórico e conceitos básicos. GSO I Gestão de Sistemas Operacionais

Tecnologias e Sistemas de Informação. Software Livre. SL: Gerenciamento e Configurações 2 Semestre de Prof. Marcelo Z.

Shell scripts - Bash

Introdução aos Sistemas Abertos

Introdução a. Shell Script. Clésio Matos

Tecnologias da Informação e Comunicação


Sistema Operacional Unidade 11.2 Shell Script: estruturas condicionais. QI ESCOLAS E FACULDADES Curso Técnico em Informática

Arquitetura de Computadores

Projeto de Algoritmos

Gerando um programa executável a partir de um módulo Python

Informática I. Aula Aula 18-19/06/06 1

Algoritmos e Programação

INFORMÁTICA. 04. Pode-se dizer que tanto o Windows, quanto o Linux possuem o kernel aberto, podendo ser facilmente customizados pelos usuários.

Mini apostila de Python - Oficina de Vestibulandos. PET Computação - UFPR September 2016

PROVA BANCO DO NORDESTE ANALISTA BANCÁRIO 1 QUESTÕES DE INFORMÁTICA

Sistemas Operacionais e Introdução a Programação

Informática básica. Professor: Francisco Ary

Programação para Servidores. Cassio Diego

1º Ano - Técnico em Informática Integrado. Sistemas Operacionais

3.1 - Funções para manipular dados de entrada e saída padrão

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCENS UFES Departamento de Computação. Shell Script

Prof. Esp. Fabiano Taguchi PHP. Como surgiu o PHP? PHP

Instalação do IBM SPSS Modeler Entity Analytics

Transcrição:

Introdução ao Linux e Shell Script Daniel Gaspar Gonçalves de Souza daniel@gaspar.ws VII Encontro Acadêmico de Modelagem Computacional Janeiro/2014 Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 1/ 105

Parte I Introdução à Linux Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 2/ 105

Conteúdo do Minicurso 1 Software Livre X Proprietário 2 Sistema Operacional 3 Linux: Um breve histórico 4 Por que (não) usar Linux? 5 Peças de um sistema Linux 6 Distribuições Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 3/ 105

Software livre Um software é dito livre quando atende aos quatro tipos de liberdade para os usuários: Executar o programa, para qualquer propósito; Estudar o software; Redistribuir cópias do programa; Modificar o programa e distribuir estas modificações. Ou seja, programa precisa ser distribuído juntamente com o seu código-fonte e sem restrições para que os usuários alterem e redistribuam esse código. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 4/ 105

Software gratuito Software livre Software gratuito Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 5/ 105

Conteúdo do Minicurso 1 Software Livre X Proprietário 2 Sistema Operacional 3 Linux: Um breve histórico 4 Por que (não) usar Linux? 5 Peças de um sistema Linux 6 Distribuições Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 6/ 105

Sistema Operacional Definição Um programa ou um conjunto de programas cuja função é gerenciar os recursos do sistema, fornecendo uma interface entre o computador e o usuário. Basicamente possui as seguintes funções: Definir qual programa recebe atenção do processador; Gerenciar memória; Criar um sistema de arquivos; Gerenciar usuários; Etc. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 7/ 105

Exemplos Microsoft Windows Linux UNIX Apple Mac OS Apple OS X Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 8/ 105

Conteúdo do Minicurso 1 Software Livre X Proprietário 2 Sistema Operacional 3 Linux: Um breve histórico 4 Por que (não) usar Linux? 5 Peças de um sistema Linux 6 Distribuições Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 9/ 105

Primeiros Sistemas Operacionais Sistemas Operacionais costumavam ser totalmente ligados ao hardware, compilados para um processador específico. Funcionamento físico do processador aparecia no SO. Exemplos: General Motors NAA-I/O (para IBM 704) IBM OS/360 (para IBM S/360) IBM DOS/360 (para IBM S/360) RT-11 (para PDP-11) Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 10/ 105

Primeiros Sistemas Operacionais Figura : IBM 704 Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 11/ 105

Primeiros Sistemas Operacionais Figura : IBM S/360 Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 12/ 105

Primeiros Sistemas Operacionais Figura : PDP-11 Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 13/ 105

UNIX Em 1969, a AT&T Bell Labs lança o Sistema Operacional UNIX. Apenas um pequeno núcleo compilado em linguagem de máquina dependente do hardware (kernel); Grande parte do sistema separada do núcleo, escrita em C; Desenvolvimento de uma linguagem de programação para criação de módulos (surge a linguagem C); Sistema de arquivos padrão para todas as arquiteturas. Época do surgimento dos primeiros computadores pessoais. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 14/ 105

POSIX Em 1988, o IEEE publica um padrão para elaboração de Sistemas Operacionais chamado POSIX (Portable Operating System Interface) Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 15/ 105

GNU/Linux UNIX era proprietário (AT&T Bell Labs). Em 1991, Linus Torvalds reescreve o núcleo (kernel) deste sistema e o lança sob o nome de Linux com código fonte aberto (software livre). Desde 1983, Richard Stallman possuía um projeto de lançar o GNU, um Sistema Operacional totalmente livre. Já havia desenvolvido grande parte dos módulos superiores, mas o núcleo - chamado GNU Hurd - ainda estava bem atrasado. Com o lançamento do kernel Linux, usuários juntaram os dois projetos e lançaram o GNU/Linux. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 16/ 105

GNU/Linux (a) Richard Stallman (b) GNU (c) Linus Torvalds (d) Tux Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 17/ 105

Fatias de mercado dos SO s Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 18/ 105

Conteúdo do Minicurso 1 Software Livre X Proprietário 2 Sistema Operacional 3 Linux: Um breve histórico 4 Por que (não) usar Linux? 5 Peças de um sistema Linux 6 Distribuições Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 19/ 105

Vantagens Preço Sistemas Linux no geral são gratuitos. Uma cópia do Microsoft Windows 8.1 pode chegar a custar até R$ 699,00. Segurança Software de código aberto permite que todos leiam o que ele de fato está fazendo. Você confia seus dados à Microsoft? O que será que o Windows faz com suas informações? Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 20/ 105

Vantagens Mais segurança Por ser um sistema pouco utilizado, as pessoas mal-intencionadas preferem desenvolver vírus e outros malware para Microsfot Windows. Personalização Devido ao código ser aberto, qualquer pessoa pode modificar o sistema conforme sua necessidade ou gosto. Que tal colocar o Menu Iniciar do lado direito da tela? Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 21/ 105

Desvantagens Variedade de programas Como Linux não é muito popular, muitos fabricantes não lançam seus programas para o sistema. Suporte à Hardware Nem todos os fabricantes de hardware disponibilizam drivers para seus dispositivos para Linux. Existem controladores código-abertos que podem não ser tão bons quanto os proprietários. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 22/ 105

Conteúdo do Minicurso 1 Software Livre X Proprietário 2 Sistema Operacional 3 Linux: Um breve histórico 4 Por que (não) usar Linux? 5 Peças de um sistema Linux 6 Distribuições Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 23/ 105

Peças de um sistema Linux Diferente de sistemas proprietários, onde uma empresa desenvolve todo o software, um sistema Linux é composto por vários elementos desenvolvidos por toda a comunidade. Linux Kernel X Window System (X.Org) X Display Manager XDM (X Window Display Manager) KDM (KDE Display Manager) GDM (GNOME Display Manager) LightDM MDM Ambiente de Trabalho Demais software para o usuário Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 24/ 105

X Display Manager Figura : XDM Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 25/ 105

X Display Manager Figura : KDM Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 26/ 105

X Display Manager Figura : GDM Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 27/ 105

X Display Manager Figura : LightDM Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 28/ 105

X Display Manager Figura : MDM Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 29/ 105

Peças de um sistema Linux Diferente de sistemas proprietários, onde uma empresa desenvolve todo o software, um sistema Linux é composto por vários elementos desenvolvidos por toda a comunidade. Linux Kernel X Window System (X.Org) X Display Manager Ambiente de Trabalho GNOME KDE MATE Cinnamon Xfce LXDE Demais software para o usuário Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 30/ 105

Ambiente de Trabalho Figura : Gnome Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 31/ 105

Ambiente de Trabalho Figura : KDE Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 32/ 105

Ambiente de Trabalho Figura : Cinnamon Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 33/ 105

Ambiente de Trabalho Figura : MATE Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 34/ 105

Conteúdo do Minicurso 1 Software Livre X Proprietário 2 Sistema Operacional 3 Linux: Um breve histórico 4 Por que (não) usar Linux? 5 Peças de um sistema Linux 6 Distribuições Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 35/ 105

Distribuições Como um sistema Linux é composto por vários módulos e todos com opções código-aberto, é possível montar um sistema conforme sua preferência. Portanto, existem as chamadas distribuições de Linux. Ex: Ubuntu Uma das mais famosas distribuições. Derivada do Debian Kernel Linux + Gnome + Firefox, LibreOffice,... Mint Derivada do Ubuntu Kernel Linux + Cinnamon ou MATE Debian Uma das mais clássicas Possui arquitetura de software instalado baseada Nacional em de pacotes o que facilita a instalação e desinstalação de programas Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 36/ 105

Parte II Introdução ao Bash Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 37/ 105

Conteúdo do Minicurso 7 Usuários e Grupos 8 Estrutura de Arquivos 9 Definição de Shell Script 10 Apresentação do Console Linux 11 Comandos de Linux Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 38/ 105

Usuários e Grupos Em um Sistema Linux, a arquitetura de controle de acesso a arquivos, diretórios e periféricos é baseada em Usuários e Grupos. Usuário Uma pessoa que acessa o computador e possui um nome de usuário e uma senha respectiva. É necessário para acessar a máquina, seja localmente ou remotamente. Ex: Usuário: verao2014 Senha: verao2014 Cada usuário possui uma pasta pessoal onde deve guardar Nacional seus de arquivos. Esta pasta é chamada home do usuário. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 39/ 105

Usuários e Grupos Usuários podem estarem agrupados e cada grupo ter seus respectivos acessos garantidos ou negados. Usuário root Existe um usuário especial, chamado superusuário ou root que é o administrador do sistema. Este usuário pode acessar qualquer dispositivo e qualquer arquivo presente no computador e realizar alterações nos arquivos do sistema. Atenção O usuário root não deve ser utilizado normalmente, apenas para realizar manutenção do sistema (como instalar programas). A maioria dos sistemas não irá inclusive permitir que acesse interface Nacional gráfica de como root. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 40/ 105

Conteúdo do Minicurso 7 Usuários e Grupos 8 Estrutura de Arquivos 9 Definição de Shell Script 10 Apresentação do Console Linux 11 Comandos de Linux Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 41/ 105

Estrutura de Arquivos Como na maioria dos Sistemas Operacionais, os aquivos são estruturados em árvore. Pasta raiz ou root A raiz da estrutura de arquivos é representada pela pasta /, chamada pasta raiz ou root do sistema. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 42/ 105

Estrutura de Arquivos Dentro da pasta root temos diversas outras pastas: bin Executáveis do sistema boot Arquivos necessários na inicialização do computador dev Dispositivos de hardware presentes etc Arquivos de configuração dos programas instalados home Pastas pessoais dos usuários lib Bibliotecas do sistema root Pasta pessoal do usuário root media Outros dispositivos de armazenamento plugados: CD, Pendrive, Cartões de Memória, etc... No geral, os usuários limitados só tem privilégios de escrita ntro de de suas pastas pessoais. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 43/ 105

Estrutura de Arquivos O caminho completo de um diretório ou arquivo é dado pelo caminho traçado na árvore desde a raiz até o mesmo, separados por barras ( / ). Ex: /home/ d a n i e l /Documentos/ s l i d e s l i n u x. pdf Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 44/ 105

Conteúdo do Minicurso 7 Usuários e Grupos 8 Estrutura de Arquivos 9 Definição de Shell Script 10 Apresentação do Console Linux 11 Comandos de Linux Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 45/ 105

Definições Shell Programa que recebe, interpreta e executa os comandos de usuário, aparecendo na tela como uma linha de comandos, representada por um prompt, que aguarda na tela os comandos do usuário. Ex: Bash, Command.com, cmd.exe Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 46/ 105

Definições Shell Programa que recebe, interpreta e executa os comandos de usuário, aparecendo na tela como uma linha de comandos, representada por um prompt, que aguarda na tela os comandos do usuário. Ex: Bash, Command.com, cmd.exe Shell Script Linguagem de programação interpretada por um shell de um sistema operacional. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 46/ 105

Definições Bash Acrônimo de Bourne-again shell, é um shell criado em 1987 e usado como padrão da grande maioria dos kernels de Linux, Mac OS X e Darwin. Também disponível para Windows através de pacotes como cygwin. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 47/ 105

Características de um Shell Script Arquivo de texto puro (codificado UTF-8, por exemplo) Utiliza-se a extensão.sh Para se executar um Shell Script No terminal do Linux, chamar o interpretador bash passando como parâmetro o arquivo do script. Ex: bash meuscript.sh Adicionar o seguinte código à primeira linha do script: #!/bin/bash E marcar o script como executável com chmod +x meuscript.sh (Este passo precisa ser feito apenas uma vez) Após, o script pode ser executado chamando apenas seu nome:./meuscript.sh ou meuscript.sh Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 48/ 105

Conteúdo do Minicurso 7 Usuários e Grupos 8 Estrutura de Arquivos 9 Definição de Shell Script 10 Apresentação do Console Linux 11 Comandos de Linux Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 49/ 105

Console do Linux Disponíveis 6 terminais de modo texto pressionando CTRL + ALT + F1 até F6 Para voltar às sessões gráficas pressione CTRL + ALT + F7 até F12 Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 50/ 105

Console do Linux Disponíveis 6 terminais de modo texto pressionando CTRL + ALT + F1 até F6 Para voltar às sessões gráficas pressione CTRL + ALT + F7 até F12 Consoles dentro da interface gráfica: gnome-terminal do ambiente gŕafico GNOME konsole do ambiente gráfico KDE xterm Editores de texto como o Kate já trazem um terminal em sua interface para facilitar o desenvolvimento e debugging Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 50/ 105

Console do Linux Nos Ubuntu mais antigos, é possível encontrar o gnome-terminal no menu Aplicativos > Acessórios > Terminal; Ou então é possível abrí-lo usando a combinação de teclas ALT + F2 e digitando gnome-terminal; Ou usando o atalho CTRL + ALT + T. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 51/ 105

Prompt de Comando usuário@máquina:pasta$ Ex: usuário: Nome do usuário logado no momento máquina: Nome do computador pasta: Pasta atual onde os comandos serão executados, ou onde os programas serão procurados. O símbolo indica que está na pasta home do usuário, normalmente /home/usuario $: Indica que o comando executado terá privilégios normais. Caso o prompt esteja com privilégios de superusuário, o símbolo se altera para # daniel@e200:~$ Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 52/ 105

Redirecionadores No console Linux é possível redirecionar a saída de um comando para um arquivo ou para outro comando, ou redirecionar o conteúdo de um arquivo para a entrada de um comando >: Redireciona a saída padrão para um arquivo (caso o arquivo já exista, o conteúdo dele será apagado) 2 >: Redireciona a saída de erro para um arquivo (caso o arquivo já exista, o conteúdo dele será apagado) >>: Redireciona a saída padrão para um arquivo (caso o arquivo já exista, será acrescentado no final) 2 >>: Redireciona a saída padrão para um arquivo (caso o arquivo já exista, será acrescentado no final) Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 53/ 105

Redirecionadores & >: Redireciona a saída padrão e a de erro para um arquivo (caso o arquivo já exista, o conteúdo dele será apagado) & >>: Redireciona a saída padrão e a de erro para um arquivo (caso o arquivo já exista, será acrescentado no final) l: Redireciona a saída de um comando para outro comando Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 54/ 105

Redirecionadores Ex: l s l a > l i s t a g e m. t x t t r \n < t e s t e. t x t c a t a r q u i v o. t x t grep o i Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 55/ 105

Conteúdo do Minicurso 7 Usuários e Grupos 8 Estrutura de Arquivos 9 Definição de Shell Script 10 Apresentação do Console Linux 11 Comandos de Linux Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 56/ 105

cd Altera o diretório de trabalho atual de acordo com o que for passado como parâmetro Caso seja informado como parâmetro apenas um nome, será procurado um subdiretório dentro do atual para entrar nele Caso o parâmetro se inicie com /, será buscado este diretório na raiz do sistema Caso o parâmetro seja.., o diretório será alterado para seu prórpio pai (subir um nível) Da mesma forma se pode subir dois níveis com cd../.., e assim sucessivamente Pode-se passar o parâmetro para ir para sua pastanacional pessoal de Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 57/ 105

cd Ex: daniel@e200 : $ cd Documentos daniel@e200 : / Documentos$ cd.. /.. daniel@e200 : / home$ cd daniel@e200 : $ cd /tmp daniel@e200 : / tmp$ Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 58/ 105

ls Lista conteúdo do diretório atual. daniel@e200 : $ cd Documentos daniel@e200 : / Documentos$ l s cronograma. odt s l i d e s. pdf daniel@e200 : / Documentos$ l s Area de t r a b a l h o m a t r i x. t a r. gz Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 59/ 105

mkdir Cria um novo diretório Caso seja informado como parâmetro apenas um nome, será criado um subdiretório dentro do atual Caso o parâmetro se inicie com /, será criado um diretório na raiz Caso o parâmetro se inicie com../, o diretório será criado dentro do pai do atual Da mesma forma se pode-se criar diretório dois níveis acima com mkdir../../nome, e assim sucessivamente Caso o parâmtro se inicie com / o diretório será criado dentro de sua pasta pessoal Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 60/ 105

mkdir Ex: daniel@e200 : / tmp$ mkdir t e s t e daniel@e200 : / tmp$ cd t e s t e daniel@e200 : / tmp/ t e s t e $ mkdir / p a s t a daniel@e200 : / tmp/ t e s t e $ cd / p a s t a daniel@e200 : / p a s t a$ Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 61/ 105

echo Imprime o argumento na tela Ex: Caso seja passado o parâmetro -e, o comando irá tratar caracteres especiais como \ n, \ t entre outros. Por padrão, após a impressão na tela uma linha é quebrada automaticamente. Para evitar isto, passar o parâmetro -n. echo abacate maduro abacate maduro echo abacate \n maduro abacate \n maduro echo e abacate \n maduro abacate maduro Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 62/ 105

cat Mostra o conteúdo de um arquivo de texto na tela Ex: c a t t e s t e. t x t Conteudo do a r q u i v o t e s t e. t x t Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 63/ 105

head Mostra as primeiras linhas de um arquivo de texto na tela É possível obter também os N primeiros bytes de um arquivo, mas neste curso só nos interessa as N primeiras linhas. É preciso passar a quantidade de linhas desejada pelo parâmetro -nx, onde X é a quantidade de linhas desejada. Ex: head n3. z i r. c f g #CaR P r o p e r t i e s #Sun Jun 06 1 0 : 1 8 : 1 8 BRT 2010 z i r k e l f r a m e. h=952 Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 64/ 105

tail Mostra as últimas linhas de um arquivo de texto na tela É possível obter também os N últimos bytes de um arquivo, mas neste curso só nos interessa as N últimas linhas. É preciso passar a quantidade de linhas desejada pelo parâmetro -nx, onde X é a quantidade de linhas desejada. Ex: t a i l n3 t w i t t e r. html </ s c r i p t > </body></html> Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 65/ 105

tr Substitui todas as ocorrências de uma string por outra O arquivo ou frase de entrada precisa ser passado pelo redirecionador l ou pelo < Ex: echo Sao 3 h o r a s t r 3 6 Sao 6 h o r a s t r \n < t e s t e. t x t Conteudo do a r q u i v o t e s t e. t x t Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 66/ 105

sed O comando tr não se comporta muito bem com strings de tamanhos diferentes ou strings pequenas que apareçam no meio de palavras; Existe no bash o comando sed que, entre outras coisas, permite fazer uma substituição mais eficiente. Uso: s e d e ' s /ORIGINAL/SUBSTITUIDO/g ' O s indica que é uma substituição, e o g que é global (todas as instâncias do termo devem ser substituídas) Ex: echo Cont do a r q u i v o sed e ' s / a r q u i v o / o i /g ' Cont do o i Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 67/ 105

grep Mostra as linhas de um arquivo ou da saída de um comando nas quais é possível encontrar uma certa string Para procurar em um arquivo, passa-se o mesmo pela linha de comando: grep t r e c h o a s e r buscado a r q u i v o. t x t Para se procurar na saída de um comando, utiliza-se o redirecionador l: l s l a grep termo Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 68/ 105

su Realiza o login como usuário root. Deve ser usado para realizar manutenção do sistema. daniel@e200 $ su Senha : E200 d a n i e l # Neste caso, a senha que é pedida é a senha do usuário root. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 69/ 105

sudo Dá poder de superusuário ao usuário atual. Normalmente ativado em instalações domésticas. O administrador da máquina deve listar quais contas de usuário tem o privilégio de poder se tornar root. daniel@e200 $ c a t / e t c / f u s e. c o n f c a t : / e t c / f u s e. c o n f : Permissao negada daniel@e200 $ sudo c a t / e t c / f u s e. c o n f [ sudo ] password f o r d a n i e l : mount max = 1000 u s e r a l l o w o t h e r daniel@e200 $ Neste caso, a senha que é pedida é a senha do próprio usuário. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 70/ 105

sudo Figura : Via xkcd.com Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 71/ 105

Parte III Introdução à Shell Script Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 72/ 105

Conteúdo do Minicurso 12 Estrutura básica de um script 13 Linha de comando, Condicionais e Repetição 14 Leitura e Escrita de Arquivos 15 Operações Aritméticas Básicas e Usando BC Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 73/ 105

Estrutura básica de um script Basicamente, um script é uma sequência de comandos do bash que serão executados nesta ordem, separados por uma quebra de linha ou um ponto-e-vírgula. Atividade 1 Faça um script para imprimir na tela o aviso Abaixo está sua tabela de partições montadas: e mostrar embaixo a tabela de partições. Dica A tabela de partição num sistema Linux fica num arquivo de texto localizado em /etc/fstab. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 74/ 105

Estrutura básica de um script #! / b i n / bash echo Abaixo e s t a sua t a b e l a de p a r t. montadas : c a t / e t c / f s t a b Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 75/ 105

Variáveis Não há separação de variáveis por tipo no bash nem a necessidade de declaração das variáveis anteriormente. A definição de uma variável se dá em tempo de execução apenas definindo seu valor como abaixo: m i n h a s t r i n g= Oi, eu sou uma s t r i n g m e u i n t e i r o =15 Cuidado Não separe com espaços o sinal de igual do nome da variável, nem do valor da mesma. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 76/ 105

Variáveis Para se acessar o conteúdo de uma variável se utiliza o símbolo de $ seguido do nome da mesma. Ex: nome= D a n i e l echo Ola $nome Ola D a n i e l Para se alterar o valor de uma variável, basta novamente definí-la com o novo valor. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 77/ 105

Variáveis Para definir uma variável com o resultado de um comando, utiliza-se, no lugar das aspas, acentos graves (`). Ex: r e s u l t =`c a t t e s t e. txt ` echo R e s u l t a d o : $ r e s u l t R e s u l t a d o : Conteudo do a r q u i v o t e s t e. t x t Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 78/ 105

Variáveis Atividade 2 Faça um script que guarde a data de hoje numa variável e depois a imprima na tela. Dica O comando Linux para se obter a data de hoje é date +%x. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 79/ 105

Variáveis Atividade 2 Faça um script que guarde a data de hoje numa variável e depois a imprima na tela. Dica O comando Linux para se obter a data de hoje é date +%x. #! / b i n / bash h o j e=`date +%x ` echo Hoje eh d i a $ h o j e Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 79/ 105

Conteúdo do Minicurso 12 Estrutura básica de um script 13 Linha de comando, Condicionais e Repetição 14 Leitura e Escrita de Arquivos 15 Operações Aritméticas Básicas e Usando BC Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 80/ 105

If - Else No bash, as estruturas de decisão e repetição são bem parecidas com as demais linguagens, porém alguns detalhes devem ser percebidos. i f [ $ v a r i a v e l == minha s t r i n g ] ; then echo Eh i g u a l! e l s e echo Eh d i f e r e n t e! f i Cuidado Obrigatoriamente a instrução then precisa vir em uma nova Nacional linha, de ou separada por ponto-e-vírgula. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 81/ 105

If - Else Existem diversos operadores booleanos que podem ser usados numa instrução if: ==: Compara duas strings e retorna verdadeiro se forem iguais!=: Compara duas strings e retorna verdadeiro se forem diferentes -eq: Compara dois inteiros e retorna verdadeiro se forem iguais -ne: Compara dois inteiros e retorna verdadeiro se forem diferentes -gt: Compara dois inteiros e retorna verdadeiro se o primeiro for maior -lt: Compara dois inteiros e retorna verdadeiro se o primeiro for menor Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 82/ 105

If - Else -ge: Compara dois inteiros e retorna verdadeiro se o primeiro for maior ou igual -le: Compara dois inteiros e retorna verdadeiro se o primeiro for menor ou igual -a: AND Logico: Retorna verdadeiro se as duas condições são verdadeiras -o: OR Logico: Retorna verdadeiro se pelo menos uma das duas condições é verdadeira Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 83/ 105

If - Else Ex: i f [ $ v a r i a v e l == minha s t r i n g ] ; then i f [ $ v a r i a v e l!= minha s t r i n g ] ; then i f [ $ v a l o r gt 5 ] ; then i f [ $ v a l o r ge 5 a $ v a l o r l e 10 ] ; then Cuidado Respeite o espaço que tem depois da abertura do colchetenacional e o antes de do seu fechamento. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 84/ 105

If - Else Atividade 3 Faça um script que pergunte um mês (número) para o usuário, consulte o mês atual e informe se estamos ou não neste mês. Dica O comando Linux para se obter a data de hoje é date +%m. Dica Para se ler uma variável do usuário se utiliza o comando read nomevariavel. Depois é só acessá-la normalmente com $ na frente. Cuidado Apesar do número do mês ser um inteiro, ao ler do usuário ou consultar no sistema, ele vem no formato de uma string. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 85/ 105

If - Else #! / b i n / bash echo D i g i t e um numero de mes : read mes a t u a l =`date +%m` i f [ $mes == $ a t u a l ] ; then echo O mes d i g i t a d o eh o a t u a l. e l s e echo O mes d i g i t a d o nao eh o a t u a l. f i Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 86/ 105

Linha de comando Atividade 4 Altere o script anterior para que, ao invés do número do mês ser perguntado ao usuário pelo read, ele seja recebido via parâmetro de linha de comando. Dica Os parâmetros passados por linha de comando para um script podem ser lidos nele nas variáveis especiais $1, $2 e assim por diante. Cuidado Ao executar um script que espera receber parâmetros de linha de comando, você deve, no ato de invocá-lo, passar estes parâmetros, como, neste exemplo:./meuscript.sh 10 Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 87/ 105

Linha de comando #! / b i n / bash a t u a l =`date +%m` i f [ $1 == $ a t u a l ] ; then echo O mes d i g i t a d o eh o a t u a l. e l s e echo O mes d i g i t a d o nao eh o a t u a l. f i Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 88/ 105

Linha de comando Tente executar o script sem passar nenhum parâmtero. Não é este o comportamento que queremos que ele tenha. Atividade 5 Altere o script da atividade 4 para que se verifique, antes de tudo se a quantidade de parâmetro passada é igual a 1. Dica A quantidade de parâmetros passada a um script pode ser obtida na variável especial $#. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 89/ 105

Linha de comando #! / b i n / bash i f [ $# eq 1 ] ; then a t u a l =`date +%m` i f [ $1 == $ a t u a l ] ; then echo O mes d i g i t a d o eh o a t u a l. e l s e echo O mes d i g i t a d o nao eh o a t u a l. f i e l s e echo I n f o r m e um mes v i a l i n h a de comando Nacional. de f i Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 90/ 105

Case Caso a quantidade de testes a ser realizada seja muito grande, usar uma estrutura como case pode vir a ajudar bastante. c a s e $ v a r i a v e l i n V a l o r 1 ) echo V a l o r 1 f o i e s c o l h i d o ; ; V a l o r 2 ) echo V a l o r 2 f o i e s c o l h i d o ; ; ) echo V a l o r d i f e r e n t e e s c o l h i d o ; ; e s a c Cuidado Os ponto-e-vírgula dobrados servem para terminar cada condição do case. Caso deseja-se executar mais de um comando dentro Nacional de cada de caso, é possível separá-los com um ponto-e-vírgula simples. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 91/ 105

For Usado para fazer um laço de repetição quando já se sabe antes a quantidade de repetições a serem realizadas. f o r i i n $ v e t o r do echo Estou na p o s i c a o $ i done Cuidado Diferentemente de outras linguagens de programação, a instrução for não aceita diretamente valores inteiros como limites (quantidades), e sim varre por cima de um vetor de tamanho fixo. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 92/ 105

For Apesar de não aceitar diretamente valores inteiros como limites da repetição, existe uma maneira de fazer um for parecido do a estrutura da maioria das linguagens. Atividade 6 Faça um script que escreva de 1 até 50 na tela usando for. Dica O comando seq de Linux cria um vetor de valores recebendo o inicial, o incremento (passo) e o final. Por exemplo, para gerar uma sequência que vai de 0 à 10, com passo de 2 em 2, temos: seq 0 2 10 Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 93/ 105

For #! / b i n / bash f o r i i n ` seq 1 1 50 `; do echo Numero $ i done Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 94/ 105

Conteúdo do Minicurso 12 Estrutura básica de um script 13 Linha de comando, Condicionais e Repetição 14 Leitura e Escrita de Arquivos 15 Operações Aritméticas Básicas e Usando BC Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 95/ 105

Leitura de Arquivos A leitura de arquivos no bash pode ser feita indiretamente pegando a saída do comando cat. Este não é o único método, mas é eficiente para arquivos de apenas uma linha. Atividade 7 Lembra-se da Atividade 4? Crie um arquivo mes.txt e salve dentro dele apenas um número representando um mês. Altere o script da Atividade 4 para, ao invés de receber o mês pela linha de comando, ele leia o valor dentro deste arquivo. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 96/ 105

Leitura de Arquivos #! / b i n / bash a t u a l =`date +%m` mes=`c a t mes. txt ` i f [ $mes == $ a t u a l ] ; then echo O mes d i g i t a d o eh o a t u a l. e l s e echo O mes d i g i t a d o nao eh o a t u a l. f i Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 97/ 105

Escrita de Arquivos A escrita de arquivos, por sua vez, é realizada simplesmente redirecionando a saída do comando echo para um arquivo. Atividade 8 Modifique o último script para que, ao invés de imprimir na tela, ele escreva em um arquivo res.txt se o mês digitado é o atual ou não. Dica Lembre-se que o redirecionador > apaga todo o conteúdo do arquivo de destino e mantém apenas a última escrita, enquanto o >> vai acrescentando texto no final do arquivo. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 98/ 105

Escrita de Arquivos #! / b i n / bash a t u a l =`date +%m` mes=`c a t mes. txt ` i f [ $mes == $ a t u a l ] ; then echo O mes d i g i t a d o eh o a t u a l. > r e s. t x t e l s e echo O mes d i g i t a d o nao eh o a t u a l. > r e s. t x t f i Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 99/ 105

Conteúdo do Minicurso 12 Estrutura básica de um script 13 Linha de comando, Condicionais e Repetição 14 Leitura e Escrita de Arquivos 15 Operações Aritméticas Básicas e Usando BC Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 100/ 105

Aritmética Básica Para operações simples e com números inteiros, pode-se utilizar o comando expr passando como parâmetro a expressão a ser realizada. Atividade 9 Faça um script que pergunte ao usuário 2 número e apresente a soma, subtração, multiplicação, divisão inteira e resto da divisão dos mesmos. Dica O caractere * possui um significado especial no bash, portanto, para utilizá-lo a fim de multiplicar, é preciso escapá-lo com uma barra invertida antes. Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 101/ 105

Aritmética Básica #! / b i n / bash echo D i g i t e o p r i m e i r o numero : read num1 echo D i g i t e o segundo numero : read num2 soma=`e x p r $num1 + $num2` d i f f =`e x p r $num1 $num2` prod=`e x p r $num1 \ $num2` d i v =`e x p r $num1 / $num2` r e s t o =`e x p r $num1 % $num2` echo Soma : $soma echo Subtracao : $ d i f f echo Produto : $prod echo Quociente : $ d i v echo Resto : $ r e s t o Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 102/ 105

Aritmética de Ponto Flutuante Para operações mais complicadas, incluindo cálculos científicos e/ou com números decimais, utiliza-se o bc - bash calculator. Sua notação de uso é a seguinte: r e s u l t a d o=$ ( echo s c a l e=x ; EXPRESSAO bc ) Onde X é a quantidade de casas decimais, e EXPRESSÃO é a expressão matemática que se deseja calcular. Atividade 10 Faça um script que pergunte o raio de um círculo e informe sua área e o comprimento de sua circinferência, ambos com 2 casas decimais. Dica A círculo = πr 2 e P circunferência = 2πr Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 103/ 105

Aritmética de Ponto Flutuante #! / b i n / bash echo Entre com o r a i o : read r a i o a r e a=$ ( echo s c a l e =2; 3.14 $ r a i o ˆ2 bc ) comp=$ ( echo s c a l e =2; 2 3.14 $ r a i o bc ) echo Area : $ a r e a echo Comprimento da C i r c u n f e r e n c i a : $comp Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 104/ 105

Introdução ao Linux e Shell Script Daniel Gaspar Gonçalves de Souza daniel@gaspar.ws VII Encontro Acadêmico de Modelagem Computacional Janeiro/2014 Daniel Gaspar (daniel@gaspar.ws) Introdução ao Linux e Shell Script 105/ 105