Linux

Embed Size (px)

Citation preview

  • Introduo ao LINUX

    e

    Programao em Script-Shell

    Programa de Educao Tutorial

    Telecomunicaes

    PET

    TELE )))

    Universidade Federal Fluminense

    Niteri-RJ

    2004

  • Prefcio

    O Programa de Educao Tutorial (PET) possui como objetivo maior realizar atividades de pesquisa,

    ensino e extenso de forma no dissociada, isto , desenvolver projetos que integrem em si estes trs

    aspectos. Neste contexto, o grupo PET-Tele desenvolve diversas apostilas, no como um m em si

    mesmas, mas como forma de realizar tambm outras atividades.

    O desenvolvimento dessas apostilas iniciado com um trabalho de pesquisa sobre o tema escolhido.

    Aps este perodo inicial, produz-se material didtico sobre o assunto, visando transmitir o conheci-

    mento adquirido para os alunos do curso de graduao e outros interessados. Eventualmente, quando

    ocorre alguma solicitao, os alunos do grupo fornecem cursos sobre os assuntos abordados na apostila.

    At o momento, as seguintes apostilas esto disponveis no site do PET:

    HTML Linguagem de programao para hipertextos, principalmente empregada na construo de

    pginas da Internet (webpages).

    LaTeX Sistema de edio de texto largamente utilizado em meios acadmicos e cientcos, bem como

    por algumas editoras nacionais e internacionais.

    LINUX e Script-Shell Introduo ao sistema operacional GNU/Linux e programao em utilizando

    o shell.

    MATLAB Ambiente de simulao matemtica, utilizado em diversas reas prossionais.

    SPICE Ambiente de simulao de circuitos eltricos (analgicos e digitais), utilizado em projeto de

    circuitos discretos e integrados.

    Nota desta Apostila

    Esta apostila visa introduzir o usurio ao ambiente do sistema operacional Linux da famlia UNIX-

    Like, explicando seu sistema de arquivos, seus processos caractersticos e seus comandos. Alm disso,

    tem por objetivo apresentar programao Script-Shell, ensinando a criar e executar programas, apre-

    sentando os comandos mais utilizados na construo de scripts, alm de manipulao de variveis, uso

    de estruturas bsicas de deciso e controle e exemplos diversos.

    A apostila est dividida em 3 partes:

    O contedo da primeira parte abrange um breve histrico, alguns conceitos e caractersticas dos

    Sistemas Operacionais, hardware e software havendo maior destaque para o Sistema Operacional

    UNIX.

    i

  • A segunda contm os aspectos bsicos do Linux, assim como os principais comandos utilizados

    para realizar tarefas no Linux.

    A ltima parte da apostila envolve os principais conceitos de programao utilizando o shell do

    Linux.

    O principal motivo da abordagem desses 3 temas em uma nica apostila foi o de levar o usurio

    iniciante a ter uma viso mais ampla do funcionamento de um sistema operacional quando um comando

    digitado na tela de um terminal ou quando executado um script.

    No se pretende com este manual apresentar todos os comandos do Linux e suas aplicaes mais

    usadas. Cada usurio usar mais um conjunto de comandos do que outros dependendo de seus

    objetivos. Existem comandos especcos para redes, para manipulao de arquivos, para congurao

    de dispositivos, etc. Um livro seria pouco para esgotar todas as facilidades e funes que o Linux

    oferece.

    Espera-se que com essa apostila o usurio iniciante conhea o bsico do Linux de forma clara e o

    usurio mais experiente a use como referncia.

    Quanto ao aspecto de programao, vale lembrar que um usurio no se tornar um grande pro-

    gramador apenas lendo uma apostila ou um livro. preciso prtica, fazer programas, testar funes,

    estudar programas prontos para entender seu funcionamento, etc. Uma grande vantagem do Linux

    que suas distribuies vm com os scripts abertos, para que o usurio possa ler, entender e adaptar

    s suas necessidades, podendo at mesmo fazer uma nova distribuio com base na outra. Bastando

    para isso, vontade de aprender e curiosidade. As man pages do Unix e dos interpretadores de coman-

    dos como o bash possuem tudo o que for necessrio para entender os comandos de uma forma mais

    completa.

    No m da apostila, se encontra um guia de sites, livros e apostilas usados como base para a

    construo desta. E outras referncias importantes contendo um amplo e importante contedo para

    o leitor usar am de aprimorar seu conhecimento no Linux e programao utilizando o shell.

    Universidade Federal Fluminense ii PET

    TELE)))

  • Sumrio

    Prefcio i

    1 Conceitos Gerais 2

    1.1 Introduo ao Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    1.1.1 Resoluo de problemas X Mapeamento de domnios . . . . . . . . . . . . . . 2

    1.1.2 Funes lgicas e aritmticas bsicas . . . . . . . . . . . . . . . . . . . . . . . 2

    1.1.3 Implementao de funes matemticas por circuitos . . . . . . . . . . . . . . 3

    1.1.4 Computador X Mquina de nveis . . . . . . . . . . . . . . . . . . . . . . . . . 3

    1.2 Introduo ao software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    1.2.1 Computador X Sistema Operacional . . . . . . . . . . . . . . . . . . . . . . . 4

    1.2.2 Interface de comunicao com o Sistema Operacional (SO) . . . . . . . . . . . 5

    1.2.3 Interpretador de comandos (shell) de um SO . . . . . . . . . . . . . . . . . . . 5

    1.3 Famlia UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    1.3.1 Sistemas UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    1.3.2 Interfaces do UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2 Introduo ao Linux 9

    2.1 Aspectos bsicos do Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.1.1 Startup e shutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.1.2 Abertura de seo no Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.1.3 Usurio, superusurio (root), grupos, acesso, proteo . . . . . . . . . . . . . . 10

    2.1.4 Sesso, login, password, logout . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2.1.5 Consoles virtuais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2.2 Sistema de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2.2.1 Sistema hierrquico, rvore de diretrios, montagem de ramicaes . . . . . . 11

    2.2.2 Tipos bsicos de arquivos: plain les, directory . . . . . . . . . . . . . . . . . 12

    2.2.3 Permisses para acesso a arquivos . . . . . . . . . . . . . . . . . . . . . . . . . 12

    2.2.4 Diretrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    2.3 Processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    2.3.1 Processos e subprocessos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    2.3.2 Controle de processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    3 Comandos 18

    3.1 Comandos de ajuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    3.2 Comandos e utilitrios bsicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    3.2.1 Comandos de manipulao de arquivos . . . . . . . . . . . . . . . . . . . . . . 19

    3.2.2 Redirecionamento de entrada e sada . . . . . . . . . . . . . . . . . . . . . . . 34

    iii

  • Sumrio Sumrio

    3.3 Expresses Regulares e Metacaracteres . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    4 Introduo ao script-shell para LINUX 46

    4.1 Aspectos bsicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    4.1.1 Script e Script Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    4.2 Execuo do programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    4.2.1 Erros na execuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    4.2.2 Quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    4.3 Comentrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    4.4 Impresso na tela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    4.5 Passagem de parmetros e argumentos . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    4.5.1 Leitura de parmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    4.6 Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    4.6.1 Execuo de script por outro script . . . . . . . . . . . . . . . . . . . . . . . . 57

    4.7 Depurao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

    5 Manipulao de variveis 60

    5.1 Palavras Reservadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    5.2 Criao de uma varivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    5.3 Deleo de uma varivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    5.4 Visualizao de variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    5.5 Proteo de uma varivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    5.6 Substituio de variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    5.7 Variveis em vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    5.8 Variveis do sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    6 Testes e Comparaes em Script-Shell 66

    6.1 Cdigo de retorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    6.2 Avaliao das expresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

    6.3 Operadores booleanos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    6.4 Testes Numricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

    6.4.1 O Comando let . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

    6.5 Testes de Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

    6.6 Testes de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    7 Controle de uxo 72

    7.1 Deciso simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

    7.2 Deciso mltipla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

    7.2.1 O comando case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

    7.3 Controle de loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    7.3.1 While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    7.3.2 Until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    7.3.3 For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    A O Projeto GNU e o Linux 78

    A.1 Software Livre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

    Universidade Federal Fluminense iv PET

    TELE)))

  • Sumrio Sumrio

    B Editor de textos vi 80

    B.1 Comandos internos - vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

    B.2 Comandos da ltima linha - vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    Referncias Bibliogrcas 82

    Universidade Federal Fluminense 1 PET

    TELE)))

  • Captulo 1

    Conceitos Gerais

    1.1 Introduo ao Hardware

    1.1.1 Resoluo de problemas X Mapeamento de domnios

    Como j foi visto em outras disciplinas, possvel descrever situaes atravs de equaes. Por

    exemplo, na Fsica, temos as leis da natureza mapeadas por equaes, permitindo que antecipemos

    os resultados. Conhecendo a equao que descreve o problema, que pode estar em um domnio

    complicado, podemos transport-la para outro domnio mais simples (que j pode ter uma soluo

    conhecida), onde obtemos resultados que podem ser levados de volta ao domnio inicial. A resoluo

    do problema pode ser denida em quatro etapas:

    1. Mapeamento do problema real em um problema matemtico;

    2. Equacionamento do problema matemtico;

    3. Mapeamento do equacionamento em um algoritmo;

    4. Adequao do algoritmo a uma linguagem de programao.

    1.1.2 Funes lgicas e aritmticas bsicas

    possvel a representao de todo um sistema numrico utilizando apenas "zeros"e "uns". Chamamos

    esse sistema de sistema binrio e foi desenvolvida com ele uma lgica, a lgica BOOLEANA. Atravs

    dela, podemos implementar solues num domnio de fcil manipulao, uma vez que podemos con-

    siderar, por exemplo, uma lmpada acesa como nvel lgico '1' e uma apagada como '0'. Do mesmomodo, podemos trabalhar com tenso eltrica:

    com tenso - '1';

    sem tenso - '0'.

    Tabela das funes lgicas:

    2

  • Captulo 1. Conceitos Gerais 1.1. Introduo ao Hardware

    A B AND OR XOR NAND NOR XNOR NOT A

    0 0 0 0 0 1 1 1 1

    0 1 0 1 1 1 0 0 1

    1 0 0 1 1 1 0 0 0

    1 1 1 1 0 0 0 1 0

    Tabela 1.1: Tabela de Funes Lgicas

    1.1.3 Implementao de funes matemticas por circuitos

    Uma vez conhecida a Lgica Booleana podemos, atravs da combinao de OR's, AND's, etc, construir

    circuitos capazes de somar, multiplicar, subtrair, enm, realizar toda e qualquer operao matemtica.

    1.1.4 Computador X Mquina de nveis

    Um computador uma mquina digital capaz de solucionar problemas atravs de instrues que lhe

    so fornecidas. Cada computador tem sua linguagem de mquina, que consiste em todas as instrues

    primitivas que a mquina pode executar. Na verdade, pode ser dito que uma mquina dene uma

    linguagem e uma linguagem dene uma mquina.

    Essas instrues mais bsicas do computador geralmente se resumem a adicionar, vericar se um

    nmero zero ou mover um dado. E estas so realizadas pelo circuito eletrnico. Seria complicado

    para um humano escrever um programa com base nestas simples instrues. Uma soluo para esse

    problema escrever o programa em uma linguagem (que chamaremos de L2) diferente da linguagem

    de mquina (L1). Ento a execuo de um programa escrito em L2 dever acontecer em duas etapas.

    Primeiro L2 transformada

    1

    em L1. Em seguida L1 executada diretamente. Assim, poderamos

    pensar na existncia de uma mquina virtual cuja linguagem de mquina L2. Estentendo esse

    exemplo, poderiam ser criadas outras linguagens L3, L4, L5, etc..., at atingir um nvel de linguagem

    conveniente ao ser humano. Como cada linguagem utiliza sua anterior como base, podemos pensar no

    computador como sendo composto por vrias camadas ou nveis, uma mquina multinvel.

    Em grande parte dos computadores atuais h cerca de 7 nveis. A seguir h uma breve apresentao

    de cada um desses nveis. Veja Fig. 1.1.

    Figura 1.1: Esquema de nveis de um computador.

    Nvel 0 - o hardware da mquina. Consiste nas portas lgicas formando os circuitos. Nvel 1 - o nvel onde esto os microprogramas. o verdadeiro nvel de linguagem demquina. Esses microprogramas interpretam as instrues do nvel 2, para o nvel 0 executar.

    1

    Entende-se por transformao de uma linguagem em outra como traduo ou interpretao.

    Universidade Federal Fluminense 3 PET

    TELE)))

  • Captulo 1. Conceitos Gerais 1.2. Introduo ao software

    Nvel 2 - Nvel de mquina convencional. Contm o conjunto de instrues que sero interpre-tados pelo microprograma.

    Nvel 3 - um nvel hbrido pois possui instrues do nvel 2 e outras caractersticas novas. chamado de sistema operacional.

    Nvel 4 - Nvel de montagem. Nvel 5 - Contm as linguagens usadas pelos programadores para resolver programas. Nvel 6 - Consiste nos programas feitos para trabalhar em determinada aplicao. Ex: editoresde texto, simuladores matemticos, eltricos, etc.

    1.2 Introduo ao software

    O software de um computador pode ser dividido, basicamente, em duas categorias:

    Programas de sistema - Gerenciam a operao do computador. O mais importante destes oSistema Operacional.

    Programas de aplicao - So aqueles que o usurio trabalha usualmente para resolver determi-nados problemas como editores de imagem, texto, jogos, etc.

    1.2.1 Computador X Sistema Operacional

    O Sistema Operacional controla todos os recursos do computador e fornece a base sobre a qual os

    programas e aplicativos so escritos. Ele a interface do usurio e seus programas com o computador e

    responsvel pelo gerenciamento de recursos e perifricos (como memria, discos, arquivos, impressoras,

    CD-ROMs, etc.) e a execuo de programas.

    A parte mais baixa desta interface com o hardware considerada oKernel do sistema operacional,

    traduzindo: Cerne do SO. no kernel que esto denidas funes para operao com perifricos

    (mouse, disco, impressora, interfaces serial/paralela), gerenciamento de memria, entre outros.

    O kernel a parte mais importante do sistema operacional, pois, sem ele, a cada programa novo que

    se criasse seria necessrio que o programador se preocupasse em escrever as funes de entrada/sada,

    de impresso, entre outras, em baixo nvel. Por isso, quando h perifricos que o kernel no tem

    funo pronta, necessrio escrever a interface para eles.

    1.2.2 Interface de comunicao com o Sistema Operacional (SO)

    O SO pode ser visto como uma mquina estendida, quando apresenta ao usurio uma mquina virtual

    equivalente ao hardware, porm muito mais simples de programar. Ele isola o usurio dos detalhes de

    operao do disco.

    Ele tambm pode ser visto como gerente de recursos ao passo que ele gerencia os usurios de cada

    um dos recursos da mquina, combinando o tempo de uso de cada um e garante o acesso ordenado

    de usurios a recursos atravs da mediao dos conitos entre as requisies dos diversos processos

    usurios do sistema. Por exemplo, o controle que o sistema operacional faz com os pedidos de diferentes

    usurios, em uma rede, para utilizar a impressora.

    Universidade Federal Fluminense 4 PET

    TELE)))

  • Captulo 1. Conceitos Gerais 1.3. Famlia UNIX

    1.2.3 Interpretador de comandos (shell) de um SO

    No caso do SO UNIX, o interpretador de comandos chamado Shell e exerce a funo de um programa

    que conecta e interpreta os comandos digitados por um usurio. a interface que o usurio utiliza

    para enviar comandos para o sistema.

    Dos vrios programas Shell existentes, o Bourne Shell, o Korn Shell e o C Shell se destacam por

    serem os mais utilizados e conhecidos. Mas qualquer programador pode fazer o seu Shell. Estes shells

    tornaram-se conhecidos pois j vinham com o sistema, exceto o Korn que tinha que ser adquirido

    separadamente. O Bourne Shell vinha com o System V e o C Shell com o BSD. O Korn Shell uma

    melhoria do Bourne Shell. H tambm o Bash (Bourne Again Shell). Mais informaes sobre estes

    shells podem ser vistas no captulo 4.

    Os comandos podem ser enviados de duas maneiras para o interpretador: de forma interativa e

    no-interativa.

    Interativa: os comandos so digitados no prompt de comando e passados ao interpretador de co-

    mandos um a um. Neste modo, o computador depende do usurio para executar uma tarefa ou

    prximo comando.

    No-interativa: so usados arquivos de comandos criados pelo usurio (scripts) para o computador

    executar os comandos na ordem encontrada no arquivo. Neste modo, o computador executa os

    comandos do arquivo um por um e dependendo do trmino do comando, o script pode checar

    qual ser o prximo comando a ser executado. O captulo 4 descreve a construo de scripts.

    1.3 Famlia UNIX

    1.3.1 Sistemas UNIX

    O UNIX um sistema operacional multitarefa, ou seja, permite a utilizao do processador entre vrias

    tarefas simultaneamente, multiusurio, disponvel para diversos hardwares. Ele possui a capacidade

    de criar opes especcas para cada usurio, as quais so ativadas quando o usurio se loga ao

    computador.

    As razes do UNIX encontraram-se na necessidade, na dcada de 70, de um sistema multitarefa

    convel e aplicvel ao ambiente dominante na poca, um mainframe (um grande computador central)

    e uma srie de terminais ligados a ele. No meio da programao, costuma-se dizer que o UNIX foi

    projetado por programadores para programadores j que possui certas caractersticas desejadas por

    eles como o de ser um sistema simples com grande exibilidade.

    Histrico do UNIX

    Abaixo temos um cronograma da criao do UNIX:

    Dcadas de 40 e 50:Todos os computadores eram pessoais quanto a forma de utilizao. O usurio reservava um

    horrio para utiliz-lo.

    Dcada de 60:Atravs dos sistemas Batch , o usurio enviava ao centro de processamento de dados um job

    em cartes perfurados para que esse fosse processado pelo computador. Aproximadamente uma

    Universidade Federal Fluminense 5 PET

    TELE)))

  • Captulo 1. Conceitos Gerais 1.3. Famlia UNIX

    hora depois da submisso, o usurio podia buscar os resultados de seu programa. Porm, se

    houvesse algum erro no programa escrito, o usurio s saberia horas depois, perdendo seu tempo.

    Para resolver esse problema, foi criado um sistema de compartilhamento de tempo, o CTSS, no

    MIT, onde cada usurio tinha um terminal on-line sua disposio.

    Aps o CTSS, os Laboratrios Bell com o MIT e a General Eletric comearam um programa

    grandioso de criar um novo sistema operacional que suportasse centenas de usurios simultane-

    amente em regime de compartilhamento de tempo (timesharing). Tal sistema foi denominado

    MULTICS (MULTiplexed Information and Computing Service), que seria multi-usurio, mul-

    titarefa e teria um sistema de arquivos hierrquico.

    Dcada de 70:A AT&T, controladora da Bell Labs, insatisfeita com o progresso do MULTICS cortou o projeto

    e alguns programadores da Bell que trabalharam no projeto, como Ken Thompson, implemen-

    taram a verso monousurio do MULTICS em linguagem de montagem em um minicomputador,

    o PDP-7. Brian Kernighan, outro programador da Bell, deu o nome do novo sistema de UNICS

    como deboche ao nome do sistema anterior. Mais tarde o nome foi mudado para o conhecido

    UNIX.

    Em seguinda, o UNIX foi escrito para mquinas do tipo PDP-11. E como era necessrio rees-

    crever o sistema toda vez que ele fosse transportado para outra mquina, Thompson reescreveu

    o UNIX em uma linguagem de alto nvel desenvolvida por ele, a Linguagem B. Para corrigir

    algumas imperfeies, Denni Ritchie, que tambm trabalhava na Bell Labs, desenvolveu a Lin-

    guagem C. Juntos, em 1973, eles reescreveram o UNIX em C. Dessa forma, foi garantida a

    portabilidade.

    Em 1974, Thompson e Ritchie publicaram um artigo sobre o novo sistema operacional UNIX,

    o que gerou um grande entusiasmo no meio acadmico. Como a AT&T era um monoplio

    controlado atuante na rea das telecomunicaes, no foi permitida sua entrada no ramo da

    computao. Assim, a Bell Labs no colocou objees para licenciar o UNIX para as universi-

    dades e empresas.

    Em 1977 existiam cerca de 500 computadores com UNIX no mundo todo.

    Pelo fato do UNIX ser fornecido com seu cdigo fonte completo, muitas pessoas passaram a

    estud-lo e organizar seminrios para trocas de informaes, visando a eliminao de Bugs e

    incluso de melhoramentos. A primeira verso padro do UNIX foi denominda Verso 6 pois

    estava descrita na sexta edio do Manual do Programador UNIX.

    Dcada de 80:Com a diviso da AT&T em vrias companhias independentes, imposta pelo gorverno americano

    em 1984, foi possvel a criao de uma subsidiria dela no ramo da computao. Ento foi

    lanado pela AT&T a primeira verso comercial do UNIX, o System III, seguida pelo System

    V , sendo que cada verso era maior e mais complicada que a antecessora.

    Auxiliada pela DARPA (Defense Advanced Research Projects Agency), a Universidade de Berke-

    ley passou a distribuir uma verso melhorada da Verso 6, chamada 1BSD (First Berkeley Soft-

    ware Distribution), seguida pela 2BSD, 3BSD e 4BSD. Esta ltima possuindo muitos melhora-

    mentos, sendo o principal, o uso de memria virtual e da paginao, permitindo que programas

    Universidade Federal Fluminense 6 PET

    TELE)))

  • Captulo 1. Conceitos Gerais 1.3. Famlia UNIX

    fossem maiores que a memria fsica. Tambm, a ligao de mquinas UNIX em rede, desen-

    volvida em Berkeley, fez com que o padro de rede BSD, o TCP/IP, se tornasse padro universal.

    Essas modicaes zeram com que fabricantes de computadores, como a Sun Microsystems e

    a DEC, baseassem suas verses no UNIX de Berkeley.

    Em 1984 j existiam cerca de 100.000 computadores com UNIX rodando em diferentes platafor-

    mas.

    No nal da dcada, estavam circulando duas verses diferentes e incompatveis, a 4.3BSD e o

    System V Release 3. Isso tornou praticamente impossvel aos fornecedores de software ter a

    certeza de que seus programas pudessem rodar em qualquer sistema UNIX.

    Ento, o Comit de Padronizao do IEEE fez a primeira tentativa de unicao dos dois

    padres. O nome escolhido do projeto foi POSIX (Portable Operating System). Foi criado

    aps grandes discusses o padro denominado 1003.1, contendo a interseo das caractersticas

    tanto da 4.3 BSD quanto do System V. Porm, um consrcio, denominado OSF (Open Software

    Foundation), foi formado principalmente pela IBM (que comercializava o sistema AIX ), DEC,

    Hewlett-Packard com o intuito de formar um sistema de acordo com o padro 1003.1, alm de

    caractersticas adicionais. Em reao, em 1988 a AT&T e Sun se unem no consrcio UI (UNIX

    International) para desenvolver Solaris e UNIXWare.

    Com isso, passaram a existir, novamente, verses diferentes oferecidas pelos consrcios, tendo

    como caracterstica comum o fato de serem grandes e complexas, contrariando a idia principal

    do UNIX

    Uma tentativa de fuga desses sistemas foi a criao de uma nova verso UNIX-like mais simples

    e menor, o sistema do tipo MINIX.

    Em 1997, foram vendidos cerca de 4 milhes de sistemas UNIX no mundo todo.

    Alguns dos Sistemas Operacionais UNIX atuais so: BSD (FreeBSD, OpenBSD e NetBSD), So-

    laris (anteriormente conhecido por SunOS), IRIX, AIX, HP-UX, Tru64, Linux (nas suas milhares de

    distribuies), e at o Mac OS X (baseado num kernel Mach BSD chamado Darwin).

    1.3.2 Interfaces do UNIX

    H 3 tipos de interface do sistema UNIX que podem ser identicadas:

    Interface de chamadas de sistema; Interface de biblioteca de procedimentos; Interface formada pelo conjunto de programas utilitrios, considerada erroneamente por algunsusurios como sendo a verdadeira interface do UNIX.

    Universidade Federal Fluminense 7 PET

    TELE)))

  • Captulo 2

    Introduo ao Linux

    Diferentemente do que se levado a pensar, o Linux uma implementao independente do sistema

    operacional UNIX. O Linux propriamente dito um kernel, no um sistema operacional completo.

    Sistemas completos construdos em torno do kernel do Linux usam o sistema GNU que oferece um

    shell, utilitrios, bibliotecas, compiladores e ferramentas, bem como outros programas como os editores

    de texto. Por essa razo, Richard M. Stallman, do projeto GNU, pede aos usurios que se reram ao

    sistema completo como GNU/Linux. No apndice, h mais informaes sobre o projeto GNU.

    O desenvolvimento do Linux iniciou a partir de um projeto pessoal de um estudante da Univeridade

    de Helsinki, na Finlndia, chamado Linus Torvalds. Ele pretendia criar um sistema operacional mais

    sosticado do que o Minix, um UNIX relativamente simples cujo cdigo fonte ele tinha disponvel. O

    Linux obedece ao padro estabelecido pelo governo norte americano, POSIX. O POSIX o padro da

    API (Application Programming Interface) UNIX, referncias para desenvolvedores da famlia UNIX-

    like. Desde a apresentao do Linux em 5 de outubro de 1991, por Linus Torvalds, um grande nmero

    de pessoas envolvidas com programao comeou a desenvolver o Linux. O nome Linux deriva da

    juno Linus + UNIX = Linux.

    Portabilidade

    Linux hoje um dos kernels de sistema operacional mais portados, rodando em sistemas desde o

    iPaq (um computador porttil) at o IBM S/390 (um massivo e altamente custoso mainframe), embora

    este tipo de portabilidade no fosse um dos objetivos principais de Linus Torvalds. Seu esforo era

    tornar seu sistema porttil no sentido de ter habilidade de facilmente compilar aplicativos de uma

    variedade de fontes no seu sistema. Portanto, o Linux originalmente se tornou popular em parte

    devido ao esforo para que as fontes GPL ou outras favoritas de todos rodassem no Linux.

    Distribuies

    O sistema operacional completo (GNU/Linux) considerado uma Distribuio Linux. uma

    coleo de softwares livres (e s vezes no-livres) criados por indivduos, grupos e organizaes ao redor

    do mundo, e tendo o kernel como seu ncleo. Atualmente, companhias como a Red Hat, a SuSE,a

    MandrakeSoft ou a Conectiva, bem como projetos de comunidades com a Debian ou a Gentoo,

    compilam o software e fornecem um sistema completo, pronto para instalao e uso. Alm disso, h

    projetos pessoais como o de Patrick Volkerding que fornece uma distribuio Linux, a Slackware e

    Carlos E. Morinoto que lanou a distribuio chamada Kurumin. Est ltima roda em CD, bastando

    as conguraes do computador aceitarem o boot pelo drive do CD.

    8

  • Captulo 2. Introduo ao Linux 2.1. Aspectos bsicos do Linux

    Logo que Linus Torvalds passou a disponibilizar o Linux, ele apenas disponibilizava o Kernel com al-

    guns comandos bsicos. O prprio usurio devia arrumar os outros programas, compil-los e congur-

    los. Para evitar esse trabalho, comeou ento a disponibilizao de programas pr-compilados para

    o usurio apenas instalar. Foi assim que surgiu a MCC (Manchester Computer Centre), a primeira

    distribuio Linux, feita pela Universidade de Manchester. Algumas distribuies so maiores, outras

    menores, dependendo do nmero de aplicativos e sua nalidade. Algumas distribuies de tamanhos

    menores cabem em um disquete com 1,44 MB, outras precisam de vrios CDs. Todas elas tem seu

    pblico e sua nalidade, as pequenas (que ocupam poucos disquetes) so usadas para recuperao de

    sistemas danicados ou em monitoramentos de redes de computadores. O que faz a diferena como

    esto organizados e pr-congurados os aplicativos.

    2.1 Aspectos bsicos do Linux

    2.1.1 Startup e shutdown

    Correspondem respectivamente aos procedimentos de ligar e desligar o computador. O primeiro diz

    respeito basicamente ao fornecimento de energia para o funcionamento dos circuitos eletrnicos da

    mquina e no requer do usurio grandes precaues. Por outro lado o processo de Shutdown requer

    cuidado, uma vez que o desligamento inadequado do computador pode causar danos ao sistema ope-

    racional destruindo as tabelas internas de que ele necessita para funcionar. Quando o computador

    "trava", portanto, deslig-lo deve ser a ltima escolha. Uma opo iniciar outra sesso, vericar

    onde est o problema e encerrar a sesso travada com um comando apropriado.

    2.1.2 Abertura de seo no Linux

    Para usar o Linux preciso em primeiro lugar, que o usurio digite seu nome e sua senha, que so lidos

    e vericados pelo programa login. No UNIX um arquivo de senha usado para guardar informaes

    possuindo uma linha para cada usurio, contendo sua identicao alfabtica e numrica, sua senha

    criptografada, seu diretrio home, alm de outras informaes. Quando o usurio se identica, o

    programa login criptografa a senha que acabou de ser lida do terminal e a compara com a senha

    do arquivo de senhas para dar permisso ao usurio. Esse arquivo com as informaes dos usurios

    normalmente encontrado no arquivo: /etc/passwd. As senhas criptografadas cam no arquivo

    /etc/shadow.

    2.1.3 Usurio, superusurio (root), grupos, acesso, proteo

    O princpio da segurana do sistema de arquivo UNIX est baseado em usurios, grupos e outros

    usurios.

    Usurio : a pessoa que criou o arquivo. O dono do arquivo.

    Grupo : uma categoria que rene vrios usurios. Cada usurio pode fazer parte de um ou mais

    grupos, que permitem acesso a arquivos que pertencem ao grupo correspondente. Por padro, o

    grupo de usurios inicial o mesmo de seu nome de usurio. A identicao do grupo chamada

    de gid (group id).

    Outros : a categoria de usurios que no se encaixam como donos ou grupos do arquivo.

    Universidade Federal Fluminense 9 PET

    TELE)))

  • Captulo 2. Introduo ao Linux 2.2. Sistema de arquivos

    As permisses de acesso para donos, grupos e outros usurios so independentes uma das outras,

    permitindo assim um nvel de acesso diferenciado.

    A conta root tambm chamada de super usurio. Este um login que no possui restries de

    segurana. A conta root somente deve ser usada para fazer a administrao do sistema. Utilize a

    conta de usurio normal ao invs da conta root para operar seu sistema. Uma razo para evitar usar

    privilgios root devido facilidade de se cometer danos irreparveis ao sistema.

    2.1.4 Sesso, login, password, logout

    No Linux, a entrada no sistema feita com um login e um password, onde login o nome do usurio

    e password uma senha de segurana. Uma vez efetuado o login, o usurio entra em sua conta e

    aberta uma sesso onde se interage diretamente com o Shell. O logout (para nalizar a conta)

    efetuado atravs do comando 'exit'.

    2.1.5 Consoles virtuais

    Terminal (ou console) o teclado e tela conectados em seu computador. O Linux faz uso de sua

    caracterstica multi-usurio usando principalmente "terminais virtuais". Um terminal virtual uma

    segunda sesso de trabalho completamente independente de outras que pode ser acessado no com-

    putador local ou remotamente via telnet, rsh, rlogin, etc.

    No Linux, em modo texto, voc pode acessar outros terminais virtuais segurando a tecla

    e pressionando a . Cada tecla de funo corresponde a um nmero de terminal do 1 ao 6

    (o stimo usado por padro pelo ambiente grco X). O Linux possui mais de 63 terminais virtuais,

    mas apenas 6 esto disponveis inicialmente por motivos de economia de memria RAM. Se estiver

    usando o modo grco, voc deve segurar + enquanto pressiona uma tecla de

    a .

    Um exemplo prtico: se voc estiver usando o sistema no Terminal 1 com um login qualquer e

    desejar entrar como root para instalar algum programa s abrir um terminal virtual e realizar a

    tarefa desejada.

    2.2 Sistema de arquivos

    Arquivos so centrais para o UNIX de uma maneira no encontrada em outros sistemas operacionais.

    Comandos so arquivos executveis, usualmente encontrados em locais previsveis na rvore de di-

    retrios. Privilgios do sistema e permisses so controlados em grande parte atravs de arquivos.

    Dispositivos I/O e arquivos I/O no so distinguidos nos nveis mais altos. At mesmo a comuni-

    cao entre processos ocorre atravs de entidades similares a arquivos. Toda a segurana do sistema

    depende, em grande parte, da combinao entre a propriedade e protees setadas em seus arquivos

    e suas contas de usurios.

    2.2.1 Sistema hierrquico, rvore de diretrios, montagem de ramicaes

    O UNIX tem uma organizao de diretrios hierrquica em formato conhecido como lesystem. A

    base desta rvore um diretrio chamado `root directory `. Em sistemas UNIX, todo espao em disco

    disponvel combinado em uma nica rvore de diretrio abaixo do /, sendo que o local fsico onde

    um arquivo reside no faz parte da especicao do UNIX.

    Universidade Federal Fluminense 10 PET

    TELE)))

  • Captulo 2. Introduo ao Linux 2.2. Sistema de arquivos

    2.2.2 Tipos bsicos de arquivos: plain les, directory

    Os arquivos so onde os dados esto gravados. Um arquivo pode conter um texto, uma msica,

    programa, etc. Todo sistema UNIX reconhece pelo menos trs tipos de arquivos:

    Arquivos comuns: Usados para armazenar dados. Os usurios podem acrescentar dadosdiretamente em arquivos comuns, como, por exemplo, atravs de um editor. Os programas

    executveis tambm so guardados como arquivos comuns.

    Arquivos de diretrio: Um arquivo de diretrio contm uma lista de arquivos. Cada inserona lista consiste em duas partes: o nome do arquivo e um ponteiro para o arquivo real em disco.

    Por outro lado, os diretrios se comportam exatamente como arquivos comuns, exceto pelo fato

    de que alguns comandos usados para manipulao de arquivos comuns no funcionarem para

    arquivos de diretrio.

    Arquivos especiais: Estes arquivos so usados para fazer referncia a dispositivos fsicos comoos terminais, as impressoras, os discos. Eles so lidos e gravados como arquivos comuns, mas

    tais associaes causam a ativao do dispositivo fsico ligado a ele.

    O Linux case sensitive, ou seja, ele diferencia letras maisculas e minsculas nos arquivos. O

    diretrio, como qualquer outro arquivo, tambm case sensitive. Em um mesmo diretrio, no podem

    existir dois arquivos com o mesmo nome ou um arquivo com mesmo nome de um subdiretrio. Os

    diretrios no Linux so especicados por uma "/".

    OBS: Estamos habituados a ver os nomes de arquivos como sendo: nome.ext, onde ext a extenso

    do tipo de arquivo, por exemplo .txt, .html, .doc. Porm, no Linux os nomes no precisam seguir

    essa regra. Os nomes podem podem ser formados por vrias extenses, como: lista.ord.txt,

    nomes.maius.classe, livros.meu.ord.txt.

    O Linux organiza seu lesystem atravs de inodes. Inodes so estruturas de dados em disco que

    descrevem e armazenam os atributos do arquivo, incluindo sua localizao. Campos de um inode: user,

    group, tipo do arquivo, tempo de criao, acesso, modo (modicao), nmero de links, tamanho e

    endereo no disco.

    Existem mecanismos que permitem que vrios lenames reram-se a um nico arquivo no disco.

    Esses mecanismos so os links. Existem dois tipos de links : hard link (ou simblico) ou soft link.

    hard link : associa dois ou mais lenames como mesmo inode. Os hard links compartilham omesmo bloco de dados embora funcionando como entradas de diretrio independentes.

    soft link : estes so pointers les que apontam para outro lename no lesystem.

    2.2.3 Permisses para acesso a arquivos

    O sistema UNIX fornece um meio fcil de controlar o acesso que os usurios do sistema possam ter

    aos trs tipos de arquivos. Isso feito para permitir ou restringir o acesso a arquivos importantes do

    sistema e para garantir a privacidade de cada usurio que possua uma conta no sistema. O sistema

    diferencia trs classes de usurios. Primeiro, todo arquivo possui um dono, um proprietrio, designado

    no sistema por user . O proprietrio tem controle total sobre a restrio ou permisso de acesso ao

    arquivo a qualquer hora. Alm da posse individual do arquivo, possvel que um ou mais usurios do

    sistema possuam o arquivo coletivamente, em um tipo de propriedade de grupo. O usurio que no for

    proprietrio do arquivo pode ter acesso a ele caso pertena ao grupo de usurios que tem permisso

    Universidade Federal Fluminense 11 PET

    TELE)))

  • Captulo 2. Introduo ao Linux 2.2. Sistema de arquivos

    para isso. Porm esse usurio no pode restringir ou permitir o acesso ao arquivo. Os usurios que

    no so nem proprietrios nem pertenam a um grupo que tenha acesso ao arquivo formam a ltima

    categoria, conhecida simplesmente como "outros".

    Proprietrio (designado por u, de user): quem criou o arquivo. Grupo (designado por g, de group): o grupo formado por um ou mais usurios que podemter acesso ao arquivo.

    Outros (designado por o, de others): refere-se a qualquer outro usurio do sistema.

    O sistema Unix permite ainda trs modos de acesso aos arquivos: leitura, escrita e execuo. Os

    trs modos de acesso so relativamente lgicos, porm o signicado desses trs modos de acesso

    diferente para arquivos de diretrios. O usurio com permisso de leitura pode ler o contedo do

    diretrio, por exemplo com o comando "ls". O usurio com permisso de escrita pode usar alguns

    programas privilegiados para gravar em um diretrio. A permisso de gravao necessria para criar

    ou remover arquivos do diretrio.

    Um usurio deve ter permisso de execuo em um diretrio para ter acesso aos arquivos ali

    alocados. Se um usurio tem permisso para leitura e escrita em um arquivo comum que est listado

    em um diretrio mas no tem permisso de execuo para aquele diretrio, o sistema no o deixa ler

    nem gravar o contedo daquele arquivo comum.

    Assim temos:

    Figura 2.1: Permisses de Arquivos

    Um arquivo que tiver suas permisses como as do exemplo acima poderia ser lido, escrito ou

    executado pelo dono ou por qualquer outra pessoa. J no exemplo abaixo, o dono poder ler e

    escrever, os outros s podero ler e ningum poder execut-lo.

    User Group Others

    r w - r - - r - -

    Para alterar essas permisses, utliza-se o comando chmod. Veja explicao do uso desse comando

    no prximo captulo.

    2.2.4 Diretrios

    Chamamos de rvore de diretrios organizao dos arquivos de diretrios, fazendo uma aluso s

    suas ramicaes, semelhantes aos galhos de uma rvore. Damos o nome de "raiz" ao diretrio

    principal que contm todos os outros subdiretrios.

    Diretrio corrente o diretrio em que o usurio se encontra naquele determinado momento.

    Universidade Federal Fluminense 12 PET

    TELE)))

  • Captulo 2. Introduo ao Linux 2.2. Sistema de arquivos

    Diretrio "home" onde a conta do usurio est registrada. Diretrio ascendente o diretrio onde determinado arquivo ou diretrio est contido. Diretrio descendente o diretrio contido em outro diretrio. O "path" consiste na lista de diretrios que precisa ser atravessada, desde o diretrio raiz at oarquivo, com barras separando os componentes. Path absoluto o caminho completo desde a raiz

    at o arquivo. Se o caminho completo desde a raiz at o arquivo for /UFF/pet/cursos/Linux e o

    diretrio de trabalho do usurio fosse pet no momento, bastaria que ele digitasse cursos/Linux.

    Este nome chamado caminho relativo.

    Figura 2.2: Padro dos principais diretrios do UNIX.

    Os diretrios principais, alm de outros, com seu contedo esto listados abaixo:

    /etc - Arquivos para administrao do sistema.

    /bin - Comandos UNIX mais comumente usados.

    /usr - Todas as contas de usurios e alguns comandos.

    /dev - Arquivos de dispositivos de entrada e sada.

    /lib - Arquivos bibliotecas para programao em C.

    /tmp - Armazenamento de arquivos temporrios.

    /mmt - Montagem de discos e perifricos.

    /sbin - Diretrio usado na inicializao do sistema. Demais pacotes para a administrao do

    sistema devem car em /usr/sbin ou /usr/local/sbin.

    /var - Diretrio que contm arquivos variveis, tais como spool (las de e-mail, crontab, impresso)

    e logs. Este diretrio existe para que os arquivos que necessitem ser modicados quem nele e no no

    /usr.

    /home - Contm os diretrios pessoais dos usurios.

    /root - o diretrio que contm os arquivos do administrador (seu home). Porm alguns sistemas

    Unix-like utilizam /home/root.

    Universidade Federal Fluminense 13 PET

    TELE)))

  • Captulo 2. Introduo ao Linux 2.3. Processos

    /proc - Diretrio virtual onde o kernel armazena suas informaes.

    /boot - Contm a imagem do kernel e tudo o que for necessrio ao processo de boot, menos con-

    guraes.

    2.3 Processos

    2.3.1 Processos e subprocessos

    Um processo um simples programa que est rodando em seu espao de endereamento virtual prprio.

    distinto de um 'job' ou comando, que, em sistemas UNIX, pode ser composto de muitos processos

    realizando uma nica tarefa. Comandos simples como `ls' so executados como simples processos. Um

    comando composto, contendo pipes, ir executar um processo por segmento pipe. Para acompanhar o

    status de cada processo o sistema cria um PID (Process ID) para cada processo aberto.

    Existem elementos chamados guias de controle de execuo que ajudam a controlar a execuo do

    programa.

    Fork : a chamada de sistema cuja execuo cria um processo (lho) idntico quele que o chamou.

    Processo pai : processo que gera um novo processo.

    Processo lho : Processo gerado pelo processo pai.

    Pid (Process ID) : um nmero que identica unicamente cada processo e usado para referir-se

    a ele.

    PPid (Parent Process ID) : o Pid do processo pai.

    2.3.2 Controle de processos

    Aqui sero apresentados alguns tpicos que permitiro ao usurio realizar algumas tarefas interessantes

    como:

    executar mais de um processo ao mesmo tempo; rodar um processo em baixa prioridade.Se voc estiver usando um programa que ir demorar muito para terminar e voc quer comear

    a trabalhar em outra tarefa voc pode chamar seu programa para ser executado no que conhecido

    como segundo plano (background). Isso pode ser feito colocando no nal da linha de comando o

    smbolo `&'. Pode-se tambm, enquanto o programa est sendo executado, teclar CTRL + Z. Com isso

    o comando ser suspenso e o sistema largar o prompt.

    Chamamos de foreground o ato de fazer com que um programa rode em primeiro plano. Neste

    modo os processos podem interagir com os usurios e exibem a execuo no monitor.

    Quando o comando nice colocado antes de uma linha de comando, o tempo dedicado pela CPU

    para execuo daquela tarefa reduzido, fazendo com que ele no atrase tanto outros processos mais

    importantes. Ou seja, a prioridade daquele processo reduzida. Esse comando deve ser usado quando

    h outros processos mais importantes rodando no sistema.

    Universidade Federal Fluminense 14 PET

    TELE)))

  • Captulo 2. Introduo ao Linux 2.3. Processos

    Outros comandos relacionados a processos:

    jobs lista os jobs em background.

    fg [job] leva o job para foreground.

    bg [job] leva o job para background.

    ps mostra os processos que esto sendo rodados no computador.

    top mostra continuamente o status de cada processo que est rodando no computador.

    kill [Pid] encerra o processo.

    O exemplo abaixo ilustra o uso de alguns desses comandos. Existe o seguinte script rodando no

    sistema:

    #!/bin/bash

    #Aviso

    sleep 10m

    echo T na Hora de Sair!!

    date

    Este programa emite um aviso aps 10 minutos de ter sido colocado para rodar, em seguida mostra

    a data e a hora. No teria sentido deixar esse programa rodando travando o terminal enquanto voc

    poderia estar fazendo outras coisas, ento ele pode ser colocado em background para liberar o terminal.

    Aps 10 minuntos a mensagem aparece. O programa se chama trava.sh.

    $ ./trava.sh &

    [1] 2906

    $ jobs

    [1]+ Running ./trava.sh &

    $ ps

    PID TTY TIME CMD

    1916 ttyp1 00:00:00 bash

    2906 ttyp1 00:00:00 trava.sh

    2907 ttyp1 00:00:00 sleep

    2909 ttyp1 00:00:00 ps

    $

    $ fg 1

    ./trava.sh

    aqui foi digitado: ctrl + z

    [1]+ Stopped ./trava.sh

    $ jobs

    [1]+ Stopped ./trava.sh

    $ jobs

    Universidade Federal Fluminense 15 PET

    TELE)))

  • Captulo 2. Introduo ao Linux 2.3. Processos

    [1]+ Stopped ./trava.sh

    $ bg 1

    [1]+ ./trava.sh &

    $ jobs

    [1]+ Running ./trava.sh &

    $ ... comandos diversos do usurio enquanto ele espera a mensagem aparecer ...

    $ T na Hora de Sair!!

    Ter Jan 10 16:01:51 BRST 2006

    aqui foi digitado: enter

    [1]+ Done ./trava.sh

    $ jobs

    $ ps

    PID TTY TIME CMD

    1916 ttyp1 00:00:00 bash

    2935 ttyp1 00:00:00 ps

    $

    Como pode ser visto, o programa foi executado em background. O comando jobs mostrou o job

    trava.sh em todos os seus estados: rodando, suspenso e executando, assim como fez o comando ps.

    Universidade Federal Fluminense 16 PET

    TELE)))

  • Captulo 3

    Comandos

    Os sistemas operacionais UNIX e os que so derivados do UNIX (FreeBSD, Linux, etc) possuem muitos

    comandos e aplicativos. Em geral a sintaxe de uma comando da seguinte forma:

    $ comando -opes argumentos

    Podem ser inseridos comandos seguidos na mesma linha separando-os por ponto-vrgula.

    Ex: $ cd;pwd

    3.1 Comandos de ajuda

    As distribuies UNIX j vem com manuais incorporados ao sistema. Esses manuais de comandos se

    localizam no diretrio /usr/man. A utilizao da pgina de manual bem simples, digite, por exemplo:

    Sintaxe: $ man [opo]

    Ex:

    $ man ls exibe o manual do comando `ls'

    Um modo de procura por palavra-chave pode ser usado para encontrar o nome do comando que

    execute determinada tarefa. Para isso digite:

    $ man -k palavra-chave

    Outros comandos so: info, whatis, apropos. Consulte o manual para informaes sobre esses

    comandos. .

    apropos : procura por comandos/programas pela descrio

    Sintaxe: apropos

    til quando precisamos fazer alguma coisa mas no sabemos qual comando usar. Ele faz sua

    pesquisa nas pginas de manual e suas descries e lista os comandos/programas que atendem

    consulta.

    17

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    3.2 Comandos e utilitrios bsicos

    Os comandos sero exemplicados supondo haver inicialmente um diretrio chamado teste con-

    tendo os seguinte arquivos: arqu1.txt, arqu2.txt, cap2.tex, parI.tex, parII.tex, parIII.tex,

    imag.jpg, page.html.

    3.2.1 Comandos de manipulao de arquivos

    cat concatena e/ou exibe arquivos na sada default.

    Tambm pode exibir o contedo de vrios arquivos em sucesso.

    Sintaxe: cat [opo]

    As principais opes so:

    -n Numera as linhas.

    -E Exibe $ ao nal de cada linha.

    -A Exibe todo o contedo incluindo caracteres especiais, como acentos e espaos na forma de

    cdigos.

    Ex: Mostra o contedo do arquivo com as linhas numeradas.

    $ cat -n arqu1.txt

    1

    2 "Software Livre" uma questo

    3 de liberdade, no de preo.

    4 Para entender o conceito,

    5 voc deve pensar em

    6 "liberdade de expresso",

    7 no em "cerveja grtis".

    8

    Ex: Concatena na sada padro o contedo dos dois arquivos.

    $ cat arqu1.txt arqu2.txt

    "Software Livre" uma questo

    de liberdade, no de preo.

    Para entender o conceito,

    voc deve pensar em

    "liberdade de expresso",

    no em "cerveja grtis".

    Universidade Federal Fluminense 18 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    => A liberdade de executar o programa, para qualquer

    propsito (liberdade no. 0)

    => A liberdade de estudar como o programa funciona,

    e adapt-lo para as suas necessidades

    (liberdade no. 1). Aceso ao cdigo-fonte

    um pr-requisito para esta liberdade.

    => A liberdade de redistribuir cpias de modo

    que voc possa ajudar ao seu prximo

    (liberdade no. 2).

    => A liberdade de aperfeioar o programa e

    liberar os seus aperfeioamentos, de modo

    que toda a comunidade se beneficie.

    (liberdade no. 3). Acesso ao cdigo-fonte

    um pr-requisito para esta liberdade.

    tac - Semelhante ao comando cat, porm exibe o contedo em ordem reversa.

    Sintaxe: tac [opo]

    file - Identica o contedo e mostra na tela o tipo de arquivo.

    realizado um exame dos primeiros bytes do arquivo, seguido de uma comparao com as regras

    denidas nos arquivos:

    /usr/share/misc/magic ou /etc/magic

    O segundo arquivo, /etc/magic, pode ser editado pelo prprio usurio para identicar seus

    arquivos.

    Ex:

    $ file arqu1.txt

    arqu1.txt: ISO-8859 text

    $ file image.jpg

    image.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI),

    100 x 100 $ file h264 h264: directory

    Pelo exemplo acima, vemos que os tipos de arquivos foram: text, image e directory. Alm desses

    podem haver: executable, (para arquivos executveis resultado da compilao de um programa),

    data (contendo dados geralmente no imprimveis).

    Veja mais opes no manual do sistema.

    cp (copy) Copia arquivos ou diretrios.

    Sintaxe: cp [opes]

    Onde:

    Universidade Federal Fluminense 19 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    arqfont o arquivo a ser copiado;

    arqdest o nome da cpia a ser criada. O nome do arqdest deve ser diferente do arqfont

    caso se esteja fazendo uma cpia para o mesmo diretrio. Se o arquivo destino no existir,

    ele criado com o nome arqdest. E caso exista e no seja um diretrio, seu contedo ser

    sobrescrito.

    As opes podem ser:

    -i Pede conrmao para copiar o arquivo.

    -p Mantm os dados, como por exemplo permisses e datas do arquivo original.

    -r Copia os arquivos e diretrios recursivamente.

    Ex:

    $ cp arqu1.txt novoarq.txt

    $ ls -l

    total 44

    -rw-r--r-- 1 kurumin kurumin 395 2005-03-08 21:46 apend.tex

    -rw-r--r-- 1 kurumin kurumin 167 2005-03-08 22:53 arqu1.txt

    -rw-r--r-- 1 kurumin kurumin 606 2005-03-08 22:43 arqu2.txt

    -rw-r--r-- 1 kurumin kurumin 0 2005-03-08 20:09 cap2.tex

    -rwxrwxrwx 1 kurumin kurumin 5684 2005-03-05 19:29 imag.jpg

    -rw-r--r-- 1 kurumin kurumin 167 2005-03-08 23:23 novoarq.txt

    -rw-r--r-- 1 kurumin kurumin 5740 2005-03-08 20:08 page.html

    -rw-r--r-- 1 kurumin kurumin 113 2005-03-08 21:42 parIII.tex

    -rw-r--r-- 1 kurumin kurumin 125 2005-03-08 21:41 parII.tex

    -rw-r--r-- 1 kurumin kurumin 214 2005-03-08 21:40 parI.tex

    Como pode ser visto no exemplo, foi criado um arquivo chamado novoarq.txt

    rm (remove) Remove arquivos ou diretrios

    Sintaxe: rm [opes]

    Onde cada arquivo separado por espaos em branco.

    Algumas das opes podem ser:

    -f Remove todos os arquivos mesmo no tendo permisso de escrita sem pedir conrmao

    do usurio.

    -i Remove o arquivo interativamente, ou seja, pede a conrmao do usurio.

    Universidade Federal Fluminense 20 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    -r Remove um diretrio e todo o seu contedo recursivamente.

    Obs: Cuidado ao apagar os arquivos, pois uma vez usado o comando rm no possvel recuperar

    o arquivo.

    Ex: Supondo o mesmo diretrio exemplo com os arquivos descritos. Agora vamos apagar o

    arquivo cap2.tex.

    $ rm -i cap2.tex

    rm: remove arquivo comum `cap2.tex'? y

    $ ls

    apend.tex arqu2.txt novoarq.txt parIII.tex parI.tex

    arqu1.txt imag.jpg page.html parII.tex

    $

    Foi pedida conrmao para a excluso do arquivo, a letra y foi digitada para conrmar, em

    seguida foi usado o comando ls para listar os arquivos. Como pode ser visto, o arquivo foi

    apagado.

    mv (move) Move ou renomeia arquivos

    Sintaxe: mv [opcao]

    Remove o arquivo da origem para destino ou renomeia arquivo origem para arquivo destino.

    A opo -i pede conrmao antes de mover um arquivo que ir sobrescrever. Exemplo:

    $mv imag.jpg nova.jpg Renomeia o arquivo imag.jpg para nova.jpg.

    $mv list.tex ~/teste/ Move o arquivo list.tex para o diretrio ~/teste/.

    $ls

    apend.tex arqu2.txt nova.jpg page.html parII.tex

    arqu1.txt list.tex novoarq.txt parIII.tex parI.tex

    ln Cria links entre arquivos.

    Sintaxe: ln [opo] arquivo1 arquivo2

    Sem opo, o comando ln d um outro nome para um mesmo arquivo na memria. Ou seja,

    um mesmo arquivo pode ser referenciado de duas maneiras diferentes.

    J usando a opo -s criado um link simblico, ou seja, um arquivo que aponta para a rea

    onde est o arquivo original.

    Ex: Tendo o arquivo chamado arq2.txt, ser criado um link de hardware e simblico para

    ele. Observe a diferena no tamanho dos arquivos criados. O link simblico apenas um

    "atalho"para o arquivo original, por isso seu tamanho menor. Atente tambm para o fato do

    uso do comando ln sem opo no igual ao comando cp como pode parecer, pois os arquivos

    continuam interligados. A modicao de um implica na modicao do outro.

    Universidade Federal Fluminense 21 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    $ ls -l

    total 4

    -rw-r--r-- 1 kurumin kurumin 27 2006-02-03 10:36 original.txt

    $ ln original.txt hard.txt

    $ ls -l

    total 8

    -rw-r--r-- 2 kurumin kurumin 27 2006-02-03 10:36 hard.txt

    -rw-r--r-- 2 kurumin kurumin 27 2006-02-03 10:36 original.txt

    $ cat hard.txt

    Esse o arquivo original

    $ cat >> hard.txt

    Primeira modificao

    $ cat hard.txt

    Esse o arquivo original

    Primeira modificao

    $ cat original.txt

    Esse o arquivo original

    Primeira modificao

    $ ls -l

    total 8

    -rw-r--r-- 2 kurumin kurumin 49 2006-02-03 10:38 hard.txt

    -rw-r--r-- 2 kurumin kurumin 49 2006-02-03 10:38 original.txt

    $ ln -s original.txt simb.txt

    $ ls -l

    total 9

    -rw-r--r-- 2 kurumin kurumin 49 2006-02-03 10:38 hard.txt

    -rw-r--r-- 2 kurumin kurumin 49 2006-02-03 10:38 original.txt

    lrwxrwxrwx 1 kurumin kurumin 12 2006-02-03 10:39 simb.txt -> original.txt

    $ cat simb.txt

    Esse o arquivo original

    Primeira modificao

    $ cat >> simb.txt

    Segunda modificao

    $ cat simb.txt

    Esse o arquivo original

    Primeira modificao

    Universidade Federal Fluminense 22 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    Segunda modificao

    $ cat original.txt

    Esse o arquivo original

    Primeira modificao

    Segunda modificao

    $

    diff Exibe a diferena entre dois arquivos.

    Sintaxe: di [opo] arquivo1 arquivo2

    Algumas das opes so:

    -b Ignora espaos e caracteres de tabulao.

    -i No diferencia maiscula de minscula.

    -r Processa subdiretrios quando diretrios so comparados.

    Ex:

    $ cat parI.tex

    parte um

    esta linha esta igual nos dois

    mas a linha seguinte no.

    $ cat parII.tex

    parte dois

    esta linha esta igual nos dois

    porem a linha seguinte no

    $ diff parI.tex parII.tex

    1c1

    < parte um

    ---

    > parte dois

    3c3

    < mas a linha seguinte no.

    ---

    > porem a linha seguinte no

    $

    Universidade Federal Fluminense 23 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    chmod Altera a permisso de acesso aos arquivos.

    Sintaxe: chmod [opo]

    Algumas das opes podem ser:

    -R Se o arquivo for um diretrio, o comando muda recursivamente o modo de acesso a todos

    os seus arquivos e subdiretrios.

    -c Mostra o resultado do uso do comando aps seu uso.

    permisses composto pela classe do usurio (u para dono, g para grupo, o para outros tipos e

    a todos), pelos caracteres operadores (+ para acrescentar permisses, - para retirar permisses

    e = para retirar todas as permisses) e pelos caracteres de permisso (r para leitura, w para

    escrita e x para execuo).

    Exemplos:

    $ ls -l

    --wx-wx-wx 1 ze ze 5684 2005-03-05 19:29 nova.jpg

    $ chmod -c a+rwx

    modo de `nova.jpg' mudado para 0777 (rwxrwxrwx)

    $ chmod -c og-x nova.jpg

    modo de `nova.jpg' mudado para 0766 (rwxrw-rw-)

    A mudana de permisso tambm pode ser feita colocando o cdigo rwx na forma de nmeros

    octais. Abaixo segue a equivalncia do cdigo nas letras rwx pra nmeros.

    - - - 0- - x 1- w - 2- w x 3r - - 4r - x 5r w - 6r w x 7

    Ex: Supondo que o arquivo parI.tex.

    $ ls -l parI.tex

    -r--r--r-- 1 kurumin kurumin 10 2005-03-15 15:18 parI.tex

    $ chmod 754 parI.tex

    $ ls -l parI.tex

    -rwxr-xr-- 1 kurumin kurumin 10 2005-03-15 15:18 parI.tex

    Universidade Federal Fluminense 24 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    Comandos para manipulao de diretrios

    ls Lista o contedo de um diretrio e informaes relativas aos arquivos.

    Deriva da palavra `list `; quando se digita `ls [nome do arquivo]`, o programa procura o ar-

    quivo desejado dentro do diretrio corrente.

    Ex:

    $ ls

    apend.tex arqu2.txt imag.jpg parIII.tex parI.tex

    arqu1.txt cap2.tex page.html parII.tex

    O ls sem argumentos mostra apenas os nomes dos arquivos.

    Sintaxe: ls [opo] [arquivo]

    Os parmetros opcionais podem ser:

    -l lista ordenada pelo nome e em formato longo

    -F mostra barra de diretrios

    -R mostra o contedo de todos os subdiretrios

    -x lista o resultado em vrias colunas na horizontal

    -a lista todos os arquivos, inclusive os ocultos

    -i exibe o nmero do inode na primeira coluna

    -t lista em ordem cronolgica em funo da hora da ltima modicao

    -1 lista somente os nomes dos arquivos ordenados.

    Obs: podem ser usados vrios parmetros opcionais em conjunto.

    Ex:

    $ ls -la

    total 48

    drwxr-xr-x 2 ze ze 4096 2005-03-08 21:46 .

    drwxr-xr-x 31 ze ze 4096 2005-03-08 21:59 ..

    -rw-r--r-- 1 ze ze 395 2005-03-08 21:46 apend.tex

    -rw-r--r-- 1 ze ze 159 2005-03-08 21:34 arqu1.txt

    Universidade Federal Fluminense 25 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    -rw-r--r-- 1 ze ze 1188 2005-03-08 21:36 arqu2.txt

    -rw-r--r-- 1 ze ze 0 2005-03-08 20:09 cap2.tex

    -rwxrwxrwx 1 ze ze 5684 2005-03-05 19:29 imag.jpg

    -rw-r--r-- 1 ze ze 5740 2005-03-08 20:08 page.html

    -rw-r--r-- 1 ze ze 113 2005-03-08 21:42 parIII.tex

    -rw-r--r-- 1 ze ze 125 2005-03-08 21:41 parII.tex

    -rw-r--r-- 1 ze ze 214 2005-03-08 21:40 parI.tex

    Segue abaixo a explicao do resultado do comando ls -la:

    -la a combinao dos parmetros l e a.

    total 48 o nmero de blocos ocupados pelos arquivos no diretrio. Em algumas verses o tamanho

    de cada bloco de 512 Bytes e em outras de 1K Byte.

    Primeiro Campo Exibe as permisses dos arquivos.

    Segundo Campo Exibe o nmero de ligaes dos arquivos.

    Terceiro Campo Exibe o proprietrio do arquivo.

    Quarto Campo Exibe o grupo do arquivo.

    Quinto Campo Exibe o tamanho do arquivo em Bytes.

    Sexto Campo Exibe a data e hora da ltima modicao do arquivo.

    Stimo Campo Exibe informao sobre o arquivo ou diretrio.

    pwd (Present Working Directory) : mostra o diretrio corrente segundo o percurso ab-

    soluto de localizao.

    Sintaxe: pwd

    $ pwd

    /home/ze/teste

    cd(change directory ) : Troca de diretrio corrente

    Sintaxe: cd

    Exemplo:

    $ cd / Vai para o diretrio raiz.

    $ cd .. Vai para o diretrio pai.

    $ cd Vai para o diretrio home do usurio.

    $ cd - Vai para o ltimo diretrio acessado.

    Ex: Suponha que o diretrio atual seja:

    Universidade Federal Fluminense 26 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    $ pwd

    /home/ze/teste

    Fazendo

    $ cd /usr/bin

    $ pwd

    /usr/bin

    Vale a pena testar as vrias opes deste comando, pois, conhecendo alguns atalhos, ele agiliza

    a navegao dentro do sistema. Veja a seo 3.3. Nela podem ser encontrados os caracteres

    especiais mais usados.

    mkdir : Cria diretrios

    Sintaxe: mkdir [opes]

    Exemplo: Ser criado um diretrio chamado teste

    $ ls

    curso

    notas

    artigos

    $ mkdir teste

    $ ls

    curso

    notas

    artigos

    teste

    rmdir : Remove diretrios vazios

    Sintaxe: rmdir

    Exemplo: O diretrio teste criado no exemplo anterior ser removido.

    $ rmdir teste

    $ ls

    urso

    notas

    artigos

    Universidade Federal Fluminense 27 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    Comando para manipulao de contas e usurios

    id : Mostra o nmero de identicao do usurio e dos grupos a que ele pertence.

    whoami : Mostra o nome do usurio.

    who : Mostra os usurios que esto utilizando os terminais.

    w : Mostra os usurios que esto utilizando os terminais com informaes adicionais.

    su : Troca o usurio.

    Esse comando usado para mudar o usurio no mesmo terminal. Se o comando for executado

    sem qualquer nome do usurio, o padro mudar o usurio para root.

    Ex:

    $ su

    Password:

    #

    $ su user

    Password:

    /home/user$

    sudo : Executa comandos como root.

    adduser : Adiciona um usurio ou grupo no sistema

    Sintaxe: adduser [opes]

    Por padro, quando um usurio adicionado, criado um grupo com o mesmo nome do usurio.

    addgroup : adiciona um novo grupo de usurios no sistema

    Sintaxe: addgroup [opes]

    passwd : Altera a senha do usurio

    Sintaxe: passwd [opes]

    Universidade Federal Fluminense 28 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    Se a opo -g for especicada a senha do grupo ser alterada.

    Obs: apenas o usurio root pode alterar a senha de outros usurios.

    newgrp : Altera a identicao de grupo do usurio

    Sintaxe: newgrp

    Comandos diversos

    alias : Cria um apelido para o comando e seus parmetros

    Sintaxe: alias =`'

    Exemplo: Ser criado um apelido para aprimorar o ls

    $ alias ls=`ls -al -color -F'

    $ ls

    RESULTADO

    Exemplo: Ser criado um apelido para montar a unidade de disquete e entrar na tela.

    $alias a=`mount -t /dev/fd0/mnt/floppy/ cd/mnt/floppy'

    cal : Imprime o calendrio para um determinado ms/ano

    Sintaxe: cal [ms] [ano]

    Exemplo:

    $cal 6 2000

    $cal 2000

    Algumas opes podem ser usadas atravs da sintaxe: cal [opo]

    -3 - Mostra o ms atual, o anterior e o seguinte.

    -y - Mostra o calendrio do ano inteiro.

    Veja o manual para outras opes.

    clear : Limpa o terminal

    Sintaxe: clear

    Quando o terminal estiver cheio de comandos j digitados ou de resultados de outros comandos,

    recomendvel utilizar o clear para aumentar o campo visual.

    Universidade Federal Fluminense 29 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    date : Mostra a data e a hora atuais do sistema

    Sintaxe: date

    Se digitarmos `date -u`, o comando ir mostrar o horrio de Greenwich.

    Conra o manual para ver como modicar a formatao de apresentao da data.

    Para modicar a hora, necessrio estar logado como root

    $ date mes/dia/hora/minuto/ano

    Ento para mudar a data atual para 25 de dezembro de 2020, s duas e meia da tarde, digite:

    $ date 122514302020

    df (disk free) : Mostra o espao livre no disco

    Sintaxe: df [opes] ,

    onde opes podem ser os parmetros listados abaixo:

    -a mostra o espao ocupado por todos os arquivos

    -b mostra o espao ocupado em bytes

    -c faz uma totalizao de todo o espao listado

    -D no conta links simblicos

    -k mostra o espao ocupado em kbytes

    -m mostra o espao ocupado em Mbytes

    -S no calcula o espao ocupado por subdiretrios

    du (disk usage) : Mostra o espao utilizado por arquivos e diretrios do diretrio atual

    Sintaxe: du [opes] ,

    onde opes podem ser os parmetros listados abaixo:

    -s relata apenas o nmero de blocos

    Universidade Federal Fluminense 30 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    -a informa o tamanho de cada arquivo

    -k lista o tamanho em Kbytes

    echo : Escreve no terminal

    Sintaxe: echo [string]

    Exemplos do uso do comando echo sero vistos na seo 4.4.

    find : Procura arquivos por nome

    Sintaxe: find [opes]

    Exemplos:

    $find / -name prova ( procura no diretrio raiz e subdiretrios um arquivo chamado prova)

    $find / -name prova -maxdepth 3 (procura no diretrio raiz e subdiretrios, at o 3 nvel,um arquivo chamado prova)

    $find / -mmin 10'' (procura no diretrio raiz e subdiretrios um arquivo modicado h 10

    minutos atrs)

    $find / -links 4'' (procura no diretrio raiz e subdiretrios, todos os arquivos que possuem

    4 links como referncia)

    sync : Grava os dados do cache de disco na memria RAM para os disco rgidos e

    exveis

    Sintaxe: sync

    O cache um mecanismo de acelerao que permite que um arquivo seja armazenado na memria

    ao invs de ser imediatamente gravado no disco. Quando o sistema estiver ocioso, o arquivo

    gravado para o disco. O Linux pode usar toda memria RAM disponvel para o cache de

    programas acelerando seu desempenho de leitura/gravao. O uso do sync til em disquetes

    quando gravamos um programa e precisamos que os dados sejam gravados imediatamente para

    retirar o disquete da unidade.

    Opes de compactao

    O Linux possui programas de armazenamento de arquivos que podem ou no compactar os mesmos.

    tar : armazena vrios arquivos e diretrios dentro de um nico arquivo (*.tar) ou dis-

    positivo

    Sintaxe: tar [opes] ,

    As opes podem ser os parmetros listados abaixo:

    Universidade Federal Fluminense 31 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    -c cria um novo arquivo tar

    -h armazena os arquivos apontados por links, ao invs dos links

    -r inclui arquivos ao nal (append) de um arquivo tar

    -t lista o contedo de um arquivo tar

    -u somente inclui arquivos que no esto presentes ou so mais novos do que o arquivo tar

    -w pede conrmao para cada ao a ser tomada

    -v mostra na tela o que est sendo feito

    -x extrai arquivos armazenados em um arquivo tar

    $ ls

    arq1.txt arq2.txt hard.txt original.txt simb.txt

    $ tar -cvf junto.tar arq*.txt

    arq1.txt

    arq2.txt

    $ ls

    arq1.txt arq2.txt hard.txt junto.tar original.txt simb.txt

    $

    A m de reduzir o espao ocupado no disco, o uso da compactao deste arquivo se torna til e

    eciente. Para esta tarefa usamos o comando gzip.

    gzip : compactador de arquivos mais usado atualmente em sistemas UNIX

    Sintaxe: gzip [opes] ,

    onde opes podem ser os parmetros listados abaixo:

    -c concatena sada de dados

    -h lista todas as opes

    -l lista os nomes no contedo do arquivo .gz

    -r exibe em modo recursivo

    -t usado para testar arquivos

    -v modo verbose, exibe informaes sobre compactao.

    $ ls

    arq1.txt arq2.txt hard.txt junto.tar original.txt simb.txt

    $ gzip -v junto.tar

    junto.tar: 97.6% -- replaced with junto.tar.gz

    $ ls

    arq1.txt arq2.txt hard.txt junto.tar.gz original.txt simb.txt

    Universidade Federal Fluminense 32 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    gunzip : descompactador de arquivos .gz

    Sintaxe: gunzip [opes]

    $ ls

    arq1.txt arq2.txt hard.txt junto.tar.gz original.txt simb.txt

    $ gunzip junto.tar.gz

    $ ls

    arq1.txt arq2.txt hard.txt junto.tar original.txt simb.txt

    $

    Existem outras opes de compactadores em sistemas UNIX. Cada um dene um arquivo com

    uma extenso diferente, como os exemplos:

    Compactador Descompactador Extenso

    gzip gunzip .gz

    pack unpack .z

    compress uncompress .Z

    bzip2 unbzip2 .bz2

    zip uzip .zip

    Tabela 3.1: Compactadores

    3.2.2 Redirecionamento de entrada e sada

    O UNIX trata todos os perifricos conectados ao sistema como arquivos. O teclado, por exemplo,

    um "arquivo"de entrada; o vdeo um arquivo de sada, assim como a impressora.

    O arquivo padro de sada (stdout) o dispositivo no qual o UNIX deseja os resultados por

    default. Esse dispositivo geralmente o vdeo. Praticamente todos os programas componentes do

    sistema que apresentam dados, o fazem como stdout, como por exemplo, o comando ls. Assim como

    o dispositivo padro de entrada (stdin) de dados geralmente o teclado. H, tambm, uma sada

    padro para os erros (stderr).

    Redirecionando sada padro para um arquivo

    Utilizando o smbolo > podemos redirecionar a sada que seria para o vdeo para, por exemplo, um

    arquivo em disco.

    Abaixo, a sada do comando date gravada para um arquivo de nome datas.

    Exemplo:

    $ date > datas

    $ cat datas

    Universidade Federal Fluminense 33 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    Qui Mar 17 21:20:06 BRT 2005

    Acrescentando dados em um arquivo

    O operador > cria um novo arquivo, caso ele no exista. Se ele j existe, o arquivo sobreposto.

    Usando , a sada acrescentada ao nal do arquivo se o mesmo j existe ou criado um novo arquivo

    caso ele no exista.

    Exemplo:

    $date > datas

    $cat datas

    Qui Mar 17 21:22:31 BRT 2005

    $echo FIM DO ARQUIVO >> datas

    $ cat datas

    Qui Mar 17 21:22:31 BRT 2005 FIM DO ARQUIVO

    No caso de erros, deve-se utilizar os smbolos 2> ou 2 para direcionar o erro da sada padro

    para um determinado arquivo.

    Exemplo:

    $ write 2> erros

    $ cat erros

    write: write: you have write permission turned off.

    $ cd f 2>> erros

    $ cat erros

    write: write: you have write permission turned off.

    bash: cd: f: No such file or directory

    $

    Da mesma forma que a sada de um comando pode ser direcionada para um arquivo, um arquivo

    pode ser direcionado como entrada de um comando. Isso feito utilizando o smbolo < . Na prxima

    seo teremos um exemplo de como fazer isso.

    Tambm possvel fazer redirecionamento de entrada utilizando o sinal . Este smbolo indica ao

    shell que o escopo de um comando comea na linha seguinte e termina quando ele encontrar o label

    que o segue. Este comando muito usado para exibir um texto em vrias linhas, sem precisar de car

    usando o comando echo para cada linha.

    Exemplo:

    Universidade Federal Fluminense 34 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    $ cat 2 - Opo DOIS

    > 3 - Opo TRS

    > FIM

    1 - Opo UM

    2 - Opo DOIS

    3 - Opo TRS

    $

    Organizando dados em um arquivo

    O "sort" um programa que classica alfabeticamente as linhas de um arquivo texto. Ele obtm sua

    entrada em stdin e apresenta a sada em stdout. Se quisermos ordenar os nomes contidos no arquivo

    nomes utilizando sort, podemos fazer:

    $cat nomes

    Deri

    Cod

    Pato

    Brunaldo

    KK

    $

    $sort < nomes

    Brunaldo

    Cod

    Deri

    KK

    Pato

    $

    A sada poderia ser redirecionada ao mesmo tempo para um arquivo, como mostrado abaixo:

    $sort < nomes > nomesord

    $cat nomesord

    Brunaldo

    Cod

    Deri

    KK

    Pato

    $

    O sort leu o contedo do arquivo "nomes", classicou-os e a sada, que seria feita na tela, foi

    jogada para um novo arquivo chamado "nomesord". Um detalhe importante: os arquivos de entrada

    e sada devem ser diferentes, pois a primeira parte do comando a criao do arquivo de sada. Se

    este for igual ao de entrada, ele zerado.

    Universidade Federal Fluminense 35 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    Filtros

    Os chamados programas "ltro"pegam sua entrada de stdin, fazem alguma modicao nesses dados

    e colocam a sada em um stdout (tela do terminal).

    O mais simples programa ltro o cat, que faz uma cpia el da entrada na sada. Outros

    programas desse tipo so: sort, wc, que conta as linhas, caracteres e palavras, grep, que mostra as

    linhas de um arquivo contendo uma seqncia de caracteres, e muitos outros comandos UNIX.

    No so programas ltro: ls, who, date, cal, pois, embora a sada seja para stdout, a entrada no

    stdin.

    uniq : Remove linhas duplicadas dos arquivos.

    Mas h uma condio: a lista deve estar ordenada.

    A opo -d faz com que sejam listados somente os nomes repetidos.

    Ex: Observe que o comando uniq no d resultado quando a lista no est ordenada.

    $ cat lista

    Alexandre

    Jos

    Felipe

    Tatiana

    Beatriz

    Eduardo

    Enrico

    Aline

    Erica

    Jos

    $ uniq lista

    Alexandre

    Jos

    Felipe

    Tatiana

    Beatriz

    Eduardo

    Enrico

    Aline

    Erica

    Jos

    $ sort lista | uniq

    Alexandre

    Aline

    Beatriz

    Eduardo

    Enrico

    Universidade Federal Fluminense 36 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    Erica

    Felipe

    Jos

    Tatiana

    $ sort lista | uniq -d

    Jos

    $

    split : Divide o arquivo em partes.

    As principais opes so:

    -bn Divide o arquivo em partes com n bytes de tamanho. A unidade de n pode ser em k

    (kilobytes) ou M (Megabytes).

    -ln Divide o arquivo em partes com n linhas de tamanho.

    Sintaxe: split [opes] [prefixo]

    Ex: O arquivo arqu2.txt ser dividido em arquivos de 3 linhas cada.

    $ split -l3 arqu2.txt arqlin

    $ ls -l

    total 1080

    -rw-r--r-- 1 kurumin kurumin 139 2006-01-11 11:36 arqlinaa

    -rw-r--r-- 1 kurumin kurumin 131 2006-01-11 11:36 arqlinab

    -rw-r--r-- 1 kurumin kurumin 111 2006-01-11 11:36 arqlinac

    -rw-r--r-- 1 kurumin kurumin 130 2006-01-11 11:36 arqlinad

    -rw-r--r-- 1 kurumin kurumin 89 2006-01-11 11:36 arqlinae

    -rwxrwxrwx 1 kurumin kurumin 161 2005-04-09 21:42 arqu1.txt

    -rwxrwxrwx 1 kurumin kurumin 600 2006-01-11 11:27 arqu2.txt

    -rwxrwxrwx 1 kurumin kurumin 10 2005-03-27 12:57 cap2.tex

    -rwxrwxrwx 1 kurumin kurumin 5615 2005-03-27 13:02 image.jpg

    -rwxrwxrwx 1 kurumin kurumin 71 2005-03-27 13:00 page.html

    -rwxrwxrwx 1 kurumin kurumin 10 2005-03-27 12:58 parIII.tex

    -rwxrwxrwx 1 kurumin kurumin 69 2006-01-10 16:42 parII.tex

    -rwxr-xr-- 1 kurumin kurumin 67 2006-01-10 16:40 parI.tex

    -rwxrwxrwx 1 kurumin kurumin 161 2005-04-09 21:42 texto.txt

    $ cat arqlinaa

    => A liberdade de executar o programa, para qualquer

    propsito (liberdade no. 0)

    => A liberdade de estudar como o programa funciona,

    $ cat arqlinab

    e adapt-lo para as suas necessidades

    (liberdade no. 1). Aceso ao cdigo-fonte

    um pr-requisito para esta liberdade.

    Universidade Federal Fluminense 37 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    $

    cut : Extrai colunas ou campos de um arquivo.

    Sintaxe: cut [opes]

    As opes podem ser:

    -b Seleciona campos por bytes.

    -c Seleciona campos por caracteres.

    -f campos Seleciona lista de campos, onde podem ser nmeros separados por vrgula ou faixas

    de nmeros (n1-n2), ou combinao de ambas.

    -d Especica o delimitador de campo.

    E: O delimitador de campo informado no exemplo abaixo um espao em branco. Veja o

    resultado da escolha do campo 4 do comando date.

    $ date

    Qua Jan 11 14:04:49 BRST 2006

    $ date|cut -d" " -f 4

    14:06:31

    $ date|cut -c 5

    J

    $

    tr : Substitui caracteres

    Pode ser usado para trocar as letras de maisculas para minsculas.

    Sintaxe: tr [opes]

    As opes principais so:

    -c Realiza a troca de todos os caracteres, exceto da string1.

    -d Elimina os caracteres especicados em string1, ignorando string2.

    -s Comprime a seqncia de caracteres repetidos da string2.

    Ex: Converte as letras minsculas para maisculas.

    Universidade Federal Fluminense 38 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    $ cat capital.txt|tr "[a-z]" "[A-Z]"

    RIO DE JANEIRO

    SO PAULO

    VITRIA

    BELO HORIZONTE

    $

    Ex: Converte mltiplos espaos em branco em um nico espao.

    $ cat capital.txt

    Rio de Janeiro

    So Paulo

    Vitria

    Belo Horizonte

    $ cat capital.txt|tr -s " "

    Rio de Janeiro

    So Paulo

    Vitria

    Belo Horizonte

    $

    paste : Exibe lado a lado contedo de arquivos.

    Sintaxe: paste [opes]

    As opes so:

    -s exibe as linhas de um arquivo em srie em vez de uma abaixo da outra.

    -d c Especica o delimitador de campos como sendo o caracter c em vez da tabulao.

    Ex: Sejam os arquivos estado.txt e capital.txt. O estado ser colocado ao lado da capital,

    separados por ": ".

    $ cat estado.txt

    Rio de Janeiro

    So Paulo

    Esprito Santo

    Minas Gerais

    $ cat capital.txt

    Rio de Janeiro

    So Paulo

    Vitria

    Belo Horizonte

    Universidade Federal Fluminense 39 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    $ paste -d: estado.txt capital.txt

    Rio de Janeiro:Rio de Janeiro

    So Paulo:So Paulo

    Esprito Santo:Vitria

    Minas Gerais:Belo Horizonte

    $

    wc : Conta o nmero de linhas.

    Com as opes:

    -l Mostra apenas o nmero de linhas.

    -w Apenas o nmero de palavras

    -c Apenas o nmero de caracteres.

    Sintaxe: wc [opes]

    $ wc arqu2.txt

    14 90 600 arqu2.txt

    $ wc -l arqu2.txt

    14 arqu2.txt

    $ wc -w arqu2.txt

    90 arqu2.txt

    $ wc -c arqu2.txt

    600 arqu2.txt

    $

    tail : Exibe as ltimas linhas de um arquivo

    Sintaxe: tail [opes]

    Exemplo:

    $ tail -n 5 arqu1.txt

    Para entender o conceito,

    voc deve pensar em

    "liberdade de expresso",

    no em "cerveja grtis".

    $

    As opes so semelhantes a do comando head, porm sero mostradas as ltimas m linhas ou

    ltimos m bytes.

    Universidade Federal Fluminense 40 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    grep : Localiza cadeias de caracteres em uma entrada denida.

    Essa localizao baseada em expresses regulares. A entrada do comando grep pode ser um

    arquivo ou a sada de outro comando.

    Sintaxe: grep [opes] "expresso"[arquivo]

    Exemplo: Sero listadas todas as linhas dos arquivos .txt que contm a palavra "liberdade".

    $ grep liberdade *.txt

    arqu1.txt: de liberdade, no de preo.

    arqu1.txt:"liberdade de expresso",

    arqu2.txt:=> A liberdade de executar o programa, para qualquer

    arqu2.txt: propsito (liberdade no. 0)

    arqu2.txt:=> A liberdade de estudar como o programa funciona,

    arqu2.txt: (liberdade no. 1). Aceso ao cdigo-fonte

    arqu2.txt: um pr-requisito para esta liberdade.

    arqu2.txt:=> A liberdade de redistribuir cpias de modo

    arqu2.txt: (liberdade no. 2).

    arqu2.txt:=> A liberdade de aperfeioar o programa, e

    arqu2.txt: (liberdade no. 3). Acesso ao cdigo-fonte

    arqu2.txt: um pr-requisito para esta liberdad

    Exemplo: Sero listadas as informaes referentes aos arquivos .jpg do diretrio corrente.

    $ grep ls|grep *.jpg

    -rwxrwxrwx 1 ze ze 5615 2005-03-27 13:02 image.jpg

    H tambm comandos variantes do grep: o egrep e o fgrep. O primeiro tem como caracterstica

    adicional a possibilidade do uso de metacaracteres. O segundo no apresenta essa funcionalidade.

    A vantagem deste ltimo sobre o comando grep sua rapidez.

    Exemplo: Sero localizadas as linhas que comeam com um caracter qualquer seguido das letras

    S ou P do arquivo arq1.txt.

    $ egrep '^.(S|P)' arqu1.txt

    "Software Livre" uma questo

    Para entender o conceito,

    Observe que foram usados apstrofos ' para limitar a expresso procurada. Seu uso importante

    para evitar erros de interpretao pelo shell, j que h caracteres com signicado especial.

    O caracter '

    ' foi usado para indicar o incio da linha, o ponto . para indicar um caracter qualquer

    e a barra | foi usada para representar ou lgico. A expresso ^.(S|P), ento, signica incio de

    linha com qualquer caracter seguido das letras S ou P. As expresses com uso desses caracteres

    Universidade Federal Fluminense 41 PET

    TELE)))

  • Captulo 3. Comandos 3.2. Comandos e utilitrios bsicos

    especiais so chamadas de expresses regulares. A seo 3.3 tem mais sobre o uso de expresses

    regulares.

    As principais opes do grep so listadas abaixo:

    -i Ignora a diferena entre maisculas e minsculas

    -c Mostra o nmero de linhas em que a expresso foi encontrada

    Exemplo: Voltando ao exemplo anterior, vamos ver em quantas linhas ocorreu a palavra liber-

    dade.

    $ grep -c liberdade *.txt

    arqu1.txt:2

    arqu2.txt:10

    nome.ord.txt:0

    -l Lista somente o nome dos arquivos que contm a expresso

    -n Numera cada linha que contm a expresso procurada

    head : Mostra as linhas iniciais de um arquivo

    Sintaxe: head [opes]

    As opes podem ser:

    -c m Mostra o texto que ocupa o tamanho de m bytes.

    -n m Mostra o texto das m primeiras linhas. Por padro, so mostradas as 10 primeiras linhas

    se no for especicada nenhuma opo.

    Exemplo:

    $ head -c 23 arqu1.txt

    "Software Livre" uma

    $

    more : Mostra arquivos texto tela a tela

    Sintaxe: more [opo]

    Universidade Federal Fluminense 42 PET

    TELE)))

  • Captulo 3. Comandos 3.3. Expresses Regulares e Metacaracteres

    As principais opes so:

    +n : exibe o arquivo a partir da linha n especicada.

    -s : exibe mltiplas linhas em branco como sendo apenas uma.

    As teclas associadas ao more so:

    : para visualizar a prxima tela. : para visualizar a prxima linha. : para visualizar a tela anterior. : para avanar uma tela. : sair do comando.

    less : Mostra arquivos texto pgina a pgina com rolagem

    Sintaxe: less

    Tem a mesma funo do comando more.

    Pipes

    Os Pipes so a forma pela qual podemos construir uma conexo de dados entre a sada de um comando

    e a entrada de outro. A sada do comando anterior serve de entrada para o posterior.

    Forma de um comando pipe: comando1 | comando2 | ...

    Comandos conectados por pipe formam um pipeline.

    Por exemplo: `ls -la|more`. Este comando faz a listagem longa de arquivos, que enviada ao

    comando more. O comando more tem a funo de efetuar uma pausa a cada 25 linhas do arquivo.

    Comando tee

    Envia o resultado do programa para a sada padro do terminal e, ao mesmo tempo, para uma sada

    escolhida, por exemplo, um arquivo. Este comando deve ser usado com o comando pipe.

    Exemplo:

    ls -la|tee listagem.txt

    A sada do comando ser mostrada normalmente no terminal e, ao mesmo tempo, gravada no arquivo

    listagem.txt.

    3.3 Expresses Regulares e Metacaracteres

    Expresso Regular uma seqncia de caracteres que simboliza diversas outras seqncias sem pre-

    cisar list-las. Nestas expresses, alguns caracteres recebem um signicado especial, sendo chamados

    de metacaracteres. atravs da utilizao destes caracteres que podemos simbolizar uma quantidade

    enorme de palavras ou frases com uma expresso bem simples.

    A Tabela 3.2 mostra alguns caracteres e seus signicados. Os mais utilizados so os colchetes, o

    asterisco, o ponto e a interrogao.

    Universidade Federal Fluminense 43 PET

    TELE)))

  • Captulo 3. Comandos 3.3. Expresses Regulares e Metacaracteres

    Caracter Descrio Exemplos

    . Coringa de um caracter vi.a

    [ ] Coincide com qualquer um dos caracteres listados [gpr]ato

    [^] Coincide com qualquer um dos caracteres, exceto os listados [^mf]ato

    ? O caracter anterior pode aparecer ou no meios?

    * O caracter anterior pode aparecer em qualquer quantidade go*gle

    + O caracter anterior deve aparecer n