You are on page 1of 86
Introdugao ao LINUX e Programagao em Script-Shell Programa de Edueagao Tutorial Telecomunieas PEARLE )); Universidade Federal Fluminense Niteroi-RJ Prefacio O Programa de Educagao Tutorial (PET} possui como objetivo maior realizar atividades de pesquisa ensino © extensio de forma nao dissociada, isto 6, desenvolver projetos que integren, em si estes tres aspectos, Neste contexto, 0 grupo PET-Tele desenvolve diversas apostilas, nao como um fia en si mesmas, mas como forma de realizar também outras atividades © desenvolvimento dessas apostilas ¢ inieiado com um trabalho de pesquisa sobre o tema escolhido Apis este periodo inicial, prodwz-se material didético sobre o assunto, visando transtnitir 0 conheci= mento adquiride para os alunos do curso de graduagio ¢ outros interessados, Eventuahnente, quande score alguma solicitagdo, os alunos do grupo fornecem eursos sobre os asstitos abordados na apostila Até 0 momento, as seguintes apostilas estan disponiveis no site do PE'L HTML Linguagem de programagao para hipertextos, prineipalmente empregada na construgio de paginas da Internet pages) LaTeX Sistema de edigao de texto largamente utilizad en: ineios academivos e cientificos, bem eon por algumas editoras nacionais ¢ internacionais LINUX e Seript-Shell Introducao ao sistema operacional GNU. Linux ¢ programaciw em utilizande o shell. MATLAB Ambiente de simulagao matemstica, utilizado em diversas Areas profissionais SPICE Ambiente de siumlacau de cizenitos elétricus (analigicos ¢ digitais), utilizado em projeto de cireuitos discretos ¢ integrados. Nota desta Apostila Esta apostila visa introduzir o usiirio ao ambiente do sistema operacioual Linux «i familia UNIN- Like. explicando seu sistema de arquivos, seus processos caracteristicos e seus commandos. -Alén disso. tem por objetivo apresentar programagéo Seript-Shell, eusinando a eriar ¢ executar programas, apre- sentando os comandos mais utilizados na construgao de seripts, além de manipulagao de varidveis, ust le estruturas hvisicas de decisio ¢ controle ¢ esemplos diversos \ apostila esta dividida em 3 partes © contenido da primeira parte abrange um breve histérico, algnus conceitos ¢ earacteristicas dos Sistemas Operacionais. hardicare © software havendo maior destaque para o Sistema Operacioual UNIX \ segunda contém os aspectos basicas do Linus, assim como os principals comandos atilizados para realizar tarefas uo Linus \ fillima parte da apostila envolve os principais canceitas de programacao utilizando © shell de Linus © principal motivo da abordagem desses 3 temas em uma diniea apostila fol o de levar 0 ususie iupla do funcionamento de wm sistema opera édigitado ua tela de wn terminal ow quando exeentado um seript N ar todos os comandos do Linux e suas aplic usadas, Cada usuario usard mais um conjunto de comandos do que outros depend objetivos, Existem comandos especificos para re iniciante a ter uma visio mais jomal quando um comand io se pretende com este manual apresen bes mais clo dle seus S. para manipulagao de arquives, para conliguragic le dispositivos, ete. Cun livro seria pouco para esgatar todas ax favilidades ¢ fingoes que o Linux oferece Espe ase que com essa apostila 0 usudtio iniciante conhieca o hasico do Linux de forma elara e « usuario mais experiente a use como referencia Quanto ao aspeeto de programacao, vale lembrar que um usndrio nao se tornara um grande pro- stamiador apenas lendo wma apostila on um livro, E preciso pratica, fazer programas, testar fungdes estudar programas prontos para entender sew fancionamento, ete. Uma ue suas distribnigdes vem com os s Js suas necessidades, podendo até mesino fazer wine mide vantagem do Linus ¢ ipls abertos, para que © usuditio possa ler, entender ¢ adaptat nova distribuigao com base na outra, Bastande para isso, vontade de aprender ¢ curiosidade, As man pages do Unix ¢ dos interpretadores de coman- Jash possiem Undo o que for mecessério para entender os comandas de uma forma teais os como ¢ completa No fim da apostila, se eneontra um guia de sites, livros © apostilas usados como base para a onstrucio desta. EB outras referéneias importantes coutendo um amplo e importante conteiido para » Jeitor usar afin de aprimorar seu conhecimento no Linux ¢ programagao utilizando © shell UNIVERSIDADE FEDERAL FLUMINENSE ii PRIELLL Sumario Prefacio 1 Conceitos Gerais LL Introducao ao Hardware 0 eee LIL Resolugao de problemas X Mapeanento de dominios 1.1.2 Pungdes logieas © aritmétieas bisieas 2... . tae 1.1.3 Inplementagio de fungies matematieas par circuits 114 Computador X Maquina de niveis . . L2 Introdugao ao software L2.1 Computador X Sistema Operacional : . 1.2.2 Interface de commnicagao com o Sistema Operacional (SO) 1.2.3. Interpretador de comandos {shell deum SQ. voce eee ee 1.3 Familia UNIX LS. Sistemas UNIN 6. ve . od . 1.3.2 Interfaces do UNIN . Introdugio ao Linux 2.1 Aspectos biisicos do Linus . LL Startup © shutdown... bees ae oo 1.2 Abertura de segio uo Linux . . 1.3. Usuario. superusudrio (rest), grupos, acesso, protegao: Ld Sessito, login. password logout vee eee eae 1.5 Consoles virtuais Sistema de arquivos ss. oe ea vas ve os 2.1 Sistema hierarquico, arvore de diretérios, montagem de ramifieagoes 2. iles, director 2 Tipos bisicos de arquivos: plain Permissoes para acesso a arquivos Diretorios 3.1 Processos ¢ subprocessos . 3.2 Controle de processos Comandos 3.1 Comandos de ajuda 3.2 Commandos ¢ ntilitarios basicos Comandos de inanipulagio de arquivos 3.2.1 3.2.2 Redirecionamento de entrada e saida Been ow Suruivie Stumcirig 3.3. Expresses Regulares ¢ Metacaractores 4 4 Introdugéo ao seript-shell para LINUX 46 Ll Aspectos basicos bee . 46 LLL Sevipt © Seript Shell 46 1.2. Execugao do programe 17 1.2.1 Erros na execugac is 1.2.2 Quoting is 4.3 Comentarios 16 14 lmpressio na te . . at 1.5. Passagem de parametros ¢ argumentos a 15.1 Leitura de parametros 33 16 Fungoe LG. Dep cao de script por outro script 5.1 Palavras Reservadas 5.2 Criagie de wma v 5.3 Delegao de wma ¥ 5.4 Visnalizagio de vari 5.5. Protegin de uma varidivel 5.6 Substituigan de variaiveis 3.7 Varidveis em vetores 5.8 Varidveis do sistema 6 ‘Testes e Comparagées em Script-Shell G1 Codigo de retorne 2 Avaliag expre 6.3 Operadares booleanos GA Testes Numéricos GAL O Comande let 6.5 Testes de Stri 6.6 Testes de arquivos 6 ni a Controle de fluxo Devisao simples Decisio multiple 21 O comand 7.3 Controle de Tad Why 732 Until 73.3 For AAO Projeto GNU e o Linux 78 Al ve Livre . 7s UNIVERSIDADE FEDERAL FLUMINENSE iv PETELE)} B Editor de textos vi 80 B.1 Comandos internos - vi . oe . . we . 8 B.2 Comandos da tltima linha - vi 81 Referéncias Bibliograficas 82 UNIVERSIDADE FEDERAL FLUMINENSE 1 PEWELE) Capitulo 1 Conceitos Gerais 1.1 Introdugao ao Hardware 11.1 Resolugao de problemas X Mapeamento de dominios & possivel descrever situagies através de equagies. Por nieciper Como ja foi visto em outras disciplinas, exemplo, na Fisica, temos as leis d resultados, Conhevendo a equi ‘omplicado, podemos transporté-la para outro dominio mais simples (qe jf pode ter una solugic onhecida), onde obtemos resultados que podem ser levados de volta ao dominio inieial. A resohuci« permitindo « hatureza mape las por equagae Jo que descreve 0 problema, que pode estar em wm dominic lo problema pode ser definida em quatro etapas 1, Mapeamento do problema real em un problema matemsticn 2, Equacionamento do problema matematico 3. Mapeamenta do equacionamento eur wn algoritine: J, Adequacao do algoritmo a uma linguagem de programacaa. 1.1.2 Func6es légicas e aritméticas basicas F possivel a representagao de todo um sistema numérico utilizando apenas "Zeros" "uns". Chamamos io e foi desenvolvida com cle uma logiva, a ligica BOOLEANA. Atre nnipulagio, uma vez que podemos con apagada como ‘0, Do mes see sistema de sistema bin Lela, podemos implementar solugdes num dominio de fill sidevar, por exemplo, uma kampa modo, podemos tabalhiar com tensio elétriea: rcesat como nivel ligico ‘T° ew com tensao - ‘| sem tenséo - “l Tabela das fungoes ligieas 1. Conceitos Genwi [ATE [AND TOR [XORTNAND [NOR y 0 [i 0 T T yJifoo fa 1 1 0 t 1 1 o fa 1 1 0 c jit t Lf et 0 0 1 0 Tabela Ld: Tabela de Funcoes L6 1.1.3. Implementagao de fimges matematicas por circuitos Uma vez conhecida a Logica Booleana podemos, através da combinagao de OR's, AND’s, ete, coustruit ireuitos capazes «le somar, nmultiplicar, subtrair, enfin, realizar tada e qualquer operacio matenmitiva 1.1.4 Computador X Maquina de niveis Um computador ¢ uma mquina digital eapaz de solucionar problemas através de instrugdes que The so fornecidas. Cada computador tem sua linguagem de maquina, que eonsiste en todas as instrugoes primitivas que a maquina pode excentar, Na verdade, pode ser dito que uma maquina define uma wagon ¢ uma Tingnagem define ama maquina Essas instrucdes mais bisicas do computador geralinente se resumen a adicionar, verificar se um finer @ zero ou mover mn dado, E estas s40 realizadas pelo circuito eletronieo, Seria complicade para um humano eserever um programa com base nestas simples instrugdes. Uma solugao para esse problema é escrever 0 programa em wma linghagem {que chamaremos de L2) diferente da li le aniquina (L1), Entio a execugia de wm programa escrito em L2 deverd acontecer en duas etapas Primeiro L2 ¢ transformada ' em L1. Em seguida L4 é executada diretamente. Assim, poderiamos pensar na existéncia de wma maquina virtual cuja linguagem de maquina ¢ L2. Estentendo esse exemplo, poderiam ser criadas outras lingnagens L3, L4, L5, ete..., até atingir um nivel de I onveniente ao ser humano. Como eada linguagen utiliza sua anterior como base, podenmos pe omputador como sendo composto por varias camadas ou niveis, uma maquina multinivel. Em grande parte dos computadores atuais ha cerca de 7 niveis. A seguir ha uma breve apresenta le cada uum desses niveis. Veja Fig. Ll. n agen Figura I Esquema de niveis de um computador © Nivel 0 - Eo hardware da maquina. Consiste nas portas lagicas formando os cirenitos. * Nivel | - Eo nivel onde estio os microprogramas. Fo verdadeiro nivel de lingnagem de maquina, Esses microprogramas interpretan as instrugées do nivel 2, para o nivel 0 executar Enrende-se por transformagio de una Tingnagem em owtra cono tradugio ow iuterpretagiio UNIVERSIDADE FEDERAL FLUMINENSE 3 PEWELE)} Capitulo 1. Conceitos Gera 0 ay soltware # Nivel 2 - Nivel de maquina convencional. Contém o conjunto de instrugdes que serao interpre~ ados pelo microprograma © Nivel 3- E um nivel hibride pois possi instrugdes do nivel 2 ¢ outras caracteristicas novas. E chamado de sistema operacional. # Nivel 4 Nivel de montagem # Nivel 5 ~ Contém as Tingnayens usadas pelos programadores para resolver programas. © Nivel de texto, simuladores matematicos, elé Consiste nos programas feitos para trabalhar em determinada aplicagio. Ex: editores ies, ete 1.2. Introdugao ao software O softeare de wn computador pode ser dividido, basicamente, em duas categorias # Programas de sistema - Gerenciam a operagio do computador, O mais importante destes & « Sistema Operacional. # Programas de aplicagio ~ Sao aqueles que o usuario trabalha usualmente para resolver determi= nados problemas como editores de imagem, texto, jogos, etc 1.2.1 Computador X Sistema Operacional O Sister dperacional controla todos os recursos do computador ¢ fornece a base sobre a qual os caplicativos sio escritos, Ele ¢ a interface do usuario ¢ seus programas com o computador ¢ 1 pelo gerenciamento de recursos ¢ periféricos (como memoria, discos, arquivos, imupressoras CD-ROMs, etc.) & a execugdo de programas \ parte mais baixa desta interface com o hardware é considerada o Kernel ilo sistema operacional. raduzindo: Cerne do SO. E no kernet que estio delinid mouse, disco, impressora, interfaces serial paralela), gerenciamento de memdria, entre outros, O kernel éa parte mais importante do sistema operacional, pois, sem ele, a eada programa novo que que o programador se preocupasse em escrever as fungoes de entrada, sada + fimgoes para operacio com. perillricas se criasse seria neces le impressiv, entre outras, em baixo nivel, Por isso, quando ha periférieos que o kernel nao tem fingan prouta, & necessirin escrever a interface para eles 1.2.2 Interface de comunicacdo com o Sistema Operacional (SO) OSO pode ser visto como uma mdquina estendida, quando apresenta ao usudrio uma maquina virtual eqnivalente ao hardware, porém muito mais simples de programar. Ele isola o usuitrio dos detalhes de aperacao do disco Ele também pode ser visto como gerente de recursos ao passo que ele gerencia os usuitrios de cada um dos reeursos da maquina, combinando o tempo de uso de cada um © garante o acess ordenade le usuarios a reeursos através da mediagio dos conflitos entre as requisigaes dos diversos. processos usuarios do sistema, Por exemplo, o controle que o sistema operacional faz com os pedidos de diferentes usuarios, em mma rede, para utilizar a impressora UNIVERSIDADE FEDERAL FLUMINENSE 1 PETELE)} 1. Conceitos Gerai 1.3. Cupitul 1.2.3 Interpretador de comandos (shell) de um SO No caso do SO UNIX, o interpretador de comandos ¢ chamado Shell » exerce a fungao de um programa jue conecta e interpreta as comandos digitados por um usuario. E a interface que o usuario utiliza para enviar comandos para o sistema Dos varios programas Strell existentes, 0 Bourne Sheth o Kara Shell ¢ 0 © Sheli se destacam por serem os mais utilizados ¢ couhecidos. Mas qualquer programador pode fazer o seu Shell. Estes shells srnaranese conhecidos pois ja vinham como sistema, exceto o Korn que tinha que ser adquiride separadamente, O Bourne Shell vinha com o Systent Veo C Shell com © BSD. O Korw Shell & ama melhoria do Bourne Shel Ha também o Bash (Bourne Again Shelf). Mais informagdes sobre estes shells porleu ser vistas no eapitulo 1, Os comandos paden: ser enviados de dias maneiras para o interpretador: de forma interativa « nsio-interativa Interativa: 0s comandos sio digitados no prompt de comando e passados ao interpretador de eo- mandos um a um, Neste modo, o computa présimo comando jor depende do usuavio para executar uma tarefa ou Néo-interativa: sio usados arquivos de comandos criados pelo usnitio (scripts) para o computador executar os comandos na ordem encontrada no arquivo. Neste modo, 0 computador executa os comandos do arquivo umn por um ¢ dependendo do témino do eomando, 0 seript pode checar qual sera o proximo comando a ser executado, O capitulo 4 descreve a coustrugao de seripts. 1.3 Familia UNIX 1.3.1 Sistemas UNIX O UNIX 6uun sistema operacional multitarefa, on seja, permite a utilizacao do processador entre viirias tarofas simultaneanente, multiuswirio, disponivel para diversos hardiwares, Ele possui a capacidade le criar opedes espeeificas para cada usuirio, as quais sA0 ativadas quando o usudtio se loga ac computador As raizes do UNIN enco! onfiével ¢ aplicavel ao ambiente dominante na époea, un mainframe (um grande computador eeutral uma série de terminais Tigados a ele. No meio da programagao, costuma-se dizer que o UNIX foi projetado por programadores para programadores ja que posstii certas caracteristieas: desejadas: pot les como o de ser unt sistema simples com grande flesibilidade amese na necessidade, na década de 70, de wan sistema nnultitarela Histérico do UNIX Abaixo Lemos un cronograma da eriagio da UNIX. © Décadas de 1 6 50) Todos os computado horario para utiliz es cram pessoais quanto a forma de utilizagao, O usuario reservava am lo # Déeada de 60) Através dos sistemas Batch . 0 usuario enviava ao centro de processamento de dados un job cur cartoes perfurados para que esse fosse processado pelo computador. Aprosimadamente wna UNIVERSIDADE FEDERAL FLUMINENSE 5 PEWELE)} Capitut 1. Conceitos Genwi 13. «UNIX hora depois da submissio, 0 usuario podia busear os resultados de sew programa. Porém, s¢ houvesse algum etro no programa escrito, o usuario s6 saberia horas depois, perdendo seu tempo. ne Para resolver esse problema, foi eriado um sistema de compartilhamento de tempo, o CT MIT. onde eada usuério tinka um terminal on-line A sua disposigao. Apds o CTSS, os Laboratorios Bell com o MIT e a General Eletrie comegaram um programa grandioso de eriar um novo sistema operacional que suportasse centenas de usuarios simultane amente em regime de compartilhamento de tempo (tinesharing). ‘Tal sistema foi denominade MULTICS (MULTiplexed Information and Computing Servier), que seria multi-usuario, anul- titarefa e teria um sistema de arquivos hierarquico, © Decadal \ AT&T. controladora da Bell Labs, insatisfeita como progresso do MULTICS corton o projete © alguns programadores da Bell que trabalharam no projeto, como Ken Thompson, implemen- taram a versio mononsuario do MULTICS em lingnagent de montage en wi minicompatador © PDP-7, Brian Kernighan, outro programacor da Bell, dev o nome do novo sistema de UNICS como deboche ao nome do sistema anterior, Mais tarde o nome foi mudado para o eoubecide UNIX, Em seguinda, o UNIX foi eserito para mequinas do tipo PDP-1L. E como era necessiirio recs: crever o sistema toda vez que ele fosse transportado para outra méquina, Thompson reescreveu » UNIX em uma linguagem de alto nivel desenvolvida por ele, a Linguagem B, Para corrigi algumas imperfeigoes, Denni Ritehie, que também 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 L974. Thompson e Ritchie publicaram um artigo sobre o novo sistema operaeional UNIX » que geron um grande entusiasme no meio aeadémico, Como a AT&T era um monopélie controlado atuante na area das telecomunicagoes. nao foi permitida sua entrada no ramo da computagio, Assim, a Bell Labs nao colocow objegies para licenciar 0 UNIX para as universi- dades ¢ empresas. Em 1977 existiam cerea de 500 compntadores com UNIX no mundo todo. Pelo fato do UNIX ser fornecido com sew cédigo fonte completo, muitas pessoas passaram a hiizar semindvios para trocas de informagies, visando a eliminagio de Bugs ¢ inclusao de melhoramentos, A primeira versio padrao do UNIX foi denominda Versio 6 pois estava deserita na sexta edigao do Manual do Programador UNIX estuda-lo & org © Déeada de 80 Com a divisio da AT&T em virias companhias independentes, imposta pelo gorverno americane cut 1984, foi possivel a criagao de uma subsididria dela no rano da computagio, Entao foi lancado pela AT&T a primeira versio comercial do UNIX, o System THT, seguida pelo System V.. sendo que cada versio era maior ¢ mais complicada que a antecessora Auxiliada pela DARPA (Defense Advanced Research Projects Agency), a Universidade de Berke fey passowa distribuir uma versio melhorada da Versio 6, chanada LBSD (First Berkeley Sof seguida pela 2BSD, 3BSD e 4BSD, Esta iiltima possuindo muitos melhora- mentos, Sendo o principal, » uso de meméria virtual ¢ da paginacao, permitindo que programas ware Distribution UNIVERSIDADE FEDERAL FLUMINENSE 6 PEWELE)), lia UNIX Conceitos Geri 13 BY ‘essen maiores que a membria fisica. Também, a ligagao de maquinas UNIX em rede, desen volvida em Berkeley. fez com que © padrao de rede BSD. 0 TCP. IP. se tornasse padrao unive Pssas modilicagoes fizeram com que fabrieantes de computadares, como a Sun Microsystems « a DEC, baseassem suas verses no UNIX de Berkeley Em 1984 jé existiam cerea de 100.000 computadores com UNIX rodando em diferentes platafor- mas No final da década, estavam cireulando duas versdes diferentes e ineompativeis, a 4.3BSD ¢ « System V Release 3. Isso tornow praticaiente impossivel aos fornecedores de sefliware ter a corteza de que sistema UNIX S programas pudessem rodar em qualq Entao, © Comité de Padronizagio do IEEE fez « primeira tentativa de unifieagao dos dois des, O nome escolhido do projeto foi POSIX (Portable Operating System). Poi criadv andes dliseussors 0 padrao denominade 1003.1, contenco a intersecan das caracteristicas nto da 4.3 BSD quanto do System V. Poréin, an cons6rcio, denominade OSP (Open Softe Foundation), foi formado prineipalmente pela IBM (que comercializava o sistema ATX }, DEC Hewlett-Packavd com o intuito de formar um sistema de do com o padrin 1008.1, além de acteristivas adivionais, Enn reacho, em 1988 a AT&T © Sun se unem no eonsdreic UT (UNIX International) para desenvolver Solaris ¢ UNIX Ware Com relos consireins, tende 1. passaram a existir, novamente, versoes diferentes oferecida: cteristiea commun o fata de seren comin ca do UNIX Uma tentativa de fuga desses sistem © menor, 6 sistema do tipo MINT. uundes © complexas. coutrariando a idéia principal foi a criagao de uma nova versao UNIX-tike mais simples © Em 1997, foram vendidos cerea de 4 imilhoes de sistemas UNIX no unde todo. Alguns dos Sistemas Operacionais UNIX atnais sia: BSD (FreeBSD, OpenBSD e NetBSD), So- laris (anteriormente coulecido por SunOS), IRIN, AIX. HP-UX, TruGd, Linux (as suas anilhares ae listriligGes}, ¢ até o Mac OS X {haseado uum kernel Mach BSD chamado Darwin) 1.3.2 Interfaces do UNIX 114 3 tipos de interface do sistema UNIX que podem ser identificadas # Interface de chamadas de sistema # Interface de biblioteca de procedimentos # Interface formada pelo conjunto de pr ios como sendo a verdadeira inte unas utilitérios, considerada face da UNIX roneamente por alguns usua UNIVERSIDADE FEDERAL FLUMINENSE 7 PEWELE)} Capitulo 2 Introdugao ao Linux Diferentemente do que se é levado a peusar, o Linus uma implementagao independente do sistema yperacional UNIX. O Linux propriamente dito Sistemas completos construidos em torno do keraef do Linux usamo sistema GNU que oferece mn shell utilitarios, bibliotecas, compiladores ¢ ferramentas, bem como outros programas como os editores le texto, Por essa razao, Richard M. Stallman, do prajeto GNU, pedi sistema completo GNU Lims. No apéndice, ha mais informacoes sobre o projeto GNU O desenvolvimento do Linux iniciou a partir de um projeto pessoal de um estudante da Univeridade le Helsinki, na Finlandia, echamado Linus Torvalds. Ele pretendia eriar in sistema operacional mais sofisticado do que o Minis, um UNIX relativamente simples cujo eédigo fonte cle tinka disponivel, O Linux obedece ao padrao estabelecide pelo governo norte amerieano, POSIX. O POSIX @ 0 padrao da APL (Application Programming Interface) UNIX. referéncias para desenvolvedores da familia UNIX- like. Desdle a apresentagao do Linus en 3 de outubro de 1991, por Linus Torvalds, um grande nitners Je pessoas envolvidas com programagio comegou a desenvolver o Linus. O nome Linus deriva da jungao Linus | UNIX — Linux tun kernel nau tun sistema aperacional completo. aos usttdrios que se refiram a Portabilidade Linux ¢ hoje um dos kernels de sistema aperacional mais portados, rodando em sistemas desde « iPaq (um computador portatil) até o IBM S390 (um massivo e altamente eustoso mainframe). embora Linus Torvalds, Seu esforgo era te compilar aplieativos de uma este tipo de portabilidade nao fosse um dos objetivos principais de tomar seu sistema portatil uo sentido de ter habilidade de facili variedade de fontes no seu sistema, Portanto, o Linux originalmente se tornow popula favoritas de todos rodassem no Linux. emt parte levido ao esforgo para que as fontes GPE ow ow Distribuicées © sistema operacional completo (GNU. Linus) é considerado wma Distribuigao Linux. E uma ‘olegiio de softwares livres (¢ As vezes nao-livtes) crindos por inividuos, grnpos ¢ organizagies an redor (o mundo, ¢ tendo 6 kernel como sew mieleo, Atualmente, companhias como a Red Hat, a SuSE.a MandrakeSoft on a Conectiva, bent como projetos de comunidades com Debian on a Gentoo. ompilan o soft ye-uso, Alem disso, hi projetos pessoais como o de Patrick Volkerding que fornece uma distribuigao Linus, a Slackware ¢ Kurumin. Esta tiltima roda em CD, bastande as configuragdes do computador aceitarem boot pelo drive da CD fornecem um sistem completo, pronto para instal Carlos E, Morinote que langou a distribuigao chamad 1. Aspectos hisicos do Liwur » que Linus Torvalds passon a disponibilizar o Lim, ele apenas disponibilizava o Kernel com al guns comandos basicos. O proprio usuario devia arrumar os otras programas, compililos ¢ configura los. Para evitar esse trabalho, comecou entéo a disponibilizacao de programas pré-compilados para > usuario apenas instalar, Foi assim que surgin a MCC (Manchester Computer Centre), a prineiza de de Manchester, Algunas distribuigdes sto maiores, ontras menores, dependendo do niiero de aplicativos ¢ sua finalidade, Algumas distribnigdes de tamanhos menores cabem cnt um disquete cout LA MB, outras precisam de varios CDs, Todas elas tem sen piiblico ¢ sua finalidade, as pequenas (qne ocupam poncos disquetes} sAo usadas para reenperagao de listribuigao Linux, feita pela Universid sistemas danificados ou em monitoramentos de redes de eomputadores, O que faz a diferenga & come esto organizados e pré-configurados os aplicativos 2.1 Aspectos basicos do Linux 2.1.1 Startup e shutdown Correspondem respectivamente aos procedimentos de ligar e desligar 6 computador, O primeito diz respeito basicamente ao fornecinento de energia para o funcionamento dos eircuitos eletronivos da maquina e nao requer do usuario grandes precaucoes, Por outro lado o proceso de Shurfdown requet uiidado, uma vez que o destigamento inadequado do computador pode causar danos ao sistema ope racional destruindo as tabelas internas de que cle necesita para funcionar, Quando © computador 0, destigé-lo deve ser a ailtima escollia, Un nude esta o problema ¢ encerrar @ sesso travada com um comand apropriado. "iraval", porta ype @ Iniciar outra sessio, verifiear 2.1.2 Abertura de secdo no Linux Para usar o Linus ¢ preciso em primeira Ingar, que o usnirio digite seu nome e sua senha, que sao lids verificados pelo programa fogin. No UNIX um arquivo de senba 6 usado para guardar informagoes possindo una linha para cada ustirio, contende sta identificagao alfabética e numérica, sua senha riptografada, sew diretorie howe, além de outras informagoes. Quando © usuario se identifica, « programa fogin criptografa a senha que acabou de ser lida do terminal ¢ a compara com a senha lo arquivo de senhas para dar permissio ao usuario, Esse arquive com as informacoes dos: ustvitios c/passud. As senhias criptog normalmente @ encontrade no arquivo: /* etc/shadow, ailas ficat no arquive 2.1.3 Usuario, superusuario (root), grupos, acesso, protecdo O principio da seguranga do sistema de arquivo UNIX esta haseado em usttarios, grupos ¢ outros ustiirios Usuario : @ a pessoa que erion 0 arquivo, O dono do arquivo Grupo » 6 uma categoria que reine véirios usnéios, Cada usuario pode fazer parte de um ow mais EMupos. que permitem acesso a arquivos que perteneem ao grupo correspondente. Por padrao, « smupo de usuarios inicial 60 mesmo de seu nome de usuario, A identificacao do grupo é chamada de gid (group i) Outros : é a categoria ck ashirios que nao se encaixam como donos on grupos do arquivo. UNIVERSIDADE FEDERAL FLUMINENSE 9 PEWELE)} Capitulo 2. ducao ao Linw 12. Sistena de arguivos As permissdes de acesso | ra donos, grupos ¢ outros usuirios sio independentes uma das outras. pernitindo assim un nivel de acesso diferenciado, \ conta root ¢ também chamada de super uswério. Este & um login que nao possui restrigdes de seguranga. A conte jaf somente deve ser usada para fazer a administragao do sistema. Utilize a Je usuarin normal ao invés da conta roe? para operar seu sistema, Uma razao para evitar usar privilégios roo! @ devido a facilidade de se cometer danos irrepariiveis ao sistema 2.1.4 Se Ao, login, password, logout a entrada no sistema ¢ feita com tm login & um password, onde logive & 0 nome do usudric # uma senha de seguranca. Uma ver efetuado o login, 0 ustirio entra em sta conta « © logout (para finalizar a conta) ¢ @ aberta uma session onde se interage diretamente com o She fetnado através do comando “exit 2.1. Terminal (ou console) 0 teclado e tela conectados em seu computador, O Linus faz uso de sua aracteristica multi-usuario usando principalmente "terminais virtuais". Umi terminal virtual & ama segunda sessio de trabalho completamente independente de outras que pode ser acessado no com putador local ou remotamente via telnet, rsh. rlogin, ete No Linux, em modo texto, voce pode acessar outros terminais virtuais segurando a tela ALT > pressionande FL a FG, Cada tecla de fungao eorresponde a un nimnero de terminal do Lae 6 o sétimo é usado por padran pelo ambiente grafico X}, O Linx possi mais de 63 terminais virtuais mas apenas 6 esto disponiveis inicialmente por motives de economia de meméria RAM. Se estiver usando o modo grafico, voce deve segnrar CTRL ALT enquanto pressiona uma tecla de I Fo Um exemplo pratico: se vocé estiver usando o sistem Consoles virtuais no Terminal 1 com um login qualquer « lesejar entrar come root para instalar algum programa 6 s6 abrir wm terminal virtual e realizar a tarela desejada, 2.2 Sistema de arquivos Arquivos so eentrais para o UNIN de can Comandos sie arqnivos executaveis, usnalmente encontrados em locais previsiveis na arvore de dic maneira nao encontrada en outros sistemas operacionais retories. Priviléxios do sistema e permissies sao controlados em g ane parte através de arquivos, Dispositivos [Oe arquives 1 O nao sao distinguidos nos niveis mais altos. Au mesmo a comnni- agao entre processos ocorre através de entidades similares a arquivos. Toda a seguranga do sistema lepende, 0 fe sas contas de usuarios ande parte, da combinagao entre a propriedade © protegdes setadas em seus arquivos 2.2.1 Sistema hierarquico, arvore de diretérios, montagem de ramificagdes © UNIX tem uma organizagao de diretérios hierdrquiea em formato conliecidy come files hase desta drvore @ wn diretério chamade ‘rot divecte combinado em uma uum arquivo reside nao faz parte da especificagio do UNIX. m. A /'. Em sistemas UNIX, todo espago em disec nica arvore de diretério abaixo do |. sendo que o local fisico onde lisponive UNIVERSIDADE FEDERAL FLUMINENSE 10 PETELE)} dugio ao Linwr 22. Sistema de arguivos Capitulo 2. I 2.2.2. Tipos basicos de arquivos: plain files, directory Ds arquivos sto onde os dados estio gravados. Um arquive pode conter um texto, uma anisica programa, ete, Todo sistema UNIX reeonhece pelo menos trés tipas de arquivos * Arquivos comuns Usados para armavenar dados, Os usuarios podem acrescentar dados diretamente em arquivos conus, como, por exemplo, através de am. editor. Os programas exeentaveis também sao guardados como arquivos commis © Arquivos de diretério: Um arquivo de diretério contém uma lista de arquives, Cada insergac na lista consiste em duas partes: o nome do arquivo ¢ 1m ponteiro para © arquivo real em disco Por outzo lado, os disetorios se comportam exatamente como arquivos conus, exceto pelo fate arquivos de diretirio. © Arquivos especiais. Estes arquivas sio usados para fazer referencia a dispositivas fisicos come os terminiais, as impressoras. os diseos. Eles sio Tidos ¢ gravados como arquivos comnns, mas tals associagdes causam a ativagdo do dispositive fisieo ligado a ele © Linus 6 case sensitive, ou seja, ele diferencia letras maitisculas ¢ minisculas nos arquives. O +. Em um mesmo divetério, nao podem liretério, como qualquer outro arquivo, també existir dois arquivos com o mesmo nome ow um arquivo com mesino nome de un subdiretorin, Os liretérios no Linux sao especificados por uma " OBS: Estamos habituados a ver os nomes de arquivos como sendo none .ext, onde ext 6a extensic lo tipo de arquivo, por exemple -txt, shtml, .doc. Porém, no Linmx os nomes no precisam seguir ssa regra. Os nomes podem podem ser formados por varias estensoes, como Lista.ord.txt nomes.maius.classe, livros.meu.ord. txt. O Linux organiza seu filesystem através de inodes. Inodes sio estruturas de dados em disco que leserevem earmazenan os atributos do arquivo, incluindo sua localizagao, Campos de ui inedes user 0 de links, tamanho + iw, acesso, modo (modificagao), mits group, tipo do arquivo, tempo de eriag endereco no disvo. Existem mecanismos que permitem que varios filenames refiram-se a um tinico arquivo uo disco. Esses mecanismos sao os links. Existem dois tipos de links: hard link (ow simbolica) on soft bik # hard link: associa dois on mais filenanies como mesme inode. Os he ompartilham « mesto bloco de dados embora funcionando como entradas de diretéria independ © soft link: estes sio pointers files que apontam para outro filename ne filesystem, 2.2.3 Permissdes para acesso a arquivos O sistema UNIX fornece uns meio fieil de controlar © acess que os usiwirios da sistema passant ter é feito para permitir ou restringir o acesso a arquivos importantes de os trés tipos de arquivos. Isso sistema © para garantir a privacidade de cada usuario que possua wna conta no sistema, O sistema liferencia tres classes de usuarios. Primeiro, todo arquivo possui um dono, un proprictario, designade uo sistem por user. O proprietario tem controle total sobre a restrigio ow permission de avesso av arquivo a qualquer hora, Além da posse individual do arquivo, & possivel que un: ou mais usuarios de po, O usuitrio que nao for sistema possuam 0 arquivo coletivamente, enn umn tipo de propriedade de 9 proprietario do arquivo pode ter acesso a ele caso pertenga ao grupo de usuarios que tem permissac UNIVERSIDADE FEDERAL FLUMINENSE i PEWELE)} dugio ao Linwr 22. Sistema de arguivos Capitulo 2. I para isso. Porém esse usuario nao pode resivingir ou permitir o acesso ao arquivo. Os usuarios que jos nem perten ategoria, conhecida simplesmente come "outros" nao sie nem proprie aunt a Mun grupo que tenha acesso ao arquivo forme a Gina * Proprictario (designalo por U. de user): quem crion 0 arquivo, © Grupo (designado por g, de group}: 0 grupo @ formado por wn ou mais usuitios que podem er avesso aa arquivo. © Outros (ilesignalo por 0, de ofhers): refere-se a qualquer outro usuirio do sistema. O sistema Unix permite ainda tres modos de acesso aos arquivos: leiture. escrita c execugdo. Os res modos de acesso sio relativamente ligivos, porém o significado desses us modos de acesso ¢ lifere liretorie, por exemplo com o comando "1s". O usuario com permissio de escrita pode usar alg pre on remover arquivos do divetinio, Um usuario deve ter permissio de execugio em um diretorio para ter acess aos arquivos ali lovados, Se um usttirio fen permissie para leitura ¢ eserita env un arquivo commun que esta listade em um diretorio mas nao tem permissao de execugao para aquele diretério, o sistema nao o deixa ler nem gravar o contelido daquele arquivo comm para arquivos de diretérios, usuario com permissaa de leiture pode ler 6 conteido de amas privilegiados para gravar em unm diretério, A permissio de gravagio & necessairia para criat Assia Figura 2.1: Permissoes de Arquivos Um arquivo que tiver suas permissies como as do exemplo aeima poderia ser lide, eserito ou executado pelo dono ow por qualquer outra pessoa. J4 no exemplo abaixo, @ dono podera ler « eserever, os ontos sé poderdo ler e ningném poder exceuti-lo User Group Other: ru - r-- r-- Para alterar essas permissies, utliza-se o comando chmod. Veja explicagio do nso desse comande no prosimo eapitnto. 2.2.4 Diretérios Chamamos de drvore de divetorios & organizagao dos arquivos de diretorios, fazendo uma alusao as sttas ramificagies, semelhantes aos galhos de uma arvore, Damos o nome de "vais" ao diretoric principal que contém todos os outros subdiretorios # Divetdrio corrente 6 o diretério em que o usuario se encontra naquele determinade momento UNIVERSIDADE FEDERAL FLUMINENSE 12 PEWELE)} 2.2. Sistema de arguivos ntucieo ao L @ Diretdria “home onde a conta do usuario esta registrada. © Diretori uscendente 60 diretorio onde determinado arquivo on divetério esté contido, # Diretirio deseendente & 0 diret6rio contido em outro divetério © 0 "path" consiste na lista de diretérios que precisa ser atravessada, desde 0 diretorio raiz até « arquivo, com barras separando os componentes. Path absoluto 6 0 camino completo desde a raiz atéo arquivo. Seo caminho completo desde a raiz até o arquivo for /UFF/pet/cursos/Linux ¢ ¢ diretério de trabalho do usuario fosse pet no momento, bastaria que cle digitasse cursos /Linux, Este nome é chamado caminho relative Figura 2.2: Padre dos principais diretérios do UNIN Os diretérios principais, allém de outros, com sew contedide esto listados abaixo fete - Arquivos para administracio do sistema: /bin- Comandos UNTX mais comumente usados, /asr - Todas as contas de usuarios ¢ alguns comandos /dev ~ Arquivos de dispositivos de entrada ¢ saida /Lib - Arquivos bibliotecas para programagao em € /emp ~ Armazenanento de arquivos temporirios /mmt - Momtagem de discos ¢ periférieos /sbin - Diretério usado na inicializagio do sistema, Demais pacotes para a administracio de sistema deven fiear em usr shin ow usr local sbin {var - Dinetorio que contém arquivos varidveis, tais como spoot (lilas de emai, crontab, impressio’ © logs. Este diretério existe para que os arquivos que necessitem ser modificados fiquem nele e nao ne Just. Jhome - Contém os diretérios pessoais dos usuarios 0 diretdrio que contém os arquivos do administrador (sen home). Porém alguns sistemas /root- Unix-like utilizam /home/root. UNIVERSIDADE FEDERAL FLUMINENSE 3 PEWELE) Cupitul wlucio ao Linus 2.3. Processos ‘proc - Diretorio virtual onde © kernel armazena suas informayies /boot - Comtém a imagem do kernel e tuo 0 que for necessivrio ao processo de boot, menos con figuragdes 2.3 Processos 2.3.1 Processos ¢ subprocessos Um processo é um simples programa que esti rodando em sew espago de enderegamento virtual proprio F distinto de um ‘job’ ou comando, que, em sistemas UNTX realizando uma tiniea tarefa. Comandos simples como “Le” sao executados como simples processos. Um omando composto, contende pipes. iri executar um proceso por segmente pipe. Para acompanhar ¢ status de cada processo o sistema cria um PED (Process ID) para cada proceso aberto. Existem elem programa pode ser composto de muitos processos tas chamados gnias de controle de exeengao que ajudam a controlar a exeengao dk Fork : a chamada de sistema cuja execucao eria um processo {filho} idéntica Aquele que o chamon Processo pai: processo que gera ui novo processo. Proceso filho = Proceso gerado pelo processo pa Pid (Process [D} : é um mimero que identifica unicamente cada proceso ¢ ale usado para teferir-se PPid (Parent Process ID) - ¢ Pid do proceso pai 2.3.2 Controle de processos \qui serio apresentados alguns topieos que permiti oma ao usuario realizar algumas tarefas interessantes @ exectitar mais de um processo ao miesina tempor © rod ¥ win proceso en baixa prioridade Se voce estiver usando wn programa que ini demorar muito a trabalhar em outra tarefa voc® pode chamar sew programa para ser executado no que é conhecide como segundo plano (background), Isso pode ser feito colocando no final da linha de comando ¢ simbolo ®. Pode-se também, enquanto 6 programa esté sendo exeeutado, teclar CTRL + 2. Com isse »comando sera suspenso ¢ 0 sistema largara 0 prompl Chamamos de foreground o ato de fazer com que um programe rode em primeira plano. Neste modo os processos podem interagir com as usudrios # exibem a execucio no monitor Quando o comando nice é colocado antes de wna linha de comando, o tempo dedicado pela CPL para execugin daquels tarefa é reduzido, fazendo com que ele nin atrass importantes. Ou seja, a prioridade daquele provesso é redusida, Esse comando deve ser usado quande hia outros processos mais importantes rodando no sistema lerminar © voce quer comegar nL OULTOS processos mais UNIVERSIDADE FEDERAL FLUMINENSE i PEWELE)} Cupitul wlucio ao Linus 2.3. Processos Outros comandos relacionados a processos jobs lista os jobs em buckyround. fg [job) leva e job para foregroune. bg Cjob? leva o job para hackgro PS mostra os processos que estao sendo rodados no computador top mostra contimamente o status de cada processo que esté rodando no computador will a] encerta o processo O exemplo abaiso ilustra o uso de alguns desses comandos. Existe 0 seguinte seript rodando 1 sistema #!/bin/bash #Aviso sleep 10m echo TA na Hora de Sair!! date Este programa emite um aviso apis 10 minutos de ter sido colocado para rodar, em seguida mostra data ea hora. Nao teria sentido deixar esse programa rodando travando o terminal enquanto voc’ poderia estar fazendo outras coisas, entao ele pode ser colocado em background para liberar 6 terminal Apos 10 minuntos a mensagem aparece. O programa se chama trava.sh. $ ./trava.sh & [1] 2906 $ jobs (1]+ Running (trava.sh & $ ps PID TTY TIME CHD 1916 ttypt 00:00:00 bash 2906 ttyp! 00:00:00 trava.sh 2907 ttyp1 00:00:00 sleep 2909 ttyp! 00:00:00 ps § $ fg i /trava.sh aqui foi digitado: ctrl + z [11+ Stopped /vrava.sh $ jobs [t]+ Stopped /trava.sh $ jobs UNIVERSIDADE FEDERAL FLUMINENSE 5 PEWELE)), ea 2.4. Provessos Stopped /trava.sh /trava.sh & $ jobs (t]+ Running /trava.sh & $ ... comandos diversos do usuario enquanto ele espera a mensagem aparecer $ Ta na Hora de Sair!! Ter Jan 10 16:01:51 BRST 2006 aqui foi digitado: enter (+ Done /trava.sh $ jobs $ ps PID TTY TIME CHD 1916 ttypl 00:00:00 bash 2936 ttyp1 00:00:00 ps § Como pode ser visto, 0 pr trava.sh em todos as seus estados: rodando, suspenso # executando, assim como fez 0 comande ps. gama foi exceutado em background QO comando jobs mostrou o jol UNIVERSIDADE FEDERAL FLUMINENSE 16, PETELE)} Capitulo 3 Comandos Os sistemas operacionais UNIX e os que si derivados do UNIX (FreeBSD, Linus, ete} possuem unites om dos ¢ aplicativos. Ein geral a sintaxe de uma comando é da segninte forma $ comando -opcdes argumentos Podem ser inseridos comandaos se Ex: $ ed;pwd Jos na mesma linha separando-os por ponto-virgula, 3.1 Comandos de ajuda \s distribniges UNIX j4 vem com mamais incorporados ao sistema, Esses mamnais de comandos se localizam no diretério /usr/man. 4 utilizagio da pagina de manual ¢ bem simples, digite, por exemple: Sintaxe: [$ man [i i] ‘comando> Ex: $ man 1s > exibe o mamial do comando ‘1s" Um modo de procura por palavra-chave pode ser usado para encontrar 0 nome do comando que secute determinada tarefa, Para isso digite $ man -k palavra-ch: Outros commandos sito: 3 commandos, apropos. Consulte manual para informagies sobre esses BPs] : procura por comandos,programas pela descrigio Sintaxe: [apropos FE aitil quando precisamos fazer alguma coisa mas nao sabemos qual comando usar. Ele faz sua pesquisa nas paginas de manual e suas descrigoes & lista os comandos, programas que atendem A consulta. 3.2. Comandos e utilitarios basicos Os comandos serao esemplificados supondo haver inieialmente um. dixetério chamado teste com cudo os segninte arguivos: arquL.txt, arqu2.txt, cap2.tex, parL.tex, parIl.tex, parlIL.tex, imag.ipg, page.html, 3.2.1 Comandos de manipulagao de arquivos Gat] concatena e/ou exibe arquivos na saida default. Também pode exibir 0 contenido de varios arquivos em sucessio. cat_ Top rquivo> As principais opgdes sho Numera as linhas. -E- Pxibe $ ao final de cada linha =A Exibe todo 0 contetide incluindo caracteres espeeiais, como acentos & espagos na forma de cadigos Ex: Mostra o conterido do arquivo com as linhas numeradas $ cat -n arqui.txt "Software Livre" @ uma ques de liberdade, ndo de prego Para entender 0 conceito voc? deve pensar en “Liberdade de expresséo" ndo em "cerveja gratis" Noose cy Ex: Coneatena na saida padrao 0 eontetide dos dois arquivos $ cat arqui-txt arqu2.txt "Software Livre" & uma questao de liberdade, néo de prego Para entender 0 conceito vocé deve pensar en “liberdade de expressao" néo em “cerveja gratis" UNIVERSIDADE FEDERAL FLUMINENSE Is PEWELE) Comandos we => A liberdade de executar o programa, para qualquer propésito (liberdade no. 0) => A liberdade de estudar como o programa funciona, e adapta-lo para as suas necessidades (liverdade no. 1). Aceso ao cédigo-fonte é um pré-requisito para esta liberdade > A liberdade de redistribuir cdpias de mode que vocé possa ajudar ao seu préxine (liberdade no. 2) => A liberdade de aperfeigoar o programa e liberar os seus aperfeigoamentos, de modo que toda a comunidade se beneficie (liberdade no. 3). Acesso ao cédigo-fonte & um pré-requisito para esta liberdade tac] - Semelhante ao comanda cat, porém exibe o contetido em ordem reversa. Sintaxe: [tac Onde UNIVERSIDADE FEDERAL F MINENSE 19 PEWELE) argfo 6 0 arquivo a ser copiade: argdest (0 nome da cOpia a ser eviada, O nome do arqdest deve ser diferente do argfont caso se esteja fazendo uma e6pia pari o mesino diretorio, Se o arquivo destino nao existit cle é criado com o nome arqdest. E caso exista ¢ nao seja um diretorio, seu contetido sera sobrescrito. As opcdes podem ser =i Pede confirmagao para copiar o arquivo. Mantém os dados, como por exemplo permissies ¢ datas do arquivo original Onde cada arquivo @ separade por espagos em branco Algumas das opgdes paden ser =f — Remove todos os arquivos mesmo nao tendo permissio de eserita sem pedir confirmacac do usuario. =i Remove o arquive interativamente, ou seja, pede a confirmacia do usuario UNIVERSIDADE FEDERAL FLUMINENSE 20 PETELE)} Capitulo er Remove um diretério ¢ todo o seu conteitde recursivamente Obs: Cuidado ao apagar os arquives, pois uma vez usado o comande rm nao é possivel recuperar © arquivo. Ex: Supondo o mesmo diretério exemplo com os arquivos deseritos. Agora vamos apagar arquivo cap2. tex, $ rm -i cap2.tex rm: remove arquivo comun ‘cap2.tex’? y $ 1s apend.tex argu2.txt novoarg.txt parIII.tex parI.tex arqui.txt imag.jpg page.html —_parlI. tex $ Poi pedida confirmacio para a exclusio do arquivo, a letra y foi digitada para confirmar, em seguida foi usado o comando 1g para listar os arquivos. Como pode ser visto, 0 arquive Foi apagado. av (aove)] Move ou renomeia arquivos Sintaxe Topeaol > hard.txt Primeira modificagao $ cat hard. txt Esse @ 0 arqui 0 original Primeira nodificagao $ cat original.t: Esse 6 0 arquivo original Primeira nodificagao $ 1s -1 2 kurumin kurt 49 2006-02-03 10:38 hard. txt -rW- 2 kurumin kurumin 49 2006-02-03 10:38 original. txt $ In -s original.txt simb. tx $ 1s -1 total 9 stwer--r-- 2 kurumin kurumin 49 2006-02-03 10:38 hard.txt -tw-r--r, 2 kurumin kurumin 49 2006-02-03 10:38 original txt lrwxrwxrex 1 kurumin kurumin 12 2006-02-03 10:39 simb.txt -> original. tx $ cat simb. tx’ Esse 6 0 arquivo original Primeira nodificagao $ cat >> simb.txt Segunda modificagao $ cat simb. tx Esse @ 0 arquivo original Primeira modificagao UNIVERSIDADE FEDERAL FLUMINENSE 2» PEWELE}} Ca Segunda modificagao $ cat original.txt Esse 6 0 arqui iginal Primeira nodificagao Segunda modificacao $ Tift] Exibe a diferenca entre dois arquivos Sintaxe: [diff fopcao] arquivol arquivo? Algumas das opgies sao b-_ Tunora espacos ¢ caracteres de tabulagio. =i Nao diferencia maifiseula de mimisenla parte dois 3c3 < nas a linha seguinte ndo > porem a linha seguinte nao $ UNIVERSIDADE FEDERAL FLUMINENSE PETELE)) Capitul moa] Altera a permissio de acesso aos arquiv Algumas das opgdes podem ser -R Seo arquivo for um ditetério, o comando muda reeursivamente o modo de acesso a todos os seus arquivos e subdirerérios ¢ — Mostra o resultado do nso do comando apés sew uso. permisse: composto pela classe do usnario (u para dono. g para grupo. 9 para outros tipos « a todos}, pelos caracteres operadores (+ para acrescentar permissoes, - para retirar permissoes © — para retirar todas as permissdes) ¢ pelos caracteres de permissio (r para leitura. @ para escrita © x para execucao Exemplos $s -1 --wi-wx-we 1 ze ze 5684 2005-03-05 19:29 nova. jpg $ chmod -c a*rwx modo de ‘nova. jpg’ mudado para 0777 (rwxrwxrwx) $ chmod -¢ og-x nova. jpg modo de ‘nova. jpg’ mudado para 0766 (rwxrw-rw-) \ mudanga de permissao também pode ser feita colocando © eédigo tax na forma de afimeros octais. Abaixo segue a equivaléncia do codigo nas letras rwx pra timeros. wee => I sx oS] cw. 32 -wx 3 3 ree So rex 5 rw. => 6 rwx 37 Ex: Supondo que o arquivo parl.tes $1 “1 parl.tex - 1 kurumin§ kurumin 10 2005-03-15 15:18 parl.tex $ chmod 754 parl.tex $ 1s -1 parl.tex srwxr-xr-- 1 kurumin kurumin 10 2005-03-15 15:18 parl.tex or UNIVERSIDADE FEDERAL FLUMINENSE a PEWELE)} Comandos para manipulacio de diretérios Deriva da palavra ‘list Tg] Lista o contedido de um diretério ¢ informacées relativas aos arquivos. quando se digita 1s [nome do arquivo)’, » programa procura o ar quivo desejado dentro do diretério corrente Ex $ ls apend.tex arqu2.txt imag. jpg parIII.tex parl.tex arqui.txt cap2.tex page.html parlI.tex CO 1s sem argnmentas mostra apenas os names dos arquives. Sintaxe: [1s [opgao] [arquivo: Os variunettos opeionais poder ser lista ordenada pelo nome ¢ en formato longe mostra barra de diretérios mostra o contetide de todos as subdiretdrios lista 6 resultado em varias colunas na horizontal lista todos os arquives, inclusive os ocultos Exemplo: Sera eriado um diretorio chamado teste $ ls curso notas artigos $ mkdir teste $ ls curso notas artigos teste radi] : Remove diretérios vazios Simtaye: [nndir —direrdrio’ Exemplo: O diretorio teste criado no exemplo anterior sera removido $ rndir te: $ 1s urso notas artigos ve UNIVERSIDADE FEDERAL FLUMINENSE PETELE) Comando para manipulagio de contas € usuarios id] : Mostra o mimero de identificagdo do usuari ¢ dos grupos a que ele pertence. ‘ghoami]: Mostra o nome do usuario. terminai the] : Mostra os usuarios que esto utilizando [@] : Mostra os usuarios que estao utilizando os terminais com informagdes adicionais, Troca 0 usuario. Esse comande ¢ usado para mudar o usuario no mesmo terminal. Se o comande for executade sem qualquer nome do usuario, 0 padrao @ mudar o usuitio para root Ex $ su Password # 8 su user Password /home/user$ sudc] : Executa comandos como root. adduser] : Adiciona um usu ou grupo no sistema Simtaxe: [adduser [opgdes] Por padrio, quando un usnirio é adieionado, eriado um grupo com o mesmo nome do usuari¢ adagroup] : adiciona um novo grupo de usuarios no sistema ari Sintase: [addgroup [opgbes. passwd] : Altera a senha do usuario Siutase: [passwd Lopgoes) UNIVERSIDADE FEDERAL FLUMINENSE 28 PEWELE), 2 Comandos © Se a opgao -g far especificada a senha do grupo sera alterads Obs: apenas o usudtio root pade alterar a senha de outros usudtios [EeABED] : Altera a identificagao de grupo do usuario Sintaxe: [Rewgep Comandos diversos alias]: Cria um apelido para o comando e seus parametros Sintaxe: [alias ="? Exempla: Sera criado unt apelide para aprimorar ¢ Le $ alias 1s=‘1s -al color -F? $ is RESULTADO Exemplo: Sera criado wm apelido para montar a unidade de disquete ¢ entrar na tela. Salias a=‘mount -t /dev/fd0/mnt/floppy/ — cd/mnt/floppy” cal] : Imprime o calendario para um determinado més/ano Sintaxe 1 {més} [ano] Exemple: $cal 6 2000 $cal 2000 Algumas opedes podem ser usadas através da sintaxe cal [Lopgao] -3- Mostra o més atual, o anterior ¢ 0 seguinte y- Mostra o calendario do ano inteiro Veja o manal para outras opgaes clear] : Limpa o terminal Sintaxe: [clear Quando o terminal estiver ehein de comandos jé digitados ou de resultadas de outros comandos @ recomendavel utilizar o clear para aumentar 0 campo visual UNIVERSIDADE FEDERAL FLUMINENSE 29 PEWELE), date]: Mostra a data e a hora atuais do sistema Sintaxe: [date Se digitarmos ‘date -w, 0 comando ira mostrar o hordrio de Greenwich, Confira o manual para ver como modificar a formatagin de apresemtagao da data Para modificar a hora, @ necessirio estar logade come root $ date mes/dia/hora/minuto/ar Entao para mudar a data atnal para 25 de dezembro de 2020, as duas ¢ meia da tarde, digite: $ date 122514302020 af (disk free] : Mostra o espago livre no disco Simtaxe: [dF Topgde onde opgdes podem ser os parametros listados abaixo a mostra.o espaco aenpado por todos os arqnivos b— mostra o espaco ocupado em by = faz uma totalizagiio de todo o espace listade =D nao conta links simbélieos = mostra 0 espaco ocupado em kbytes mostra 0 espago ocupado em Mbytes -$— nao caleula o espaco ocupade por subdiretérios du (disk usage) : Mostra o espago utilizado por arquives ¢ diretérios do diretério atual Sintaxe: [au Topgdes) onde opgoes podem ser os parametros listados abaix: relat apenas o uiimero de blacos UNIVERSIDADE FEDERAL FLUMINENSE 30) PETELE)} Capitulo a informa o tamanho de cada arquivo -k lista o tamanho em K eche] : Esereve no terminal Sintaxe: [echo ring! Exemplos do uso do comando eche serao vistos na segie 4.4, nd] : Procura arquivos por nome Sintaxe Exemplos $find / -name prova ( procnra no diretério raiz ¢ subdivetérios um arquivo ehamade pro} $find / -name prova -maxdepth 3 (procura no diretério raiz ¢ subdiretérios. até 0 3° nivel um arquivo chamade prova) $find / -mmin 107? (procura no diretério raiz © subdiretérios um arquivo modifieado ha 1 minutos arras’ $find / -Links 4° (procura uo diretorio raiz ¢ subdiretérios, todos os arquivos que possuem 1 link como referéneia Grava os dados do cache de disco na memori: xiveis RAM para os disco rigidos e é anismo de aceleragdo que permite que wn arquivo seja armazenado na memria de ser Imediatamente gravado no disco. Quando o sistema estiver ovioso, o arquivo é gravado para o disco, O Linux pode usar toda im niria RAM disponivel para o sache de programas acelerando seu desempenho de leitura gravacao. O uso do sync é dtil em disquetes quando gravamos um programa ¢ precisamos que os dados sejam gravados imediatamente para retirar 6 disquete da unidade Opgaes de compactagio O Linus possui programas de armazenamento de arquives que podem ou nao compaetar os mesios Taz] : armazena varios arquives e diretérios dentro de um tinico arquivo (*.tar) ou dis- positivo Simtaxe: [tar [ PS J As opgdes podem ser os parametros listados abaixo: UNIVERSIDADE FEDERAL FLUMINENSE 31 PEHELE)) Capitulo ¢ cria um novo arquive tar onde opgdes podem ser os parametros listados abaixo ¢ coneatena saida de dados datas $ cat datas UNIVERSIDADE FEDERAL FLUMINENSE PEWELE) Qui Mar 17 21:20:06 BRT 2008 Acrescentando dados em um arquivo O operador — ceria wn novo arquivo, caso cle nao exista, Se ele ja existe, 0 arquivo é sobreposto. Usando >, a saida é aerescentada ao final do arquivo se © mesmo ji existe ow ¢ criado um novo arquive aso ele nao exista. Exemplo: Sdate > datas $cat datas Qui Mar 17 21:22:31 BRT 2005 Secho FIM DO ARQUIVO >> datas $ cat datas Qui Mar 17 21:22:31 BRT 2005 FIM DO ARQUIVO No easo de erros, deve-se utilizar os simbolos 2 ou 2> para direcionar o erro da saida padrac para um determinado arquivo Exemplo: $ write 2> erros $ cat e write: wr: you have write permission turned off $ cd f 2>> erros $ cat erros write: wr. : you have write permission turned off bash: cd: £: No such file or directory $ Da mesma forma que a saida de um comando pode ser direcionada para um arquivo, um arquive pode ser direcionado como entrada de itn comando. Isso 6 feito utilizando o simbolo —. Na proxina segio teremas um exemplo de como fazer isso Tam shell que o escopa de in comando comega na linha seguinte © termina quando ele encontrar © label neo segne, Este comando é muito usado para exibir um texto ent varias linhas, sem precisar de fiear usando 0 comande eche para cada linha Exemplo: an & possivel fazer vedivecionamento de entrada utilizando o sinal «. Este simbolo indica UNIVERSIDADE FEDERAL FLUMINENSE aA PEWELE)} cat < > 3 - Opgao > FIM 1 - Opgao UN 2 3 $ Organizando dados em um arquivo O "sort"é um programa que classifica alfabeticamente as linhas de um arquivo texto, Ele obtén sua ntrada em sédin ¢ apresenta a saida em stdout Se quisermos ordenar os uomes contidos 10 arquive nomes utilizando sor 4, podemos fazer Scat nomes Deri Cod Pato Brunalde KK § Ssort < nomes Brunalde Cod Deri KK Pato $ \ saidla poderia ser redirecionada ao mesmo tempo para un arquivo, como mostrado abaixo: Ssort < nomes > nomesord Scat nomesord Brunalde Cod Deri KK Pato $ O sort leno contetido do arquivo "nomes". classificou-os © a saida, que seria feita na tela, foi jogada para um novo arquivo chamado "nomesord". Um detalhe importante: os arquivos de entrada e saida devem ser diferentes, pois a primeira parte do comando 6 a criagao do arquivo de saida. Se este for igual ao de entrada, ele & zerado. UNIVERSIDADE FEDERAL FLUMINENSE 35 PEWELE) Capitulo 8 Comandos 4 Filtros Os chamados programas "filiro"pegam sua entrada de sidive, fazent alguma madificagio nesses dados e-colocam a saida em um stdow (tela do terminal O mais simples programa filtro @ 0 eat, que faz uma copia fiel da entrada na saida, Outros programas desse tipo sio: sort. we, que conta as linhas, earacteres © palavras, grep, qiie mostra as linhas de um arquivo contendo uma seqiiéneia de caracteres, ¢ muitos outros comandos UNIX. Nao sao programas filtro: Is, who. date. cal, pois, embora a saida seja para sidoul, a entrada nae Taig] : Remove linhas duplicadas dos arquivo: Mas hd uma condigao: a lista deve estar ordena¢ \ opgie -d faz com que sejam listados somente os nomes repetido: Ex: Observe que o comando unig nio dé resultado quando a lista nao esta ordenads $ 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 | unig Alexandre Aline Beatriz Eduardo Enrico UNIVERSIDADE FEDERAL FLUMINENSE 30, PETELE)} Capitulo Erica Felipe José Tatiana $ sort lista | uniq -d José $ As principais opgdes sao bn Divide 0 arquivo em partes com n bytes de tamanho. (filobytes) ow M (Megabytes Split}: Divide o arquivo em partes. -1n_ Divide o arquivo em partes com n linhas de tamanho. Simtaxe: [split [opgdes] [prefixo] Ex: O arquivo arqu2.tat serd dividido em arquivos de 3 linkas cada $ split -13 arqu2 $ 1s -1 total 108¢ srw-r--r-- 1 kurumin srw-r--r-- 1 kurumin srw-r--r-- 1 kurumin srw-r--r-- 1 kurumin srwer--r-- 1 kurumin -ruxraxrwx 1 kurumin srwxrwxrwx 1 kurumin -ruxraxrex 1 kurumin srwxrnxrex 1 kurumin -rwxrwxrwx 1 kurumin -ruxraxrwx 1 kurumin -ruxraxrex 1 kurumin -rwxr-xr-- 1 kurumin srwxrwxrwx 1 kurumin $ cat arglinea qlin kurumin kurumin kurumin kurumin kurumin kurumin kurumin kurumin kurumin kurumin kurumin kurumin kurumin kurumin A 10 69 67 161 2006-01-41 2006-01-11 2005-04-09 2006-01-11 2005-03-27 2005-03-27 2006-03-27 1 2005-03-27 2006-01-10 2006-01-10 2005-04-09 => h liberdade de executar o programa, para qualquer propésito (liberdade no. 0) => A liberdade de estudar como o programa funciona, $ cat arglinak adapta-lo para as suas necessidades (liberdade no. 1). Aceso ao cédigo-fon @ um pré-requisito para esta liberdade \ umidade de 1 pode ser em k arglinaa arqlinab arqlinac arglinad arqlinae arqui.txt arqu?.t: cap2.tex image. jpg page. htm), parIIT.tex parll.tex parl.tex exto..t UNIVERSIDADE FEDERAL FLUMINENSE PETELE)) cut tr Si As opgdes podent ser =b- Seleciona eampos por bytes ¢— Seleciona campos por caracteres -£ campos Seleciona lista de campos, onde podem ser mimeros separados por virgula ou faisas de nimeros (a1-n2), ou combinagao de ambas -d— Esperifiea o delimitador de campo. E: O delinitador de campo informada no exemplo abaiso @ um espago em brance. Veja « resultado da escolhia do campo 4 do comando date. $ date Qua Jan 11 14:04:49 BRST 2006 $ datelcut -d" "" -f 4 14:06:31 $ datelcut -c § J $ Substitui caracteres Pode ser usado para trocar as letras de maitisculas para mimisculas Sintave: [tr Lopgdee] As opedes principais sho = Realiza a troca de todos os caracteres, exeeto da string! <4 Elimina os caracteres especificados em string], ignorando stri Comprine a seqiiéneia de caracteres repetidos da str Ex: Converte as letras ininiseulas para maitisculas UNIVERSIDADE FEDERAL FLUMINENSE 38 PEWELE) 3 cat capital.txtitr “[a-z]" "[A-z]" RIO DE TRO $80 PAULO VITORIA BELO HORIZONTE $ Ex: Converte miiltiplos espagos em braneo em ui tnico espago. 3 cat capital Rio ae Janeire So Paule Vitéria Belo Horizonte $ cat capital.txtltr -s " " Rio de Janeiro $40 Paule Vitéria Belo Horizonte $ paste]: Exibe lado a lado contetido de arquivos. As opyies si: <8 exibe as linhas de um arquivo em série em vez de uma abaixo da outra -d ¢ Especifica o delimitador de campos como sendo o caracter ¢ em ver da tabnlagao. Ex: Sejam os arquivos estado.txt © capital.tst, O estado sera eolocado ao lado da eapital separados por": " $ cat estado. txt Rio de Janeiro Sao Pai Espirito Santo Minas Gerais $ cat capital txt Rio de Janeiro Sao Pai Vitoria Belo Horizonte UNIVERSIDADE FEDERAL FLUMINENSE 30) PEWELE)} 22 Comandos © ios basicos $ paste -d: estado.txt capital.txt Rio de Janeiro:Rio de Janeir S80 Paulo:Séo Paulo Espirito Santo:Vitéria Minas Gerais:Belo Horizonte $ Conta o nimero de linhas. Com as opgies = Mostra apenas o nfimero de linhas Javras W Apenas o ufimero de -¢ Apenas o mfimero de caracteres Siutaxe: [re Topgées] $ we arqu2.txt 14 90 600 arqu2.txt $ we -1 arqu2.txt 14 arqu2.txt $ we -w arqu2.txt 90 arqu2.txt $ we -¢ arqu2.txt 800 arqu2. txt $ tail] : Exibe as dltimas linhas de um arquivo Sintaxe 1 lopste! rquiy Exemplo $ tail -n 5 arqui.tzt Para entender o conceito voc® deve pensar em “liberdade de expres: néo em "cerveja gratis" $ As opgdes sie semelhantes a do comande head, porém serao mosteadas as tiltimas m linhas ou ‘iltimos m bytes, UNIVERSIDADE FEDERAL FLUMINENSE 10 PEWELE) Capitul cadeias de caracteres em uma entrada definida, [ESR] : Local Essa localizacio @ baseada em expresses regulares, A entrada do comande grep pode ser um arquivo ou a saida de outro comando. Sintaxe: [Erep Top! 3] ep 40" [arquivel Exemplo: Serao listadas todas as linhas dos arquivos txt que conten a palavra “liberdade" $ grep liberdade +.txt arqui.txt: de liberdade, ndo de prego arqui.txt:"Liberdade de expressdo", arqu2.txt:=> A liberdade de executar o programa, para qualquer arqu2.txt: propésito (liberdade no. 0) arqu2.txt:=> A liberdade de estudar como o programa funciona arqu2.txt: (liberdade no. 1). Aceso ao cédigo-fonte arqu2.txt: um pré-requisito para esta liberdade arqu2.txt:=> A liberdade de redistribuir cépias de modo arqu2.txt: (Liberdade no. 2) arqu2.txt:=> A liberdade de aperfeigoar 0 programa, e rqu2.txt: (liberdade no. 3). Acesso ao cédigo-fonte arqu2.txt: 6 um pré-requisito para esta liberdad Exemplo: Sera listadas as informacoes referentes aos arquivos .jpg do diretdrio corrente. $ grep Islgrep +. jpg -rwxrwxrwx 1 ze ze 5615 2005-03-27 13:02 image. jpg Ha também comancos variantes do grep 0 egrep co fgrep. O primeirn tem como caracteristica adicional a possibilidade do uso de metacaracteres, O segundo nao apresenta essa finicionalidade. \ vantagem deste dltimo sobre o comande grep 6 sua rapides Exemplo: Serao localizadas as linkas que comecan cour mn caracter qualquer seguido das letras Som P do arquivo argl txt $ egrep ’>. (SIP)? arqui.txt "Software Livre" 6 uma que! Para entender o conceito Observe que foram usados apéstrofos * par para evitar erros de interpretagao pelo sh limitar a expressio procurada, Seu uso & importante i,j que ha caracteres com significado especial O caracter “ foi usado para indicar o inicio da Tinka, o pouto . para indicar um caracter qualquer 6a barra | foi usada para representar ou logico. A expressac >. (S|P). entao, signifiea inicio de link 1 cont qualquer caracter segutide das letras $ ou P. As expresses com uso desses caracteres UNIVERSIDADE FEDERAL FLUMINENSE 11 PEWELE)} 2.2. Comandos ¢ speciais so chamadas de expresses regulares. A segio 3.3 tem mais sobre o uso de expressoes regulares. s principais opgbes do grep sao listadas abaixo: seulas =i Tgnora a diferenga entre maiiseulas © mi =~ Mostra o nfimero de linhas em que a expressio foi encontrada Exemplo: Voltando ao exemplo anterior, vamos ver em quantas linhas ovorren a palavra liber dade $ grep -c liberdade +.txt arqui.txt:2 arqu2.txt:10 nome. ord 0 +1. Lista somente o nome dos arquivos que contém a expressii n Numera cada linha que eontém a expresso procurada ad] : Mostra as linhas iniciais de um arquivo T Top Sintaxe: [no UNIVERSIDADE FEDERAL FLUMINENSE 2 PEWELE) Capit 1.3, _Expressies Reg As principais opgdes sao exibe o arquivo a partir da linha n especificada +s: exibe mniltiplas liuhas em branco como sendo apenas wma As feclas associadas ae more sav © espago + para visualizar a proxima tela © return + para visnalizar a proxima linha © bos para visualizar a tela anterior © f= para avancar uma tela © : sair do comando. Tess]: Mostra arquivos texto pagina a pagina com rolagem Sintase: [less Tem a mesma fingao do comando more. Pipes Os Pipes sav a forma pela qual podemos eoustruir wna conesao de dados entre a saida de un comande aeutrada de outro, A saida do comando anterior serve de entrada para 0 posterior Forma de un comando pipe: conandot | conando2 | Comandos eonectados por pipe formam wn 5 Por exemplo: 1s -lalmore’. Este comanda faz a omande nore, © comando more tem a fungao de efetuar uma pans istagem longa de arquivos, que @ enviada ac aeada 25 linhas do arquivo, Comanda tee Envia o resultado do programa para a saida padrio do terminal ¢, ao mesmo tempo, para uma saida escolhida, por exemplo, wm arquivo, Este comando deve ser usado com o comand pipe. Exemplo ls -laltee listagem.txt \ saida do comando sera mostrada normalmente no terminal e, ao mesmo tempo. gravada no arquive Listagem.txt. 3.3 Expressdes Regulares e Metacaracteres Expressao Regular 6 uma seqiiéncia de caracteres que simboliza diversas outas seqiiéncias sempre isar lista-las. Nestas expressoes, alguns caracteres recebem um significado especial, sendo chamados Je metacaracteres. F através da utilizagao destes caracteres que podemos simbolizar uma quantidade enorme de palavras ou frases com uma expresso bem simples \ Tabela 3.2 mostra algnns caracteres © seus significados, Os mais utilizados sie os colehetes, ¢ terisco, © ponto © a interrogagio, UNIVERSIDADE FEDERAL FLUMINENSE 13 PEGELE)} 4.3. Expressoes Req Caracter [ Deserigao Exemplos Coringa de um caracter an qualquer wn dos caractores Tistados Te; T1__[Coineide Tate Coincide com qualquer um dos caracteres, exeeto os istados | E-mf]ate O caracter anterior pode aparecer ow nic iuicios O-caracter anterior pode aparecer cm qualquer quantilade | go" a O-caracter anterior deve aparecer ho minitan Uma ver BO tt O caracter anterior deve aparecer na quantidade indicada goti, = Comeide como comege da Tinka 7k 5 Coineide como Tim da linha rents \b__| Limite uma palavra (letras, mimeros © sublinhade bumeu) Torna os metacat res caracteres: COMMUNS sério\? I Yuin come operador "ow conan Faz com que Wairlos caracteres Sjam Wistos como WHS saipcrel Qualquer caracter, em qualquer quantidade vo 7__[Semelhante ao asteriseo Semelnante ao sinal de mais The [Semelhante as chaves simples UNIVERSIDADE FEDERAL FLUMINENSE M4 PETELE Capitulo 4 Introdugao ao script-shell para LINUX 4.1 Aspectos basicos 4.1.1 Script e Script Shell O shell um interpretador de comandos que possui uma linguagem utilizada por diversas pessoas para inux (como efetuar backup regularmente facilitar a vealizagin de insimeras tarefas administeativas wo 16 mesmo para eviar programas um pouco mais elaborades. A procurar textos, criar formatagoes) je de compilar para gerar um arquivo executivel linguagem shell é interpretada, no haveudo necessiday Un seript shell. ou simplesmente seript, ¢ un arquivo contendo uma seqiiéncia de am on mais comands, Este arquivo é diretamente executavel quando chamado p O Shel foi eserito em diferentes versoes. Dos vitios programas Korn Shell ¢ 0 C Shell se destacan por utilizados ¢ conhecidos O Bourne Shell & conhecide como Shell padrio, sendo o mais mtilizado © estando na maioria dos sistemas Unis fi OK She oO¢ li modificada do Bourne 5 Alem desses, hii um shell padeao do Linus, chamado Bourne- s citados a Mas qualquer programador pode fazer o seu Shelt Estes vinham com o sistema, exeeto © Korn, que tinka que ser adquitide separadamente, O- Bow: vinha com o System Vea C Shell como BSD, Algumas caracteristicas > nome existentes, ¢ Bourne Shell, ¢ erent os ma uma versio melhorada do Bourne Shelk utura bastante parceida com a lingnagem Ce @ também uma versic possui uma Ayain Shell Este pode ser considerade eriormente Is tornaramse conhecidos pois ja Shell yinais completo, sendo compativel com todos ox she Shell Prompt. Representagat Bourn Shell =>3 sh Bourn-Again Shell = 8 bash, Korn Shell os ksh C shell a esh Cups troducao ao seript-shell pare LINUX 1.2. Bxeeugio do pro 4.2. Execugao do programa Um programa pode ser escrito ent um editor de sua preferéneia como vi, kWeite, KEdit entre outros. O arquivo é salvo como texto comum, No fnicio do arquivo deve vir escrito #!/bin/bash Os cavacteres especiais 1 (chamados hast-bong) informam ao kernel que o préxime argumente &o programa utilizado para executar este arquivo, No easo, bin/bash é o shell que utilizamos, O kernel 1é © hash-ba Quando o shelf le © hash-bug cle o interpreta como uma linha de comentirio ¢ a ignora, inieiando a 7 no inicio da linha, entao ele continua lendo os caraeteres seguintes ¢ inicia o bash execugio do programa FE preciso mudar a permissio do arqnive para executavel para ele funcionar. Isso 6 feito pele omande chmod. Para que o programa seja executavel de qualquer parte do sistema ¢ necessfvio salva lo em algum dizetorio que esteja no PATH (varidvel do sistema que contém a lista de divetorios onde o shell procura pelo comando digitado), Entretanto, & permitido salvé-lo em um diretorio qualquer como o dizetério home do ususirio}, porém na hora de executielo pelo prompt, 6 necessiirio que seja indicado todo o caminho desde a raiz, ou, estando no mesino diretério do arquivo, digitar no prompt nomearquivo OBS: Taubém 6 possivel modificar o PATH para incluir um diretorio de sua escolhia Por exemplo: vamos supor que o usudtio erion uma pasta em seu diretério para salvar seus seripts onto nome de scripts. Para tornar esse diretério como parte do PATH faga o seguinte Digite no prompt Secho $PATH Esse @ sen PATH atual. Em segnida digite $ PATH-SHOME/scripts:$PATH Secho $PATH Esse @ sen novo PATH. com sen diretério de exemplos incluido, Agora seus scripts podem ser exectttados de qualquer diretorin, Porém, dessa forma, a umdanga da variavel PATH s6 vale euquants 0 shell vorrente estiver aberto, Se for aberto outro shel, a mudanca nao tera efeito. Existent arquivos que so inicializados assim que 0 shell ¢ aberto profile: Tem as coniguragies hiisicas do sistema ¢ vale para todos os usmrios, Somente © root tem permissio para moddifiear esse arquivo bash_profile ou .bash_login ou .profile ou .bashre : Estes arquivos ficam no diretorie home do usuario. AS modilicagoes feitas uesse arquivo 4 valent para o proprio usuvirio, Podemos entao, abrir o arquivo .bashre ¢ colocar nele o wove PATH. Além disso, podemos ineluir também Ex: Se tivéssemos um diretorin chamado seripts ¢ quiséssemos coloci-lo wo PATH, bastaria acrescentar a linha abaixo ao arquivo .bashre. Tambéa foram colocados alguns aliases. PATH-$PATH:~/scripts alias c=’clear alias montar=’mount /dev/fd0 UNIVERSIDADE FEDERAL FLUMINENSE 16 PETELE)} troducao ao seript-shell pare LINUX 1.2. Bxeeugio do pro Vamos fazer um exemplo passo-a-passo agora para criar e exeeutar win programa Esereva em seu editor de texto o programa abaixo ¢ salve como un.sh. #!/bin/bash echo "Programa UM!" Agora no prompt, mude as permissoes do arquivo $ chmod atx um.sh \gora ¢ 86 chamar 0 programa no prompt $ sh um.sh Neste caso 0 arquivo estava no mesmo diretério de rabalho. E se o arquivo estivesse em um liretario diferente? Lembre-se de mudar o PATH! 4.2.1 Erros na igo m1 provavel que cle se depare con alguns erros bem comuns e feels de resolver. Os principais sao © Neommnend found ~ Esse quer dizer que o shell nao encontron seu programa A razdio para isso poc le ser que o nome do comando foi digitado de forma diferente da arquivo. Certifique-se nome de de que o nome esta ignal. Outra razio possivel & que o arquivo estit em um local diferente do PATH padrao, Nesse caso, deve-se proceder conforme explicado na se anterior, que explica como salvar 0 arquivo, oP mission denied \ permissaio para execucio do arquivo foi negada, O-usnério deve mmdar permnissin do arquivo para excentive Outro erro comm é o de sintaxe. Nese ease o shell encontra © script © indica a linha onde conten o erto no program Quoting Denomina-se quoting a fungio de remover a predefinigio ou significado especial dos metacaracteres Dessa forma, @ possivel escrever os caracteres literalmente 114 3 tipos de mecanismos para quoting: 1. Barra invertida (\} - Chamada de caracter de escape, ela remove o significado especial de earacter seguinte a ele Exemplo: UNIVERSIDADE FEDERAL FLUMINENSE 47 PEWELE)} dugao ao seript-sbell pare LINUN Z 3 echo 0 # @ um caracter especial 0 $ echo 0 \# @ um caracter especial Q # @ um caracter especial Observe a diferenga que o uso da barra provoca, $ echo agora a barra esta sendo\ > usada para que seja possivel\ > continuar egcrevendo em outra Linha\ > Veja que apareceu um prompt secundario \ > Mas na hora da impresséo as linhas saem seguidas agora a barra esta sendousada para que seja possivelcontinuar escrevendo em outra linhaVeja que apareceu um prompt secundario Mas na hora da impressdo as linhas saem seguidas Neste exemplo a barra suprimiu o significado de fim de linha. 2. Aspas simples (°) - Todos os earacteres que veut entre estas aspas ten seu significado removide Exemplo: $ echo *Com aspas simples nao @ necessario colocar\ > barra para cada caracter # $+ ! Com aspas simples n&o é necessario colocar barra para cada caracter # $ * ! 3. Aspas duplas (") - E semelhante a anterior, porém nao remove o significado de $.\.". 7 {variavel} 4.3 Comentarios Para deixar seu programa mais claro ¢ facil de entender, o ustuitio rio $6 pode como deve acrescontar 1 Tinha nao ser yuando ele o encontrar. Isso é bastante vitil para permite a leitura posterior de omentirios em sew codige-fonte utilizando © caracter no inicio da linha. E: exeeutada pele she arquivo, corned Por exemplo, no infeio de wn se o de errs, mudancas no programa entre outras tarefa ipt poderia ser eserita a sua fungae # Script para administrar as contas dos novos usuarios MINENSE Is PEBELE) UNIVERSIDADE FEDERAL F Cups troducao ao seript-shell pare LINUX 4A Um bom cédigo-fonte deve ter um cabegalho identificando © autor © as funcdes do programa, FE importante lembrar que, independentemente da linghagent usada, comentarios sao esseneiais para itn bom entendimento do programa escrito, tanto pelo autor come por outres usiitios Abaixo segne uma lista de recomendagoes que unt programador deve seguir # Escreva os comentirios no momento em que estiver escrevendo o programa © Os comentarios devem acrescentar algo © nao apenas descrever o funcionamento do comando, Utilize espagos em branco para aumentar a legibilidade Coloque um comando por linha, caso a situacie permita «# Escolhia nomes representatives para as variiveis Impressio na tela O comando echo permite mostrar na tela seus argumentos Ex $echo Escrevendo seu argumente Escrevendo seu argunento Existem caracteres especiais que sao interpretados pelo comando echo. Em algumas versoes de Linux deve ser usado o parametro opcional -e. Esta opeao habilita a interpretacio dos earacteres de eseape listados abaixo © \\- Barra invertida (Jackslash) # (nnn - Escreve o caraeter eujo octal & nm (xi - Escreve © caraeter enjo hexadecimal ¢ HH # \a- Caracter de alerta sonore (Seep) © \b= Backspace. © \c= Sprite newline, forcando a continnagao na mesina linha © \f- Alientavio de formulario, © \n- Inivia um nova linha © \r= Carviege return, Retorna ao inieio da tinha © \t~ Equivale a um espaco de tabulacao horizontal i © \v- Equivale a um espace de tabnlagia vertical Ex: UNIVERSIDADE FEDERAL FLUMINENSE 19 PEWELE}} Capitulo 4, Introducdo ao seript-shell para LINUN 4.5, Passayent de purimetros ¢ echo -e "Este exemplo mostra 0 uso de Comegando pela contra-barra \\ > Caracter hexadecimal \100 > Usando backspace\b > iniciando \n nova linha > > guns dos caracteres mostrados apagando o que foi \r escrito anteriormente na linha e tabulando \t horizontalmente e \v verticalmente." Este exemplo mostra o uso de alguns dos caracteres mostrados Comegando pela contra-barra \ Caracter hexadecimal € Usando backspac iniciando nova linha escrito anteriormente na linha 2 tabulando horizontalmente ¢ verticalmente OBS: Para saber a representay a tabela ASCIEno mannals man aset Quando o uswirio nao desejar que a saida do comands echo pule de linha, ele deve usar a opgie n. setal ¢ hexadecinal correspondente ao earacter desejado, consult 4.5 Passagem de parametros e argumentos Parametros sio variaveis passadas como arguments para o programma on varidveis "especiais" que guardam certas informagoes Quando wm programa recebe argumentos em sua linha de comando, estes sio chamados de parametros posicionais, Eles sio mumerados de acordo com a orem em que foram passados Exemplo: $ cat local.sh #Programa recebe e mostra dados echo Cidade: $1 echo Estado: $2 echo Pais: $3 $ ./local.sh Hiteréi "Rio de Janeiro" Brasil Cidade: Niteroi Estado: Rio de Janeire Pais: Brasil Como pode ser visto no exemple, 0 programa chamade local recebe 3 argumentos, O primeira Cidade. é guardado na varidvel SL. o segundo, Estado, em $2 ¢ 0 tereciro, Pais, em $3. Porém, 0 shell limita ¢ iftn ue faz com que os primeiros a argumentos passados nao fagam parte na contagem de argumentos 19-0 mimero de argumentos. Para trabalhar com essa limitacao, existe o comande UNIVERSIDADE FEDERAL FLUMINENSE 50 PEWELE)} LINUX 4.5. Passagem de panimetros ¢ a trodugiiv ao seript-shell pa Exemplo: Serdo passados mais de 9 argumentos para o programa, mas através do uso do comande shift sera possivel listar todos $ cat shift.sh #Programa recebe e mostra dados usando shift echo Argumentol: $1 acho Argumento2: $2 echo Argumento3: $3 ho Argumento4: $4 cho Argumento5: $5 Argunento6: $6 Argumento?: $7 cho Argumento8: $8 Argunento9: $9 shift $ acho Argumento10: $1 echo Argumentoll: $2 $ ./shift.shabcdefghijimn Argumentot Argumento2 Argumento3 Argumentod Argumentod Argumento6 Argumento? Argumento8 Argumento9: Argumentol0: j Argumentol1: 1 la também os parametros especiais que podem ser usados pelo programa $* - Este parametro informa tuma string com todos os argnmentos passados para o programa, onde cada argumento aparece separado pelo IPS (veja a segao 5.8, que fala de variveis de sistema} Este parametro 6 semelhante ao anterior, poréin os argumentas aparecem separados por espagos em branco. $44 - Este informa o unimero de argumentos passados na chamada do prog $? - Este guarda o valor de retorno do iiltimo comando executad, Quando a exeengao do programe avontece normalmente, retornado 0, ¢ se tiver ocorrido algum ero @ retornado um. valo diferente de zero. = Informa o niimero do processo de un determinade programa (PID) UNIVERSIDADE FEDERAL FLUMINENSE al PEHELE)) Capitulo 4. Introducdo ao sevipt-shell para LINUN 4.5. Passayem de parimetros © ar $1 - Informa o mimero do proceso do tiltime programa sendo executado em backgroand. $0 - Informa o nome de I script executado. Exemplo: Sera visto o uso de alguns desses parametros especiais $ cat parametros.sh # Mostra os dados relativ § aos parametros passados 0 Foram passados $# ar echo Os argumentos foram: $@ $ ./parametros.sh um dois trés quatro Foram passados 4 argumentos Js argumentos foram: um dois trés quatro 4.5.1 Leitura de parametros Quando for necessiri passar alguim dado para o programa, usa-se 0 comando read, que le a entrada eserita uo terminal Exemplo: $ cat read.sh # uso do comando read echo Digite uma palavra read algo echo Vocd digitou: \"$algo\" $ ./read.sh Digite uma palavra Por que néo uma frase? Voc8 digitou: "Porque ndo uma frase?! Este comando permite ainda a passagem de uma lista de variiveis, desde que estas venham sepa radas entre espagos em branco. Exemplo: Agora o programa read sofreu uma madificagio para receber uma lista de variaveis $ cat read.sh # uso do comando read echo Digite umas palavras read prim segun ter echo Yoc8 digitow UNIVERSIDADE FEDERAL FLUMINENSE 2 PEWELE)} Capitulo 4. tntroducdo ao seript-shell para LINUX 4 ros € arpa acho \"$prim\" cho echo $ ./read.sh Digite unas palavras Mas agora eu quero digitar uma frase! Voc8 digitou Mas" ‘agora! ‘eu quero digitar uma frase! Se forem passadas mais variiveis do que o comando read vai ler, a variével excedente ¢ interpretada ‘omo se fizesse parte da tiltima varidvel. Como pode ser visto pelo exemplo anterior, onde foram passadas mais varidveis da que as 3 que o programe leria, Entao, a terecira variavel ficaw com uma mas opgdes podem ser usadas com o comando read. Sao elas # -p Nos exemplos acima foi preciso usar o comando echo toda ver antes do comando read Porém, isso nao 6 neeessiirio, basta usar esta ocho. O proximo exemplo mostra como, Exemple: $ cat read.sh # uso do comando read read -p "Digite umas palavras:" prim segun ter echo Voce digitou echo \"$prim\" echo \"Ssegun\" echo \"Ster\! $ ./read.sh Digite umas palavras:Dessa vez o echo nao foi usado antes Yoc® digitou "Dessa" “vez" "o echo no foi usado antes" #-s — Esse parametro serve para ndo ecoar o que foi digitado. Seu uso principal é na leitura de sembas ¢ Onde nome & 0 nome que seri dado a fungao eriada, E comandos defincm o corpo da fingae \ principal vantagem de usar fimgdes ¢ a possibilidade de organizar 0 codigo do programa em mddulos © exemplo ase uir demonstra 0 uso de funcdes em script Um menu de opgdes & mostrado, sendy ue cada opgiv leva A esecucdo de uma fuugio diferente #!/bin/bash # # Este script executa as fungées basicas de uma calculadora: # Soma, Subtragao, Multiplicagao ¢ Divisao # # clear menu() { echo Calculadora Basica " echo Operagdo apenas com inteiros " echo “| ' echo "| Escolha uma das opgdes abaixo: |" echo “| ' echo "| 1) Soma ' echo "| 2) Subtragao : echo “| 3) Multiplicagao : echo "| 4) Divisdo ‘ echo "| 5) Sair ' echo “| ' echo “| ' read opcao e Sopcao in UNIVERSIDADE FEDERAL FLUMINENSE 5 PEWELE)} Capitulo {._Introdugao ao seript-shell para LINUX 6 (des 1) soma ; 2) subtra ; 3) mult ; 4) div 5; 5) exit ; +) “Opgao Inexistente" clear menu 33 esac 3 soma() { clear echo “Informe o primeiro mimero' read nun echo "Informe o segundo mimero read nun? echo "Resposta = ‘expr Snumt "=" $num2*" nen + subtra() { clear echo “Informe o primeiro mimero read numi echo "Informe o segundo mimero read num2 echo “Resposta = ‘expr Snumt "-" $num2‘" menu + mult () { clear echo “Informe o primeiro mimero read numi echo "Informe o segundo mimero read num2 echo “Resposta = ‘expr Snumt "+" $num2‘" menu UNIVERSIDADE FEDERAL FLUMINENSE PEGELE)} Capitula 4. Tutreducdo ao seript-shell para LINUX 4.6. Fungaes + div { clear echo "Informe o primeiro nimero! read numt echo "Informe o segundo nimero! read nun? echo "Resposta = ‘expr Snuml "/" $num2‘" menu + menu Repare ne seript acima que a fungae menu foi colocada no final do programa, Experimente ehamar a fincie menu no inicio ¢ veja o que acontece 4.6.1 Execugao de script por outro script F possivel executar wm script de outro arquivo com se ele fosse uma fingao qualquer dentro de outr programa. Para isso, basta escrever: . nomescript no lugar onde ele deve ser exeeutado. Tendo como base o exemplo anterior, podemos mostrar a execuyio de scripts dentro de outros O primeiro programa 0 script principal referente ao menu de opgoes. Observe como as operagoes sin chamadas #!/bin/bash # # # Este script executa as fungées basicas de uma calculadora # Soma, Subtragao, Multiplicagao ¢ Divisao # # PARTE -> MENU # # clear menu(){ echo Calculadora Basica " echo Operagdo apenas com inteiros echo “| ' echo “| Escolha uma das opgdes abaixo echo “| ' UNIVERSIDADE FEDERAL FLUMINENSE 56 PEWELE)} Capitulo 4. Introdueiio ao script-shell pare LINUX jo ces echo "| 1) Soma ' echo "| 2) Subtragao ' echo "| 3) Multiplicagao echo "| 4) Divisdo ' echo "| 5) Sair ' echo “| ' echo “| ' read opcac case $opcao in 1). soma.sh 5; 2) . subtra ;; 3). mult 5 4). div ; 5) exit 5 +) “Opg&o Inexistente" clear menu 55 esac 3 menu O seript seguinte refere-se a operagao de soma #1/bin/bash # # # Este script executa as fungdes basicas de uma calculadora # Soma, Subtragdo, Multiplicagao e Divisdo # # PARTE -> SOMA soma() { clear echo “Informe 0 primeiro nimero read nunt echo “Informe 0 segundo niimero read echo osta = ‘expr Snumi "+" $nun2‘" menu + soma UNIVERSIDADE FEDERAL FLUMINENSE PEGELE)} cio ao seript-shell 4.7. Depurugé 4.7 Depuragao Para verificar os problemas © possiveis causas de erros que acoutecen pre da seguinte forma: $ sh -x prog nos seripts, basta rodar « \ opefto =x faz com que o programa seja executado pa eros passo, facilitando a identificagio de UNIVERSIDADE FEDERAL FLUMINENSE 58 PEWELE) Capitulo 5 Manipulagao de variaveis Variiivel & uma posigdo nomeada de memoria, usada para guardar dados que podem ser manipulados pelo programa Em si ‘io & necessirio declarar a variavel como em outras linguagens de programacio 5.1 Palavras Reservadas Palavras reservadas sio aquelas que possuem um significado espeeial para e shell Q Shel possui comandos proprios (intrinsecos} como ! case do done elif else esac fi for function if select then until while { } time ([{ J] in Além disso, o Unix possui outros comands, vistos wos eapitulos anteriores, Em programacao, geralmente traballamos com manipulacao de vari is. Dessa forma, ¢ impor ante lembrar que o uso dessas palavras deve ser evitado, tanto no nome dado as varidveis quanto ne nome dado av seript 5.2 Criagdo de uma variavel Uma variavel @ criada da seguinte forma $ nomevar-valor Uma variivel @ reconhecida pek simbolo 6 encontrado, © sheli substitui a varidvel pelo seu contetido, nomevar ¢ 0 nome da varivel ¢ valor &o conteilo que sera atribuido a variavel. E importante assegurar que ndio haja espaco antes depois do sinal "—"para evitar possiveis erros de interpretacao, No exemplo acima, foi eriada uma variivel local. Para criar um variavel global, @ usado 0 comando export, $ export nomevar ou $export nomevar valor Exemplo; Sera atribuido um valor a variével chamada var, ¢ em segntida este valor sera mostrade juando ela vem precedida pelo simbolo 8. Quando este pelo comande echo. Janipulacio de 2. Criagio de wma variével $ var=Pensamento $ echo "0 contetido é o Svar" O contetide @ o Pensamente Vale Jembrar algumas regras para a nomenelatnra de varidvels que se aplicam as linguagens dé programacao. © O nome da variavel sé pode comecar com letras ou andertine, © Sau permitidos caracteres alfanuméricos Nao devem haver espacos em branco nem acentos Exemplo: Veja 0 uso de aspas simples, duplas ¢ erases com variaveis: $ variavel="Meu login é: $user" $ echo $variavel Meu login @: ze $ variavel=’Meu hostname é: $HOSTNAME? $ echo $variavel Meu hostname é: $HOSTNAME $ variavel="0 diretorio de trabalho @: ‘pud‘! $ echo $variavel 0 diretorio de trabalho é: /home/ze Quando vamos executar um script on comando, um outro shell eentio retorna ao shell original onde foi feita a chamada, Por isso é importante lembrar de exportar filho” chamado, exeeuta os commandos suas varidveis para que clas sejam reconhiecidas pelo "shel $ cat dir.sh #!/bin/bash echo "Veja que o diretério vai mudar' echo “Inicialmente o diretério era: $PHD" # neste ponto o diretorio mdou cd /usr/bin echo "Agora o diretério atual @ $PYD' echo "Mas terminado o programa parece que nada aconteceu 3 diretério continua sendo 0 inicial.' $ sh dir.sh Veja que o diretério vai mudar Inicialmente o diretério era: /hone/kurumin/scripts Agora o diretério atual é /usr/bin Mas terminado o programa parece que nada aconteceu 3 diretério continua sendo o inicial € UNIVERSIDADE FEDERAL FLUMINENSE an) PEWELE) lagio de 5.3. Delogdo de wna variével 5.3 Delegao de uma variavel Uma variavel @ apagada quando for usado o comando unset. Sunset nonevar Exemplo: Vamos ver o que acontece quando a varidvel var, criada anteriormente, for deletada $ unset var 3 echo "0 contetide é 0 Svar" 2 conteiido @ ¢ 5.4 Visualizagao de varidveis Utilizando o comande set ¢ possivel visualizar as varidveis locais e com o comando env as variiiveis globais podem ser vistas. 5.5 Protegao de uma varidvel Para evitar alteragies ¢ delecio de uma determinada variével usa-se comande readonly. Dessa forma. a varidivel ganlia atributo de somente leitura $ readonly nonevar Todas as varidveis readonly, uma vez declaradas, nao podem ser "unsetadas"ou ter seus valores modificados. O-fnico meio de apagar as variaveis readonly declaradas pelo usuario @ saindo do shell logout} 5.6 Substituicgdo de variaveis Aléan de substituigéo de varidveis (varidvel pelo se 1 contenido, visto em esemplos anteriores). outros ipos de substituigaes sio possiveis no she As prineipais sao: * Substituicéo de comando - Nesse caso, nome do comando é substituido pelo resultado de sita operaao quando « for precedido pelo simbolo $ e entre {} ou vier entre sinais de erase () $(comando} ou comando Goralmente este tipo de manipulagao ¢ utilizada na passage do resultado de um eamando para uma variavel ou para outre comando. Exemplo UNIVERSIDADE FEDERAL FLUMINENSE 61 PETELE)} 5.7. Varidveis em vetores Manipulag 3 dir=‘pwd $ echo "O diretério atual tem o seguinte caminho: $dir" 0 diretério atual tem o seguinte caminho: /home/kurumin/scripts 5.7 Varidveis em vetores O shell permite o uso de varidveis em forma de array. Ou seja, varios valores podem ser guardados uma variavel seguindo a orden de una indesagio, Assim como mio @ necessario declarar 0 tipe le variével no infeio do programa, também nao ¢ preciso declarar que wna variével sera usada come vetor Um array @ criado automaticamente se for atribuido um valor em uma variével da seguinte forma nomevar [indice] -valor, onde indice ¢ um mimero maior ow igual a zero Exemplo: $ camada[0]=Fisica $ camada(1]=Enlace $ camada(2]=Redes $ echo "As 3 camadas mais baixas da internet sao: ${camad: As 3 camadas mais baixas da internet so: Fisica Enlace Redes Outra forma de se atribuir valores em array & nomevar=(valort, valor2, » valorn). $ camada=(Fisica, Enlace, Redes) $ echo "As 3 camadas mais baixas da internet sdo: ${camada[+]}' As 2 camadas mais baixas da internet séo: Fisica, Enlace, Redes Para fazer referencia a um elemento do array’ é 86 fazer: ${nonevar Lindice] }. Para ver toda a lista de valores do array basta fazer ${nomevar[*]} ou S{nomevarLe]} A liferenga entre 0 uso do * on « é semelhante a diferenga vista no uso de paramettos especiais. 5.8 Varidveis do sistema Bxistem algumas variaveis que sao proprias do sistema ¢ outras que sao inicializadas divetamente pel rnias dessas varidiveis, denominadas varidveis do shell sio explicadas abaiso HOME — Contém o diretério home do usuario, LOGNAME | Contém 0 nome do usmarin atual ). Geralmente, o IFS TPS — Contém o separador de campos ow argumento (utereal Pietd Sepat um espaco, tab, ou nova linha, Mas @ possivel mudar para outro tipo de separador Exemplo UNIVERSIDADE FEDERAL FLUMINENSE a PEHELE)) 5. Manipulagio de varidveis 5.8. Varidveis do sis num=(1 2 3 4 5) echo "${num[*]}' 2345 echo "${num[@]}' 2345 OLDIFS=$1FS. IFS=’-? echo "${num[+]}"' 2-3-4-5 echo "${num[@]}' 2345 echo $IFS $ echo "$IFS" $ IFS=$OLDIFS $ echo "SIRS" Vamos entender « que foi feito: foi eriado wn yetor para ilustrar o IFS quando forem usados os caracteres ¢* para listar 0 array. O IPS inieial € um espago em branco, entao tanto pele uso do como pelo uso do *, os elementos foram listados separados por um espaga em branco Bm seguida una variavel ehamada OLDIPS reeebeu o contenido de [PS ¢ IFS recebew win hifen (-}. A separagio na listagem dos elementos sain diferente, ou seja, o nove sepavador foi usa quando foi usado o asterisco, Finalmente, © IFS reeeben seu valor inicial, espago em bianco. Essa mudanga permaneee somente na sega cur que foi modifieada e até que ela seja fechada PATH © Armazena wma lista de diretérios onde o shell procurara pelo comando digitado, PWD — Contém o diretorio corrente. PS1 Esta édenominada Primary Prompting String. Ou seja, ela & a string que estéi ne prompt que vemos no shell Geralmente a string utilizada & \u@\h:\w $. O significado desses earacteres « de outros principais esta explicado abaixo © \e. 0 nome do shell © \u Nome do usuiitio que esta usando 0 shell © \bG hos me © \w Contém o nome do diretirio corente desde a raiz ¢ \d Mostra a data no formato: dia_da_semana més dia. # \nnn Mostra o caracter correspondente em mrimeros na base octal @ \t Mostra a hora atual no formato de 24 horas, HH:MMESS. © \T Mostra a hora atual no formato de 12 horas, IL:MMESS UNIVERSIDADE FEDERAL FLUMINENSE 63 PEWELE)) lo 5. Manipulagao de varidveis 5.8. Varidveis do sistema © WW Contém somente o nome do diretério corrente ecunlario PS2— Esta édenominada Secondary P: i i. Bla armazena a string do pre © padrao usado & 0 earacter >, Mas por jade para os earacteres mostrados cima ser tn) MAIL Eo nome do arquivo onde ficam gnardados os e-mails COLUMNS © Contém o niimero de colunas da tela do terminal LINES © Contém o mimero de linhas da tela do terminal. Existom mnitas outras varidveis que sio deseritas ma pigina do manual de Bash, ua secae Shelt Variables, UNIVERSIDADE FEDERAL FLUMINENSE 64 PETELE)} Capitulo 6 Testes e Comparacoes em Script-Shell 6.1 Cédigo de retorno Antes de falar sobre test © comparagaes & importante que-o usuario entenda como as decisdes sit omadas dentro de um programa Todo comando do UNIX retorna um eédigo ¢ este 6 chamado eddigo de retorno. Quando o comand executado sem erros. 0 codigo retornado vale 0. Porém, se houver alguna falha, & retornado an nimero diferente de 0 © earacter especial ?- funciona como uma variavel que guarda o codigo de retorno do comande anterior. O exemplo abaixo mostra o resultado da operagao de alguns comandos Exemplo: Quando acontece algun erro na le zero xecucao do comando, 0 cddigo de retorne é diferente $ echo "$PS1 \uo\h: \w\S $ echo $7 $ rm documento. txt rm: cannot lstat ‘documento.txt’: No such file or directory $ echo $7 1 6.2 Avaliagao das expressdes As expresses sito avaliadas ne sfiell através do comando test on pelo uso da expressao entre colchetes |. uma maneira mais pratica do uso do comando test, $ var=2Z $ test Svar = 0 $ echo $7 1 $ [ Svar = 22 $ echo $7 16, Testes ¢ Comparacies en Seript-Shell 6.3. Operadores booleanos O resultado da expresso ¢ retornade 0 para verdadeire ow nao 0 para falso 6.3 Operadores booleanos Os operadores hooleanos so relacionados & 1 €, OU, negagdo entre outras relagies, Os operadores ue podem ser usados em expressies no sell sho © -a-e (and) * -0- on {or #1 negagao (not) \ combinacao desses 3 operadores pode gerar ontras fungdes logicas. Varias condigGes também podem ser agrupadas com a uso de eondio" Ex $ cat boole.sh #!/bin/bash read -p "Informe um mimero e uma letra: " num letra if C\C "$num" -gt 0 -a "$num" -1t 10 \) -o \( Sletra =v \) 7 then echo “Acertou a faixa do numero ou a letra else echo "Errou as duas informagses fi $ sh boole.sh Informe um nimero e uma letra: 15 ¥ Acertou o faixa do numero ou a letra $ 6.4 Testes Numéricos As relagies utilizadas para testes mtnérivos sia as descritas abaixo © -eq— Igual a (equal to) Maior que (greate in) Maior ou igual rater or ¢ © -1t Menor que ss thaw) Le Menor ow al (less or equal @ -ne Nao-igual wot equal to) UNIVERSIDADE FEDERAL FLUMINENSE 66, PETELE)} » G, Testes e Comparagées em Script-Shell a \ sintae para teste 6 1 var/niimero relagao var/ onde var/nimere indica o conte Exemplo: mero ] sido da varidvel ou um mimero. $ nun=10 $ [ $num -eq 9]; echo $? 1 $ [ $num -le 9]; echo $7 1 $ [ $num -ge 91; echo $7 Outra mancira de realizar o teste é colocando var/nimere entre aspas. Dessa forma evitamos : searrencia de erros [ “var/niimero" relagdo “var/nimero" J Exemplo; Observe o que acontece quando a expressao @ comparada com o valor nulo seni aspas $ [ $num -ge 1; echo $7 bash: [: 10: unary operator expected 2 $ [ "$num" -ge "1; echo $? 6.4.1 O Comando let Este comando permite ontra maneira de fazer testes numéricos, Em vez de usar as relagoes citadas anteriormente, sao usados os simbolos . Igual & © Maior que . Major on igual © Menor que . Menor ou igual Nao-ignal a \ sintaxe ¢ let expressdo Exemplo: $ let "0 I= 1 $ echo $7 UNIVERSIDADE FEDERAL FLUMINENSE 7 PERELE) 16, Testes ¢ Comparacies en Seript-Shell 6.5, Testes de Stri Uma variagio dese comando ¢ 0 uso de parénteses duplo: (Cexpressao)) $ ((0 <= 5)) ; echo $7 Bssa ¢ wna sintaxe semelhante a da Tinguagem C, Outro uso connun é no incremento de variaveis let var++ # equivalente a "var-$[ Svar + 1 J" let var-- # equivalente a "var-$[ Svar - 1 J" Exemplo: $ num=102 $ let nun++ $ echo $num 103 $ num=$[Snum + 1] $ echo $num 104 $ num=$((num=1)) $ echo $num 105 $ let num=num+1 $ echo $num 106 $ let num $ echo $num 110 6.5 Testes de Strings O tamanho de uma Ex: ‘ng pode ser obtido pelo uso do comando expr length streng. $ expr length palavra 7 $ Ex: #!/bin/bash echo "Digite a senha read -s senha UNIVERSIDADE FEDERAL FLUMINENSE 6s PETELE)} Capitulo 6 Testes ¢ Comparacies em Seript-Shell 6.5, Testes de Strings comp=$(expr length senha) if [ "Scomp" -1t 6 -o "Scomp" -gt 9 ] then echo "Senha Invalida. echo "Por seguranga néo sao aceitas senhas com menos de 6 caracteres ou mais que 9." echo "Informe uma nova senha." else echo "Senha aceita." fi Os operadores para testes de siring podem se Bindrios # =~ Retorna verdadeiro se as duas sfrings forem ignais $ str-palavra 3 [ "$str" = "cadeia" ] 3 echo $7 1 Retorna verdadeiro se as duas strings forem diferentes Unarios al 0, @ -2- Retomna verdadeire se 0 comprimento da séring 6 ig # -n- Retorna verdadeiro se 0 comprimento da string ¢ diferente de 0. 3 ( -n Sstr 3 echo $7 c Yo mesmo modelo para a comparagio mmériea \ sintase para a comparagio de string 5 I"var/string" relagao "var/string"'] \ preferéneia para o uso de aspas foi dada porque geralmente as sirizgs contém espacos em branco: Assim, sao evitados ertos de interpretacao pelo shell UNIVERSIDADE FEDERAL FLUMINENSE «9 PETELE)) 06. Testes ¢ Comparacées em Seript-Shel Testes de arquivos 6.6 Testes de arquivos Sempre que vamos trabalhar com arquivos & necessatio realizar testes como os mesmos para evitar vos, Para testar arqutis is existem as opgdes dO arquivo é um diretorio. 26 O arquivo existe Ean arquivo normal sO tamanho do arquivo @ maior que zero. #-r O arquivo tem permissin de leitura ww O arquivo tem permissio de escrita © -x 0 arquivo tem permissio de exeeugao A sintaxe usada deve se opcdo arquivo | Ex $ 1s -1 arqui.txt data -rwxrwxrwx 1 pet Linux 161 2005-04-09 21:42 ctw-r--r-- 1 pet linux 95 2005-04-07 22:00 druxr-xr-x 3 pet linux 1312 2005-01-07 22:57 $ [ -d scripts ] echo $7 ( -d arqut.txt J echo $? [-e arqui.txt J echo $? echo $? ( -r data 7 echo $? [ -x data 2 $ $ $ 1 $ $ $ [ -f arqui.tzxt ] $ $ $ $ $ echo $7 1 argut.txt data scripts UNIVERSIDADE FEDERAL FLUMINENSE i PETELE)) Capitulo 7 Controle de fluxo das mais importantes estruturas & 0 controle de fluxo. Com sucao do programa pode ser alterada de forma que diferentes sua orden alterada de acordo cont as deeisus tomadas. Sac Para as linguagens de programaeao, wn © shell nda ¢ diferente, Com ele, a e omandos podem ser executados au te ealizados saltos, desvios ow repetigoes. Nas proximas secdes explicaremos cada tipo de estrutura 7.1 Dee \ estrutura de decisio simples ¢ aquela que realiza desvios no fluxo de controle, tomando com base ¢ este de- una condigao dada, uma opgan entre dias que podem ser esealhiidas Uma decisio simples @ nna construgio com os comandos if/then. Isso representa s@ condigae entao realiza determinado comando Sintaxe sdo simples io); then if Lexpre: conando fi Ex; Este programa bem simples mostra o uso do if, Hé um arquivo chamado 1ivro untelido segue abaixo: t uj #LIVRO #EXEMPLARES seinteeNnnNnhoRRRRNeRBadERE eletromagnetismo 5 redes 4 cAlculo 8 Fisica 6 eletrénica 7 O programa abaixe mostra o miimero de exemplares de um determinado assunto, Mas. primeiro. 6 verificada se o livro esta na lista #!/bin/bash echo -n "Qual livro vocé deseja? ' Decision Capit read Livro if grep SLivro livro.txt>>/dev/null then echo "0 livro $Livro possui ‘grep Livro livro.txt|cut -£2‘ exemplares.' else echo "Este livro nfo esta na lista’ fi Obs: O diretivie {dev/null # um Ingar para onde redirecionamos a saida de uni comande quande nao @ desejavel que cla aparega no prompt. 7.2 Decisao miltipla Este tipo de estrutura engloba, aléim dos comandos vistos anteriormente, os comandos elif ¢ else, Neste caso, se a condigao dada nao for satisfeita, ha outro caminho a ser segnide, dado pelo elif, que seria a combinagao de else com if {senso se...). A diferenca eutre 0 uso de elif e else if 6 que, se io, seria necessiirio usar 0 £1, fase usado 0 Sintaxe if [expres comando elif (expressdo]; then comando elif [expressao]; then conando else conando fi 1 O comando case Outra forma de fazer desvios miiltiplos & pelo uso do comando case . Ele é semelhante ao if pois representa tomada de decisio, mas permite miitiplas opgoes. Esta estrutura @ bastante usada qande & nevessirio testar um valor em relacdo a outros valores pré- estabelecidos, onde eaca um desses valores tem um bloco de eomando associado. 40 Estado de acordo com o DDD digitado Ex: Este exemplo PETELE)) UNIVERSIDADE FEDERAL FLUMINENSE i Contro echo "Insira 0 cédigo DDD: ' read cod case $cod in 21) echo "Rio de Janeiro"; 11) echo "Sao Paulo"; 3[0-8]) echo "Minas Gerais"; *) Echo "Insira outro cédigo";; Decisio com && e |] Esses caracteres permitem a tomada de decisoes de uma forma mais reduzida \ sintaxe usada ¢ comando1 & comando2 comando1 || comando2 O && faz com que c comando2 sé seja executado se comandot retornar 0, ou seja, se comandol retornar verdadeiro 0 comando? & exeentado para testar se a condicho toda é verdadeira © || executa © comando? somente se 0 comando1 retornar uma valor diferente de 0, ou seja, somente se comando1 retornar falso é que comando2 sera executado para testar se a condigao toda é verdadeira. Ex: Se o arquivo Livro. txt realmente existir sera impresso na tela: O arquivo existe ( -e livro.txt ] && echo "Arquivo Exis Bax: Se o divetivin NovoDir nao existir ¢ criado wm diretério com o mesmo nome ed NovoDir 2> /dev/null || mkdir NovoDir 7.3 Controle de loop Existem 3 tipos de estruturas de loop, que serdo vistas na proxima segio, Esse tipo de estrutura ¢ uusada quando @ preciso executar um blaco de comandas varias vezes 7.3.1 While Nesta estrutura é feito o teste da condicao, em seguida ovorre a excengan dos commandos, A repetigic rcorte enqnanto a condigio for verdadeita uhile do done UNIVERSIDADE FEDERAL FLUMINENSE PEWELE)} Capit Contro fie 7.3. Controle de loo condigao pode ser um teste, uma avaliagao ou um comando. Ex #!/bin/bash acho “Tabela de Multiplicagéo do 7 is? n=0 while ( $n -le 10 do echo $i x $n = $(($i + $n)) let nt+ done 7. Until Neste caso, a repeticao oeorre enquanto a condicao for falsa, Ou seja, primeiramente a condicao testada, se 0 codigo de retorno for diferente de zero os comandos sto eseeutados. Caso comtrario, a execugau do programa continua apés ¢ | until do done condigao pode ser um teste, uma avaliagao ow um comando. Ex: Este exemplo é semelhante ao exemplo anterior do comando while. O que mudow foi a andigio de teste #!/bin/bash acho “Tabela de Multiplicagéo do 7 27; n=105 until [ $n -eq 0 do echo $i x $n = $(($i * $n)) let n done 7.3.3 For 4 sintaxe da estrutury 1 6a seguinte UNIVERSIDADE FEDERAL FLUMINENSE 7 PETELE)} i Contro for variavel in sta do done Seu funeionamento segue o seguinte principio: variavel asst os valores que esto dentro da lista Inrante os lonps de execngao dos comandos. .As listas podem ser valores passados como parametzos tadlos de al un arquivo on o resultado da exeeugio de algum comando, Como exemplo abaixo fica ender isso. Ex: Este programa eria diretéries com o nome diretorioNUMERO, onde NUMERO vai de La 5 mais facil de #!/bin/bash for i in ‘seq 1 5¢ do nkdir diretorio$i done © comando seq HurInicial HumPinal faz wna contagem seqitencial do mimero inicial dado at > uiimero final Para estes 3 tipos de construgio de loops, existem dois comandos que permitem alterar a rotina le sua exeeugao . Sio eles: © break [n] - Este comando aborta a execugao do foop salta para a prosima iusteugao apds « loop. continue [n] - Este comando faz com que o thuxo de exeeugio do prog de loop antes de completii-lo. ama volte para o inc Ex: O Excmplo abaiso ilustra 0 uso de break ¢ do continu #!/bin/bash echo "Tente acertar o mimero echo "Dica: Ele esté entre 10 e 50 ast while true do echo "Digite o limero: " read num| if [ $num != 30] then echo "Vocé errou. Tente outra vez" let itt continue UNIVERSIDADE FEDERAL FLUMINENSE 75 PETELE)} Cay fuer 7.3. Controle de looy £ [ $num == 30 -a $i == 1) then echo Vocé acertou de primeira. Parabéns! break C $num then echo Voc8 acertou apés $i tentativas break done UNIVERSIDADE FEDERAL FLUMINENSE 76 PEGELE)} Apéndice A O Projeto GNU e o Linux As informagdes completas que GNU, veja ref. [LI] © Projeta GNU foi idealizadlo em 1983 como wna forma de trazer de volta 0 espirito cooperative ue prevalecia na comunidade de informtiea nos seus primordios — pare {40 neste capitulo podem ser eneontradas na pagina oficial do Projet 2 Lorttat a cooperagio possivel uma vez Em L97L, quando Richard Stallman inieiow a sua earreira no MIT, ele trabalhava em am grupo que usava software livre exclusivame Programiadores era livres para cooperar entre si, ¢ freglientenmente faziann isso is, removendo os obstaculos impostos pelos donos do sofuvare proprietitrio Mesio as empresas de informatica distribuiam software livre Nos anos 80. qase todo o sefheure era proprietitrio, o que significava que ele tinha donos que proibiam ¢ impediam a cooperacao entre os usuidrios. Isso Lornon o Projeta GNU necessario. Todo usuario de computadores necesita de um sistema operacional: se nfo existe um sistema speracional livre, voce nao pode nem mesmo iniciar © uso de um computador sem recorrer ao software proprietario. Portanto, o primeito item na agenda de sofheare livre @ um sistema operacional lives Nos anos 90, este objetivo foi atingide quando wn kernel livre foi desenvolvide por Linus Torvalds ste kernel era o Linx. A combinacao do Linx como quase completo sistema GNU resulton em am sistema operacional completo: un sistema GNU baseado no Linux (GNU Linux}, incluindo Slackware Debian, Red Hat, entre outras, Leia 0 artigo: a Linus uo site do projeto GNU Um sistema UNLX-like @ composto por muitos programas diferentes. Alguns componentes ja fweare livre, por exemplo, X Window, TeX, GNU Emacs, GNU C, Bash Ghostscript, Atualmente, se tem feito um esforge para fornecer soflaare para usnitrios que nao sic especialistas em computadores, Portanto, estamos trabalhando em um desktop baseado em feones esto disponiveis como so, tilizando arrastare-soltar para ajudar os inieiantes a utilizar o sistema GNU © projeto GNU nao 6 somente desenvolvimento e distribuigae de softwares livres, O coragia de projeto GNU é uma idéia: que o software deve livre A.1 Software Livre A expressao "Software livre''se refere a liberdade dos usuarios executarem, copiarem, distribuirem. studarem. modificarem ¢ aperfeigoarem 0 software. Mais precisamente. ela se refere a quatro tipos {e liberdade, para os usudtios do software L.A liberdade de executar o programa, para qualquer propasite. Apendice A. O Projeto GNU eo L 4.1. Software Livre 2. A liberdade de estudar como 0 progr funciona ¢ adapticlo para as suas necessidades, Avesse ao cédigo-fonte & an pré-requisito para esta liberdade 3, A liberdade de redistribuir e6pias de inodo que voce possa ajudar ao seu proximo, L.A liberdade de aperfeigoar o program comunidade se beneficie. Acesso ao cddig iherar os seus aperfeigoa 1s, de modo que toda a esta liberdade mite & am pre-requisite pa FE importante ressaltar que Softieare Livre esta ligada a liberdade de expressao, ¢ nao de prego. UNIVERSIDADE FEDERAL FLUMINENSE 78 PETELE)) Apéndice B Editor de textos vi O programa VI é o mais famoso editor de texto ASCIL do UNIX. Foi desenvolvido em Berk University wie por Willian Joy, a partir do editor UNIX Ed O VI trabalha em tres modos © modo digitacao ("aon ‘i # modo comando interna () © comando na diltima linha (":") B.1 Comandos internos - vi * teclar a letra correspondente: As letras que podem ser usadas sio listadas abaixo 1h move o cursor para a esquerda 1 move o cursor para a direita move o cursor para baie move o cursos para cima “£ move uma tela para frente “b_ move uma tela para tris a insere caracter & direita do cursor A insere caracter no final da linha i insere caracter & esquerda do cursor T insere caracter no inicio da linha 0 insere linha abaixo do eursot 0 insere linha acima do cui ue desfaz altima moditie UJ desfaz todas as modifica Xa oes feitas na linha caracter 1 palavra dd - apaga link 3 substitui earacter cw substitu palavra ring procura siring 2 string move o cursor para a ocorréncia anterior da palavra dice BL Biitor de textos vi B22 Comandos da iiltima linha - vi 1 repereo filtimo | on? B Comandos da iiltima linha - vi * teclar : e 0 comando correspondente:, Us comatidos padem ser os listados abaixe get num cummera o tex set nonu retira umes 5,10 4 da linha 4 at 1,2.co4 cy 4,5 0 6 move linhas 4 5 para depois da linha 6 1 ~ posiciona o cursor na primeira linha do texte $ posiciona o cursor no final do teste w- salva o arquivo e continua editandc q! sai do editor de textos sem salvar 0 arquive x sai do editor de textos e salva 0 arquive Existem também ontros editores de texto em sistemas UNIX como o vim, emaes, joe, jed, pico. a linhas 1 © 2 para depois da linha 1 UNIVERSIDADE FEDERAL FLUMINENSE 80) PETELE)} Referéncias Bibliografic [1 Neves, Julio Cezar, Programagio Shell Linus, Editora Brasport. Rio de Janeiro, 2000) [2 Aranjo, Jairo. Comandos do Linwr - Uso efieiente ¢ avancade, Exitora Ciéncia Moderna Ltda, Rio de janeiro, 2001 [3 Tanenbaum, Andrew §., Sistewas Operacionais, Tradugaio D. A. Polli, USP, 2000. [1 Raine, Rodivaldo Marcelo. Book Express, Rio de janeiro, 2000 © Basico de programagao em POSIN-Shell Sevipt, Edlitora [5 Tanenbaum, Andrew S.. Organizagao Este Terceira edigio, Editora Prentice, Hall do Brasil . Rio de Janeiro, 19 de Conaput Sites (6 Guia focalinux niveis. ror, Este site contém guias sobre GNU, Linus de todos os |7 Bash FAQ. a0 Bas fip.cwrncedu pub FAQ, Perguntas e diividas mais freqiientes relacionadas |S Expressées Regulares . guia-er.sourceforge.net, Guia sobre expresses regulares 9 Lista de discussio hoogrupos roups. yahoo.com ron i, Lista de discussdo do ya- 10) Shell Sei Jargas. p { - Por que programar tem que ser divertido. www, curvliv. net, Aurélio Mainly a pessoal. Contém uma vasta lista para referencias sobre seript-shett 11 Projeto GNU, wn ory, Pagina oficial do projeto GNI brstinue.ony

You might also like