Prévia do material em texto
Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br LINUX Apostila Básica de Linux versão 1.0 SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX i Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br HISTÓRICO DE ALTERAÇÕES Data Versão Descrição Autor 05/08/2010 1.0 Elaboração/Revisão Fábio Rogério da Silva José 05/08/2010 1.0 Revisão/Formatação Rita de C. Mayumi Seki SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX ii Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Conteúdo 1 COMANDOS DE USO GERAL .................................................................................................... 1 2 SISTEMA DE ARQUIVOS DO UNIX/LINUX ................................................................................ 2 2.1 ESTRUTURA HIERÁRQUICA ............................................................................................... 2 2.2 FORMATO DO SISTEMA DE ARQUIVOS ............................................................................ 4 2.3 CAMINHOS ........................................................................................................................... 5 3 DIRETÓRIO DE LOGIN ............................................................................................................... 6 4 COMANDOS DE MANIPULAÇÃO DE DIRETÓRIOS .................................................................. 7 5 TRABALHANDO COM ARQUIVOS ............................................................................................. 8 5.1 CARACTERÍSTICAS ............................................................................................................. 9 5.2 TIPOS DE ARQUIVOS ........................................................................................................ 10 5.3 COMANDOS DE MANIPULAÇÃO DE ARQUIVOS ............................................................. 11 6 PERMISSÕES E ACESSO A ARQUIVOS ................................................................................. 14 6.1 TIPOS DE ACESSOS ......................................................................................................... 15 6.2 PERMISSÕES ..................................................................................................................... 16 7 COMANDOS DE MANIPULAÇÃO DE PERMISSÃO DE ACESSO ............................................ 16 8 EDITOR ..................................................................................................................................... 19 8.1 ALGUNS EDITORES .......................................................................................................... 19 8.2 vi ......................................................................................................................................... 20 9 INTRODUÇÃO AO SHELL......................................................................................................... 22 9.1 VARIÁVEIS ......................................................................................................................... 23 9.1.1 Armazenamento ............................................................................................................ 23 9.1.2 Atribuição de Valores .................................................................................................... 24 9.1.3 Substituição de Variáveis .............................................................................................. 24 9.1.4 Transferência de Variáveis Locais para o Ambiente ...................................................... 25 10 HISTÓRICO (HISTORY) .......................................................................................................... 26 11 PROCESSOS .......................................................................................................................... 26 11.1 COMANDOS DE CONTROLE DE PROCESSOS .............................................................. 27 12 REDIRECIONAMENTO DE E/S, FILTROS E PIPELINES ....................................................... 30 13 COMANDOS DE REDIRECIONAMENTO DE E/S ................................................................... 32 13.1 REDIRECIONANDO A SAÍDA PADRÃO ( > E >> ) ........................................................... 32 13.2 REDIRECIONANDO A ENTRADA PADRÃO ( < ) ............................................................. 32 SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX iii Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br 13.3 REDIRECIONANDO A ENTRADA E A SAÍDA SIMULTANEAMENTE .............................. 33 13.4 REDIRECIONANDO A SAÍDA DE ERROS ....................................................................... 34 14 COMANDOS DE FILTROS ...................................................................................................... 34 15 COMANDOS DE Pipelines....................................................................................................... 37 15.1 PIPELINE ( | ) .................................................................................................................... 37 15.2 CAPTURANDO A SAÍDA INTERMEDIÁRIA DE UM PIPELINE ......................................... 37 16 TAREFAS ADMINISTRATIVAS ............................................................................................... 40 16.1 Iniciando o Sistema ........................................................................................................... 40 16.2 Finalizando o Sistema ....................................................................................................... 40 17 BACKUPS ................................................................................................................................ 41 18 COMUNICAÇÃO COM OUTROS USUÁRIOS ......................................................................... 43 18.1 COMANDOS PARA COMUNICAÇÃO ............................................................................... 43 19 PROGRAMAÇÃO DO SHELL .................................................................................................. 47 REFERÊNCIAS BIBLIOGRÁFICAS .............................................................................................. 47 SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 1 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br 1 COMANDOS DE USO GERAL O UNIX/LINUX diferencia entre letras maiúsculas. Por convenção, todos os comandos listados aqui devem ser digitados em letras minúsculas. As palavras em negrito constituem no nome do comando, devendo ser digitadas exatamente como são escritas; em itálico representam os parâmetros que o usuário especifica para o comando (nome de um arquivo, por exemplo); [ entre colchetes] é opcional, podendo ser omitido (na execução do comando os colchetes não devem ser digitados. Quando as opções estiverem separadas por uma barra vertical ( | ), indica que somente uma delas deve ser escolhida. 1- CLEAR Nome clear- limpa a tecla do terminal Sinopse: Clear Descrição: o comando clear limpa a tela atualmente ativa. Exemplo: $ clear 2- CAL Nome: cal- apresenta um calendário. Sinopse: cal [ mês [ano] ] Descrição: cal apresenta o calendário do ano e mês especificados. Na falta dos argumentos são assumidos e o mês e o ano corrente. Exemplo: $ cal 6 1997 JUNE SUN MON TUE WED THU FRI SAT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3- DATE Nome: date- apresenta/altera a data e a hora do sistemaSinopse: date SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 2 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Descrição: sem nenhum argumento, são apresentadas a hora e a data corrente. Somente o administrador pode alterar. Exemplo: $ date Tue Jun 17 17:01:02 EST 1997 É possível alterar a data passando o parâmetro MMDDHHMMYYYY Exemplo: $ date 081014002010 Isto irá alterar a data da máquina para 10/08/2010 as 14:00Hs 4- PASSWD Nome: passwd- muda a senha de um usuário Sinopse: passwd Descrição: passwd altera a senha de um usuário. O superusuário (root) pode usar passwd para alterar a senha de qualquer usuário. Exemplo: $ passwd Changing password for fabio Old password: ******** ↔ New password: ******** ↔ Retype new password: ******** ↔ Para alterar a senha de um determinado usuário digita-se o nome do usuário na frente no comando. Exemplo: $ passwd fabio Changing password for fabio Old password: ******** ↔ New password: ******** ↔ Retype new password: ******** ↔ 2 SISTEMA DE ARQUIVOS DO UNIX/LINUX 2.1 ESTRUTURA HIERÁRQUICA Os arquivos são manipulados internamente pelo sistema operacional UNIX. Entretanto para a visão do usuário, o sistema de arquivos é uma única estrutura hierárquica, onde poderão ter várias partições, discos e arquivos associados em forma de árvore. SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 3 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Figura 1: Árvore de Diretório do UNIX. No sistema de arquivo do UNIX, arquivos e diretórios são agrupados por função. Usuários controlam seus próprios arquivos e diretórios, enquanto o administrador do sistema controla e gerencia o sistema de arquivos e diretórios. Assim fica mais fácil organizar as centenas de arquivos e programas que normalmente são instalados em uma máquina que roda o UNIX. O topo da hierarquia é denominado diretório raiz (root) e é indicado com uma barra (/). O sistema UNIX fornece comandos que permitem criar novos diretórios quando a organização precisar de mudanças, como mover ou copiar arquivos de um diretório para outro, o que pode ser feito facilmente. A estrutura do diretório pode variar de acordo com a implementação do sistema. A seguir, a descrição daqueles que são encontrados na maioria dos sistemas UNIX. Tabela 1: Diretórios. DIRETÓRIO FINALIDADE /etc /dev Contém os comandos do administrador de sistemas e muitos arquivos de configuração do sistema, arquivos solicitados durante o bootup ou shutdown Contém os arquivos especiais (devices files) para todos os dispositivos de hardware. Estes arquivos funcionam como gateways para periférico, para assim os dados não serem armazenados nos periféricos. /bin /lib /home /tmp Contém os comandos necessários para operação básica do UNIX e para manipulação de arquivos. Geralmente estes comandos são acessíveis para todos os usuários. Contém as bibliotecas compartilhadas. Estes arquivos geralmente possuem nomes como /lib/lbc.so.4.3.2, neste exemplo indica a versão 4.3.2 da biblioteca padrão da linguagem C. Contém um subdiretório para cada usuário do sistema UNIX, ou seja, para cada conta. Cada usuário tem controle total sobre o conteúdo de seu próprio diretório, inclusive com a possibilidade de criar outros subdiretórios. O nome do diretório home pode variar, depende do sistema operacional, mas os principais são: /users e /usr/homes. Contém os arquivos temporários gerados durante a execução de certas aplicações. Estes arquivos podem ser eliminados sempre que assim o desejar. SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 4 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br cont. Tabela 1: Diretórios. DIRETÓRIO FINALIDADE /usr/etc /usr/bin /usr/lib /usr/include /usr/src /usr/man /usr/adm /usr/tmp Este diretório é similar ao diretório /usr. Quando existe contém basicamente arquivos de configuração para programas instalados em /usr/bin. Em alguns sistemas este diretório é apenas um link para o diretório /usr, que neste caso conterão a mesma coisa. Contém os comandos suplementares do UNIX. É possível executar o sistema operacional sem a maioria destes comandos. Contém as bibliotecas estáticas (geralmente possuem um nome como libc.a), arquivos de configuração e dados para programas individuais, programas auxiliares que são invocados somente por outros programas. Os arquivos deste diretório são acessados somente por programas residentes em /usr/bin. Contém os arquivos de cabeçalho (*.h) para linguagem de programação C. Contém os códigos fonte do kernel. Contém todos os arquivos associados às páginas dos manuais on-line. Contém arquivos de log administrativos gerados por vários programas do sistema e demons. Possui a mesma finalidade do diretório /tmp. A diferença está no fato deste diretório poder ser montado em outras partições (discos). 2.2 FORMATO DO SISTEMA DE ARQUIVOS Um disco pode ter várias divisões chamadas de partições. Cada partição pode conter um sistema de arquivos. Figura 2: Representação interna do sistema de arquivos. SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 5 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Para cada sistema de arquivos tem-se um setor de boot (boot block), que contém o código encarregado de, entre outras coisas, realizar a carga do código do kernel para a memória e iniciar sua execução. Posterior ao setor de boot, encontra-se o superblock, local em que são armazenadas várias informações a respeito do sistema de arquivos. As informações mais importantes armazenadas no superblock são: • o tamanho do sistema de arquivos • o número de blocos livres no sistema de arquivos • uma lista de blocos livres disponíveis no sistema de arquivos • o tamanho da lista de i-nodes livres, ou seja, o número de i-nodes para o sistema de arquivos • o número de i-nodes livres no sistema de arquivos • uma lista de i-nodes livres no sistema de arquivo; • outras informações Devido à importância do superblock, o UNIX sempre faz uma cópia do superblock na memória RAM. O superblock é atualizado no disco quando o comando sync é executado. Por questões de segurança, existe uma cópia do superblock em cada grupo de cilindros para caso ele seja perdido, danificado ou corrompido, possa ser recuperado a partir de um grupo de cilindros. 2.3 CAMINHOS A maioria dos comandos do sistema UNIX opera sobre arquivos e/ou diretórios. Um caminho (path) representa os diretórios e subdiretórios que são passados para alcançar um arquivo ou diretório especificado. O diretório inicial é chamado diretório raiz, representado por uma barra ( / ). Um path pode ser especificado de duas formas: • absoluto • relativo Paths absolutos são aqueles que começam com uma barra ( / ). Paths relativos , ao contrário, sempre tomam o diretório atual como referência. Por exemplo: • /dev absoluto • /home/joao/texto absoluto • .. relativo (diretório imediatamente acima) • . relativo (diretório corrente) • usr/lib relativo • ../home/joao relativo SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 6 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Figura 3: Caminho no UNIX. Quando um diretório é criado, duas entradas são automaticamente criadas, chamadas ponto (.) e ponto-ponto (..). Geralmente são utilizadas para designar caminhos relativos. A entrada ponto (.) representa sua posição no diretório corrente. Caso esteja no diretório /home/joao , daí tem-se: • . representao diretório corrente /home/joão • ./texto representa /home/joão/texto A entrada ponto-ponto (..) representa o diretório imediatamente acima do diretório corrente, também chamado de diretório-pai . Caso esteja no diretório /home/João tem-se: • .. representa o diretório/ (raiz) • ../.. também representa o diretório/ (raiz) • ../bin representa o diretório /bin 3 DIRETÓRIO DE LOGIN Quando um usuário é incluído no sistema receberá um username e opcionalmente uma password, e um diretório será criado para o uso próprio. O diretório é criado sob o diretório /home (ou /users) e tem o mesmo nome da identificação do usuário no login. A partir deste diretório, o usuário tem acesso livre para criar quantos arquivos e diretórios quiser. Quando o usuário entrar no sistema, o UNIX automaticamente o colocará sob este diretório, ou seja, este será o diretório corrente logo após o login. Este diretório é denominado de diretório login ou diretório HOME. A figura abaixo mostra o diretório de login do usuário joão. SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 7 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Figura 4: Diretório HOME. 4 COMANDOS DE MANIPULAÇÃO DE DIRETÓRIOS Um diretório é uma maneira de organizar os arquivos. Os diretórios também são considerados como sendo arquivos com formato pré-definidos. Podem conter os nomes dos arquivos e diretórios e seus números i-node associados. A seguir, apresenta-se os comandos básicos para manipulação de diretórios. PWD Nome: pwd - ecoa o nome do diretório corrente (formato absoluto) na saída padrão. Sinopse: pwd Descrição: pesquisa a árvore de diretório, em direção à raiz para informar o path. Exemplo: $ cd /home/Fabio $ pwd /home/fabio LS Nome: ls - lista o conteúdo de um diretório Sinopse: ls [-a ] [-i ] [-C l -l ] [-t ] [arquivo] Descrição: o comando ls é usado para listar arquivos. Na ausência do parâmetro arquivo representando o nome de um arquivo ou diretório, o comando ls lista o diretório corrente. Opções: -a lista todas as entradas, incluindo as que iniciam com “.” (ocultos); -i inclui o número do i-node de cada arquivo; -C força saída com múltiplas colunas; -l listagem com formato longo; -t ordena por data de alteração. Exemplos: $ ls -l total 2 -rw-r--r-- 1 fabio users 32 Jun 17 22:40 arquivo.txt drvvx ------ 3 fabio users 512 Jun 17 21:05 teste/ SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 8 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br $ ls -la total 15 drwxr-xr-x 4 fabio users 512 Jun 05 22:40 ./ drwx ------ 29 fabio users 1024 Jun 05 22:40 ../ -rvv-r--r-- 1 fabio users 32 Jun 17 22:40 arquivo.txt drvvx ------ 3 fabio users 35 Jun 17 21:05 teste/ CD Nome: cd - muda o diretório corrente Sinopse: cd [diretório] Descrição: diretório toma-se o novo diretório corrente. Na execução do comando o sistema verifica a permissão de acesso ao diretório especificado. Sem argumento, o comando cd retoma ao diretório home do usuário. Exemplo: $ cd /home/fabio $ cd .. $ cd ./../home/Ana MKDIR Nome: mkdir - cria diretório Sinopse: mkdir [-p] nome_diretorio Descrição: cria um diretório na árvore de diretórios. Opções: -p permite a criação do diretório sob um diretório “pai” que não existe, que foi especificado no caminho para o nome_diretorio. Exemplos: $ mkdir ../textos RMDIR Nome: rmdir - remove diretório Sinopse: rmdir nome_diretorio Descrição: remove diretórios (somente se estes estiverem vazios). Exemplos: $ rmdir /usr/ana/textos $ rmdir arquivo.txt 5 TRABALHANDO COM ARQUIVOS Um arquivo é simplesmente um nome com dados associados a ele, armazenados num periférico qualquer (disco rígido ou flexível). O sistema UNIX não impõe restrições ao formato de um arquivo. Um arquivo é visto pelo sistema como uma sequência não formatada de bytes, onde um byte segue o outro até que o fim do arquivo seja encontrado. Os programas de aplicação impõem formatos a essas sequências de bytes. Como exemplo, um editor de textos marca o fim de cada linha de texto com um caracter de nova-linha; um programa de banco de dados organiza os dados em registros, sendo que cada registro está dividido em campos. Para o sistema UNIX tudo é considerado arquivo onde são incluídos: SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 9 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br • Arquivos Comuns - geralmente contêm caracteres de texto ASCII. • Programas - arquivos comuns que contêm instruções executáveis. Pode conter um código compilado (date, mkdir, ls) ou pode conter comandos shell do sistema UNIX ( .profile, .logout). • Diretório - arquivo especial contendo os nomes dos arquivos e diretórios que ele mantém. O diretório guarda um número de inodo para cada item, que identifica aonde as informações de arquivo e os endereços de armazenamento de dados podem ser encontrados no sistema de arquivos. • Dispositivo - arquivo que garante o interfaceamento entre o kernel e o hardware de um periférico (disco, terminal, impressora, memória). Como estes arquivos têm por finalidade o interfaceamento, eles nunca contêm dados verdadeiros. Estes arquivos são geralmente guardados no diretório /dev, e existe um arquivo para cada dispositivo com o qual o computador precisa se comunicar. 5.1 CARACTERÍSTICAS Um arquivo possui muitas características que podem ser visualizadas com o comando ls - la , dentre as quais se destacam: • Tipo de Arquivo - normal ou especial • Permissão - definição do modo de acesso ao arquivo • Links - número de nomes de arquivos associados ao mesmo conjunto de dados • Proprietário - identificação do usuário proprietário do arquivo • Grupo - identificação do grupo para acesso ao arquivo • Tamanho - número de bytes que o arquivo contém • Data - data e hora da última alteração do arquivo • Nome - nome do arquivo Um ponto muito importante a saber a respeito dos nomes de arquivos no UNIX é que letras maiúsculas e minúsculas são interpretadas diferentemente. Geralmente os nomes de arquivos são formados por letras minúsculas, As regras para a criação de arquivos são: SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 10 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br • máximo de 14 caracteres; • máximo de 255 caracteres se o sistema suporta nomes longos; • normalmente contém caracteres alfa (a-z, A-z), numéricos (0 - 9), ponto (.), traço (-) e subscrito (_). Ponto (.) - por ser considerado um caracter normal, o ponto pode aparecer em qualquer lugar num nome de arquivo e várias vezes. Quando aparece no início do nome do arquivo ( .profile) indica que este é oculto. Existem caracteres especiais que não podem ser utilizados como parte de um nome de arquivo, pois frequentemente produzirão resultados inesperados, são eles; ?, @, #, [, ], *, <, >, \, $ e |. 5.2 TIPOS DE ARQUIVOS Os tipos de arquivos no sistema UNIX são identificados através do primeiro caracter de saída do comando ls -1. Os arquivos geralmente são tratados de duas formas: • Regulares - arquivos de dados ou programas; • Diretórios - arquivo que contém nome de outros arquivos, juntamente com ponteiros para seus i-nodes_ Além desses dois tipos, o UNIX possui mais alguns: • arquivos dispositivos de caracteres - um tipo de arquivo utilizado por dispositivo de caracteres (ex.: modem); • arquivos dispositivos de blocos - um tipo de arquivo utilizado por dispositivo de blocos (ex.: discos); • FIFO - um tipo especial de arquivo utilizado para comunicação entre processos (também chamado named pipe); • Socket - um tipo de arquivo utilizado para comunicação emrede, servindo também para a comunicação entre processos num mesmo sistema; • symbolic link - um tipo de arquivo que aponta para outro arquivo. Tabela 2: Tipos de arquivos. Símbolo Tipo do Arquivo - Regular d diretório c dispositivo de caracter b dispositivo de bloco p FlFO s socket l symbolic link SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 11 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br 5.3 COMANDOS DE MANIPULAÇÃO DE ARQUIVOS O sistema UNIX disponibiliza vários comandos para manipulação de arquivos. Os principais são destacados a seguir: CAT Nome: cat - imprime o conteúdo de arquivos Sinopse: cat [ -n -v] [arquivo ...] Descrição: o comando cat permite ler dados da entrada padrão e escrever dados na saída padrão, permitindo uma grande flexibilidade em sua utilização. Pode-se utilizá-lo associado aos símbolos de redirecionamento de fluxo (>,>>) para criar, listar e/ou estender o conteúdo de arquivos. Opções: -n enumera linhas de saída -v apresenta caracteres não imprimíveis usando a notação ^X. Exemplos: $ cat > arq.dat (cria o arquivo arq.dat) Linha 1 Linha 2 ^Z $ cat arq.dat $ cat -n arq.dat Linha 1 1 Linha 1 Linha 2 2 Linha 2 MORE Nome: more - visualiza um arquivo no terminal Sinopse: more [ +n -n] [arquivo 1 Descrição: more é o paginador de arquivos padrões para UNIX. Após cada tela cheia, o comando apresenta uma mensagem solicitando ao usuário para continuar a apresentação do arquivo. Existem várias opções para o comando. Abaixo tem-se as duas mais frequentemente utilizadas. Opções: +n apresenta a partir da linha “n”; -n o número “n” será usado como tamanho da janela. O default varia de 22 a 25. Exemplo: $ more arq.dat Linha 1 Linha 2 TAIL Nome: tail - escreve o conteúdo de um arquivo para uma saída padrão, iniciando em uma posição especificada Sinopse: tail [-f ] [-r ] [-b [+] D I -c [+]D ! -l [+] D ] [arquivo] onde, D=deslocamento Descrição: o comando tail escreve o conteúdo do arquivo especificado para a saída padrão, iniciando no ponto (deslocamento) definido pelo usuário. Se nenhum arquivo é definido, a entrada padrão é utilizada. O tipo de unidade (b, c, l) associado ao deslocamento, juntamente com o ponto de referência para o deslocamento, identificam o início da impressão. Se o deslocamento é precedido do sinal “-“ significa que o ponto de referência para o deslocamento é o final do arquivo. O sinal “+” indica como ponto de referência o início do arquivo. SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 12 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Opções: -b o arquivo e interpretado como blocos de 512-bytes; -c o arquivo é interpretado como uma seqüência de bytes; -l o arquivo é interpretado como linhas que devem terminar com <CR>. Exemplo: $ tail –8c arq.dat Linha 2 $ tail +4c arq.dat ha 1 Linha 2 $ tail +21 arq.dat Linha 2 CP Nome: cp - copia arquivos Sinopse: cp [-ipr] arquivo(s)... diretório - copia um ou mais arquivos para diretório cp [-ip] arq1 arq2 - copia conteúdo de arq1 para arq2 cp -r [-ip] dir1 dir2 - copia recursivamente o conteúdo de dir1 para dir2 Descrição: o comando cp copia o conteúdo de um arquivo/diretório para outro No segundo caso, se arq2 já existe é sobrescrito, mas seu modo e dono são preservados. No terceiro, cp copia recursivamente o conteúdo de dir1 (arquivos e sub-diretórios) para dir2. Opções: -i execução no modo interativo (pede confirmação caso o arquivo destino exista); -p duplica também as permissões juntamente com data/hora; -r duplica recursivamente se nomearq for um diretório. Exemplos: $ cp -r /usr/src /usr/src/bkp $ cp /usr/src/* /tmp MV Nome: mv - move ou renomeia arquivos Sinopse: mv [-f ] [-i ] arquivo(s)... diretório - move um ou mais arquivos para diretório mv [-f ] [-i ] arq1 arq2 - altera nome de arq1 para arq2 mv [-f ] [-i ] dir1 dir2 - altera nome de dir1 para dir2 Descrição: o comando mv move arquivos e diretórios pelo sistema de arquivos. Permite também renomear um arquivo ou diretório, caso o nome destino seja diferente da origem. Opções: -f suprime todas as mensagens (force) -i modo interativo (confirma mudanças)_ Exemplos: $ mv /home/fabio* /home/fabio/bkp $ mv teste.txt teste1.txt RM Nome: rm - remove arquivos ou diretórios Sinopse: rm [-f ] [-r ] [-R ] [-i ] arquivo Descrição: o comando rm é usado para remover arquivos e diretórios (inclusive aqueles não vazios). Para apagar um arquivo ou diretório, o usuário não precisa ter direitos de leitura ou escrita sobre ele, mas precisa ter direito de escrita no diretório onde ele se encontra. Opções: -i pede confirmação antes de apagar cada arquivo/diretório; SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 13 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br -f não pede confirmação para remover um arquivo protegido contra escrita, nem mostra mensagem quando o arquivo não existe; -r é a opção para apagar um diretório, removendo todos os arquivos e sub-diretórios que ele tenha; -R equivalente a opção -r. Exemplos: $ rm teste.txt $ rm -r teste FUSER Nome: fuser – mostra dados de arquivos sendo utilizados Sinopse: fuser [-k ] arquivo Descrição: o comando fuser é usado para mostrar os dados de um determinado processo ou arquivo sendo executado na maquina. Para verificar se um arquivo esta sendo usado por alguém, é necessário estar dentro do diretório que o arquivo se encontra. Opções: -k identifica o processo em execução e finaliza. Exemplos: $ fuser cadpro.dbf Exemplos: $ fuser -k cadpro.dbf TOUCH Nome: touch – cria ou altera um determinado arquivo. Sinopse: touch [-t ] arquivo Descrição: o comando touch é usado para criar ou alterar alguma propriedade de um determinado arquivo. Opções: -t altera a data do arquivo. Exemplos: $ touch –t 08102010 menu.l O arquivo será alterado para 10/08/2010. FIND Nome: find - procura arquivos por nomes ou por outras características. Sinopse: find [caminho... ] [expressão] Descrição: o comando find procura arquivos recursivamente em cada diretório especificado em caminho, confrontando-os com a expressão booleana expressão. Expressões: -name arquivo verdadeiro se arquivo confronta com o nome do arquivo corrente; -perm num verdadeiro se a permissão de acesso ao arquivo corrente é igual a num; -type c verdadeiro se o tipo do arquivo corrente é c, onde c pode ser, por exemplo, igual a d (diretório); -print sempre verdadeiro, causa a impressão do path corrente. Exemplos: $find -name arq -print ./arq SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 14 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br O UNIX permite que um arquivo tenha uma ou mais entradas de diretório apontando para o seu i-node na i-list. Isso é chamado de hardlink ou apenas link (ligação). Um link pode apontar para arquivos ou diretórios (nesse caso, o processo criador deve possuir direitos de superusuário). Arquivos ou diretórios só podem ser deletados quando todos os seus links forem removidos. Nome: ln - cria um link ou symbolic link Sinopse: ln [-f] [-s] arquivo nome_do_link Descrição: cria um link ou symbolic link para um arquivo. O comando ln sem a opção -s, cria hardlinks. Através do ln não é permitido criar hardlinks para diretórios. Se o nome_do_link for um diretório, vários nomes de arquivos podem ser especificados, Opções: -f força a sobreposição de um arquivo, caso o nome do link seja o mesmo do arquivo existente; -s cria um symbolic link. Exemplos: $ ln arq link $ ln -s arq symlink $ ls -l arq link $ ls -l arq link arq linkarq symlink@ 6 PERMISSÕES E ACESSO A ARQUIVOS O UNIX permite que múltiplos usuários armazenem e tenham acesso às informações do disco ao mesmo tempo. Desta forma, é fundamental proteger os arquivos de outros usuários. Por isso, faz-se uso de mecanismos para acesso de arquivos e diretórios. Para acessar arquivos e executar programas, o sistema UNIX tem que saber as identificações do usuário. Para cada arquivo ou diretório, têm-se três categorias de comunidade: Tabela 3: Propriedade de Arquivos. Nome Categoria Descrição Usuário (user/owner) u Usuário que criou o arquivo grupo (group) g Membros de grupos. Grupos são usuários que concordam em partilhar certos arquivos e diretórios e são geralmente formados no decorrer de um projeto ou por seções/departamentos de uma empresa. outros (others) o Outros usuários do sistema (o usuário e os membros do grupo estão fora desse conjunto de usuários. O computador mantém identificadores numéricos para usuário (UID) e grupo (GID). Esta identificação é definida inicialmente ao entrar no sistema. Para consultar os identificadores ativos, utilize o comando id diretamente no prompt do UNIX. SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 15 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Todas as identificações de usuários reconhecidas pelo computador são armazenadas no arquivo /etc/passwd, e todas as identificações de grupo são armazenadas no arquivo /etc/group. Usuários a serem incluídos num grupo específico são definidos pelo administrador do sistema, e cada usuário pode ser um membro de um ou mais grupos. Grupos são normalmente formados a partir dos grupos de trabalho já definidos numa organização. 6.1 TIPOS DE ACESSOS O sistema de arquivos do UNIX permite que se defina para cada arquivo ou diretório, três tipos básicos de controle de acesso. Tabela 4: Tipos de Acesso para Arquivos/Diretórios. Tipo de acesso Aplicado em Arquivos Aplicado em Diretórios r permite ler o conteúdo do arquivo permite listar o conteúdo do diretório w permite alterar o conteúdo do arquivo permite alterar o conteúdo do diretório x permite executar um arquivo (programa) permite pesquisar o diretório Diferentes comandos do sistema UNIX requerem algumas permissões para acessar um programa ou arquivo. Por exemplo, para executar o comando cat num arquivo a permissão read é necessária, porque este comando deve ser capaz de ler o conteúdo do arquivo para mostrá-lo na tela. Da mesma forma um diretório requer a permissão read para listar seu conteúdo com o comando ls . A utilização de tipos de acesso para cada arquivo e diretório depende da política adotada no gerenciamento desses recursos. Permissões de acesso de escrita para diretórios liberam seu conteúdo para alteração, permitindo a remoção de seus arquivos e sub-diretórios. A cada classe de usuários, são aplicadas as três permissões de acesso: A combinação entre os três tipos de permissão (r,w,x) com cada classe de usuários e denominado modo do arquivo. A configuração do modo, de arquivo e diretórios é realizada pelo usuário através do comando chmod . Modo Valor Octal --- --x -w- -wx r— r-x rw- rwx 0 1 2 3 4 5 6 7 SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 16 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Os valores de permissão de arquivos podem ser expressos em vários formatos. Outra forma é a representação como números octais. 6.2 PERMISSÕES O acesso a um arquivo é definido pela identificação de usuário, identificação de grupo e as permissões associadas ao arquivo. As permissões para um arquivo estão especificadas no modo de acesso. O modo de um arquivo é um campo de 9 caracteres que define as permissões para o proprietário do arquivo, para o grupo ao qual pertence e para todos os outros usuários do sistema. - rw -rwx d rwx r- - r-x r-x r- - r- - r-x 1 1 2 ricardo ricardo ricardo computacao computaçao computacao 37 127 1024 Ago Ago Ago 15 15 15 12:10 12:20 12:34 readme.txt .profile aula Usuário Grupo Outros proprietário grupo Tabela 5: Exemplo de permissões de acesso. Arquivo Categoria Permissão de Acesso readme.txt usuário grupo outros leitura e escrita leitura leitura .profile usuário grupo outros leitura, escrita e execução leitura e execução leitura aula usuário grupo outros leitura, escrita e execução leitura e execução leitura e execução 7 COMANDOS DE MANIPULAÇÃO DE PERMISSÃO DE ACESSO Apresenta-se a seguir os principais comandos para a manipulação de permissão de acesso a arquivos. CHMOD Nome: chmod - muda o modo de permissão de arquivos. Sinopse: chmod [ugoa] [+-=] [rwx] arquivo ... Descrição: o modo pode ser descrito de uma forma absoluta ou simbólica. Absoluta: número octal construído de um OR dos modos abaixo: → 400,040,004 - leitura para o dono, grupo e outros → 200,020,002 - escrita para o dono, grupo e outros → 100,010,001 - execução para o dono, grupo e outros SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 17 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Simbólica: classe de acesso + operador + tipo de acesso (u, g, o, a) (+, -, =) (r, w, x) u: dono (user) g: grupo o: outros a: todos (all) +: adiciona permissão -: remove permissão =: troca as permissões r: leitura (read) w: escrita (write) x: executar No modo simbólico, a maneira de trocar os tipos de acesso existentes do arquivo, para nenhum tipo de acesso (---) é utilizado o sinal de “=” sem nenhum valor sendo atribuído. Exemplos: $ ls -l total 2 -rw-r--r-- 1 fabio users 32 Jun 17 22:40 arquivo.txt drwx ------ 3 fabio users 512 Jun 17 21:05 teste/ $ chmod 000 * $ ls -1 total 2 ---------- 1 fabio users 32 Jun 17 22:40 arquivo.txt d --------- 3 fabio users 512 Jun 17 21:05 teste/ $ chmod u=r, g=w, o=x arquivo.txt $ls -l total 2 -r---w---x 1 fabio users 32 Jun 17 22:40 arquivo.txt d --------- 3 fabio users 512 Jun 17 21:05 teste/ $ chmod 421 teste $ ls -l total 2 -r---w---x 1 fabio users 32 Jun 17 22:40 arquivo.txt dr--w---x 3 fabio users 512 Jun 17 21:05 teste/ $ chmod 221 teste $ ls -l total 2 -r---w---x 1 fabio users 32 Jun 17 22:40 arquivo.txt d-w-w---x 3 fabio users 512 Jun 17 21:05 teste/ $ chmod u= ,g= ,o= arquivo.txt teste $ls -l total 2 ---------- 1 fabio users 32 Jun 17 22:40 arquivo.txt d -------- 3 fabio users 512 Jun 17 21:05 teste/ UMASK Nome: umask - muda a máscara de modo para criação de arquivos do usuário Sinopse: umask [modo] Descrição: o comando umask muda a máscara de modo para criação de arquivos de usuário obedecendo o modo especificado. O modo default usual de permissões num arquivo recém criado é rw-rw-rw (qualquer usuário do SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 18 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br sistema pode modificar o arquivo) e num diretório recém criado é rwxwvxrwx (qualquer usuário pode mudar este diretório e apagar qualquer coisa deste diretório). Utilize o comando umask para proteger os arquivos que serão criados durante sua sessão, desabilitando as permissões default designadas em qualquer arquivo ou diretório a ser criado. O acesso de escrever para “grupo” e “outros” são as permissões mais importantes de serem desativadas. A máscara designada fica ativa até o fim da sessão. Para desabilitar a máscara e retomar ao modo default, digite o comando umask 000 . Utilizar o comando touch para criar um arquivo vazio. Se o arquivo já existe,somente serão atualizadas hora e dia de criação do mesmo, sem afetar o conteúdo do arquivo. Exemplos: $ touch arquivo1.txt $ ls -l arquivo1.txt -rw-rw-rw- 1 fabio users 32 Jun 17 22:40 arquivo1.txt $ umask 026 $ umask 026 026 $ touch arquivo2.txt $ ls -l arquivo2.txt -rw-r ----- 1 fabio users 32 Jun 17 22:43 arquivo2.txt CHOWN Nome: chown - muda o dono de um arquivo Sinopse: chown [-f] [-R] novo_dono arquivo Descrição: o comando chown muda o dono de um arquivo para o novo_dono especificado. O novo_dono pode ser um UID válido ou um nome de login válido. Somente o superusuário (root) pode usar o comando chown Opções: -f força a mudança, não reportando os erros; -R aplica o comando recursivamente aos sub-diretórios, mudando seus donos. Exemplos: $ chown fabio /home CHGRP Nome: chgrp - muda 0 grupo associado com o arquivo Sinopse: chgrp [-f ] [-R] grupo arquivo Descrição: o comando chgrp muda o grupo associado a um determinado arquivo. Opções: -f força a mudança, não mostrando os erros; -R executa o comando recursivamente, aplicando a todos os sub-diretórios. Exemplos: $ chown -R users arquivo.txt NEWGRP Nome: newgrp - muda a identificação do grupo Sinopse: newgrp [group_name ] Descrição: o comando newgrp muda a identificação de grupo para o usuário chamador. O usuário permanece conectado ao sistema e o diretório corrente permanece o mesmo, porém as permissões de acesso aos SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 19 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br arquivos passam a ser executadas respeitando-se o novo GID (identificador de grupo). Quando o comando newgrp é usado sem parâmetro, o GID é alterado para o GID de login. Exemplos: $ ls -l arquivo1.txt -rw-rw-rw- 1 fabio users1 32 Jun 17 22:40 arquivo1.txt $ id uid=303 (fabio), gid=100(users1) $ newgrp users2 $ id uid=303 (fabio), gid=13O(users2) SU Nome: su - muda a designação de Id de usuário Sinopse: su [nome_usuario] Descrição: o comando su permite a um usuário tornar-se temporariamente outro usuário, ou seja, cria uma subsessão com um novo Id de usuário e concede acesso a todos os arquivos que pertencem ao usuário designado por Id. Por questão de segurança será solicitada a senha da conta para que a troca de usuário ocorra. Sem argumentos, o comando su assume o usuário root (administrador do sistema). Para retomar ao user inicial digite o comando exit . Este comando vai fechar a subsessão. Exemplos: $ id uid=303 (fabio), gid=100(users1) $ su marcelo Password: $ id uid=345 (marcelo), gid=100(users1) $ exit 8 EDITOR Os editores de texto permitem a criação, edição e visualização de arquivos no formato texto. 8.1 ALGUNS EDITORES Existem vários editores de texto para o UNIX. O vi é o editor de textos padrão do UNIX. Não existe um UNIX que não tenha o vi . SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 20 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br O joe é um editor de texto que foi lançado no Linux, para fazer companhia ao vi e oferecer um pouco das interfaces amigáveis dos editores do DOS. O joe é semelhante ao WordStar. Todos os comandos para manipulação de textos são idênticos aos deste editor para DOS. Outro editor de textos é o pico , um editor de texto simples, fácil de usar, com o layout bem parecido com o editor de mail pine . Ambos foram desenvolvidos na Universidade de Washington. 8.2 vi O editor vi inicializa em Modo de Comando. A inicialização do vi é da forma: $ vi [-R -r [arquivo] ] [arquivo] -R entra no vi em modo de leitura, não permitindo modificar o arquivo. -r [arquivo] recupera a última edição salva de um arquivo antes de um crash. • Comandos Gerais Esc termina o modo de inserção N muitos comandos permitem que se digite um inteiro n antes dele, de modo que o comando seja executado n vezes :set permite definir: nu numeração ts= tabs prefixando um atributo com “no” irá desativá-lo • Movimento do Cursor h move o cursor uma posição a esquerda l move o cursor uma posição a direita k move o cursor uma linha acima j move o cursor uma linha abaixo w move o cursor uma palavra para frente b move o cursor uma palavra para trás ) move o cursor um parágrafo para frente ( move o cursor um parágrafo para trás H move o cursor para o topo da tela M move o cursor para o meio da tela L move o cursor para o final da tela SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 21 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br G move o cursor para o final do arquivo nG move o cursor para a linha n • Controle de Páginas ^E rola a tela para baixo linha a linha ^D rola a tela para baixo meia tela ^F rola a tela para baixo uma tela inteira ^Y rola a tela para cima por uma linha ^U rola a tela para cima meia tela ^B rola a tela para cima uma tela inteira obs.: ^ = Ctrl • Modificação de Texto rx substitui o caracter sobre o cursor por x dd apaga a linha corrente dw apaga a palavra sob o cursor X apaga o caracter sobre o cursor U desfaz a última modificação • Gravando e Saindo w: [ arquivo ] grava o arquivo editado (grava com arquivo, se especificado) ZZ grava o arquivo e sai :wq grava o arquivo e sai :q sai (se o arquivo foi modificado mostra mensagem de advertência) :q! sai sem salvar as modificações • Modo de Inserção A entrada no modo de inserção ocorre através dos seguintes caracteres a, A, i, I, o, O. A entra no modo de inserção e posiciona o cursor uma posição a frente da atual A entra no modo de inserção e posiciona o cursor no final da linha SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 22 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br I entra no modo de inserção e não altera a posição do cursor I entra no modo de inserção e posiciona o cursor no início da linha O entra no modo de inserção e adiciona uma linha em branco abaixo da linha atual O entra no modo de inserção e adiciona uma linha em branco acima da linha atual obs.: a tecla Esc sai do modo de inserção e entra no modo de comando 9 INTRODUÇÃO AO SHELL O shell é um programa que serve como um interpretador de comandos. É separado do sistema operacional, que fornece ao usuário a facilidade de selecionar a interface mais apropriada às suas necessidades, ou seja, escolher qual shell ele gostaria de trabalhar. A função do shell é permitir que se digite o próprio comando para realizar várias funções e passar o comando interpretado para o sistema operacional. O shell oferece várias funcionalidades, das quais pode-se destacar: • suporte a interface programável interpretativa (testes de condição, desvios, loops) • substituição de valores em variáveis shell especificadas • substituição de comandos • suporte a redirecionamentos e pipelines • pesquisa a comandos com execução do programa associado Figura 5: Shell Ao inicializar uma sessão UNIX, o shell define as características para o terminal e envia um prompt. Dentre os shells mais conhecidos pode-se citar: • sh ou bash Bourne Shell – o mais tradicional. (prompt: $) • ksh Korn Shell – o mais usado atualmente. (prompt: $) • csh C Shell – considerado o mais poderoso. (prompt: %) • rsh Remote Shell – shell remoto. SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 23 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br • Rsh Restricted Shell – versão restrita ao sh. • Pdksh Public domain Korn Shell – versão de domínio públicodo ksh. • Zsh Z Shell – compatível com o sh. • Tcsh versão padronizada do csh. O C shell foi escrito depois do Bourne shell e oferece um ambiente mais poderoso. Tem histórico, uso do alias, complementação do nome de arquivo e outras características úteis. Oferece ainda um conjunto mais poderoso de comandos, com mais opções e capacidades do que o Bourne shell. Um dos problemas do C shell é a incompatibilidade com programas do Bourne shell. Além disto, existe a dificuldade de realizar algumas tarefas, como redirecionamento de erro padrão. O Korn shell tem todas as características melhores do C shell, além do que o Bourne shell faz. De fato, o K shell é um superconjunto do Bourne shell. Tabela 6: Comparação do csh, ksh e sh. Shell Atributo csh ksh sh Tamanho grande médio pequeno Velocidade lenta rápida média Características extras algumas todas nenhuma Disponibilidade muitos sistemas muitos sistemas e expandido todos os sistemas Compatibilidade alguns sh todos sh somente sh todos csh todos ksh 9.1 VARIÁVEIS Uma variável shell é semelhante a uma variável em álgebra. É seu nome que representa um valor. Todas as variáveis shell, por default, são inicializadas com NULL (nada). O valor da variável pode ser modificado a qualquer momento que se desejar. O valor da variável pode ser acessado fazendo referência ao nome da variável. 9.1.1 Armazenamento O shell possui duas áreas em memória para as suas variáveis: área de dados local e de ambiente . A memória é alocada na área de dados local quando uma nova variável é definida. As variáreis nesta área são restritas ao shell corrente. Isto é, nem todo subprocesso terá acesso a essas variáveis. Entretanto as variáveis que são movidas através do ambiente podem ser acessadas por qualquer subprocessos. Existem variáveis especiais do shell que são definidas através do processo de login. Nestas variáveis são armazenadas no ambiente, e seus valores podem mudar para caracterizar a sessão. As principais variáveis são: HOME define o diretório inicial do usuário LOGNAME ou USER define a identificação do usuário no login TERM define o tipo do terminal SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 24 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br PATH define o(s) diretório(s) onde procurar os comandos para execução PWD define o diretório corrente SHELL define o shell default para a sessão no terminal PS1 define o prompt do shell primário PS2 define o prompt do shell secundário Os nomes das variáveis locais são geralmente definidos usando-se caracteres minúsculos e das variáveis ambientais são definidos com caracteres maiúsculos. Esta convenção é só para facilitar a identificação entre os 2 tipos de variáveis do código de um programa. A manipulação dessas variáveis depende do shell que se está utilizando. O C shell realiza um divisão clara entre as variáveis do shell e de ambiente. Para criar ou trocar o valor de uma variável local utiliza-se o comando set . Para as variáveis de ambiente , o comando setenv . set [ variável = valor ] setenv [ variável valor ] A remoção de variáveis do shell e do ambiente é realizada através dos comandos unset e unsetenv , respectivamente. unset variável unsetenv variável 9.1.2 Atribuição de Valores A atribuição de valores às variáveis permite associar um valor ao nome da variável. O seu valor pode ser acessado através do nome da variável. Por exemplo, um contador que conta o número de interações através de um loop. A variável pode ser incrementada de um cada vez que se completa o loop. Ao atribuir um valor a uma nova variável, este será armazenado na área de dados local. A atribuição pode ser feita dentro de um programa shell ou digitando-se diretamente no prompt do shell: $ color=blue (variável local) $ count=5 (variável local) $ dir_name=/home/ricardo (variável local) $ PATH=.:/bin:/usr/bin (variável local) 9.1.3 Substituição de Variáveis Cada variável que é definida será associada a um valor. Quando o nome da variável for imediatamente precedido por um sinal $, o shell troca o parâmetro pelo valor da variável. Este procedimento é conhecido como substituição de variável e sempre ocorre antes do comando se executado. SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 25 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Depois do shell fazer todas as substituições na linha do comando, ele executa o comando. Assim, as variáveis podem também representar um comando, argumentos de comandos ou uma linha de comando completa. Isto fornece um mecanismo conveniente para usar um pseudônimo frequentemente utilizado para longos caminhos e longas cadeias de comandos. $ echo$color blue $ echo o valor de color é $color o valor de color é blue $ echo $PATH .:bin:/usr/bin $ file_name=$PATH/arquivo.txt $ more $file_name O comando echo $ name exibe o valor corrente de uma variável. 9.1.4 Transferência de Variáveis Locais para o Ambi ente Para tornar uma variável disponível para os processos-filhos, ela deve existir no ambiente. No Bourne shell, para o usuário criar uma variável de ambiente, ele deve criar uma variável como local e exportá-la com o comando export . A criação de uma variável local é realizada utilizando um comando de atribuição “=”, conforme visto anteriormente. O comando export name transfere as variáveis específicas da área local para a área de ambiente. Sem argumento, o comando export exibe as variáveis que foram exportadas para este shell. $ variável = valor (cria uma variável de shell) $ export variável (cria uma variável de ambiente) Para remover o mecanismo é semelhante: $ unset variável $ export variável (remove a variável de ambiente) O comando env exibe todas as variáveis e seus valores que estão armazenados no ambiente. Quando um processo-filho é iniciado, ele recebe uma cópia das variáveis de ambiente de seu pai. Por isso, se um processo-filho modifica o valor de uma variável de ambiente, o valor modificado será propagado para qualquer um dos processos-filho, mas o valor do pai permanece inalterado. Isto significa dizer que um filho não pode alterar o ambiente de seu pai. SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 26 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br 10 HISTÓRICO (HISTORY) Algumas atividades de um usuário em uma sessão fazem com que comandos sejam repetidos muitas vezes. O C shell permite que o usuário mantenha um buffer de histórico de comandos, capaz de manter os comandos anteriores. Para usar o mecanismo de histórico do C shell de forma automática (toda vez que abrir a sessão), deve-se colocar as 3 linhas seguintes no arquivo .cshrc localizado no seu diretório HOME: set history=20 sest savehist=20 set prompt=”[\!]%” Estas declarações irão: • Permitir que seu buffer de histórico de comandos armazene os 20 comandos anteriores. • Salvar os últimos 20 eventos de buffer do histórico de comandos, quando terminar a sessão e restaurá-los a próxima vez que se logar. • Definir o prompt do C shell para mostrar o número de cada evento (comando) que o usuário digitar no terminal. Para referenciar comandos armazenados na lista , pode-se usar alguns parâmetros: !! executa o último comando !n executa o n-ésimo comando !string executa o comando mais recente que comece com o “string” ! –n executa o n-ésimo comando a contar do último 11 PROCESSOS Um processo é um programa de execução independente que tem seu próprio conjunto de recursos. Para um mesmo programa (entidade estática) podem existir vários processos (entidades dinâmicas). O UNIX, como sistema operacional multitarefa, permite a existência de vários processos ao mesmo tempo. Emmáquinas monoprocessadas, o kernel do UNIX se encarrega de escalonar os recursos de execução do único processador para vários processos do sistema. Já em máquinas multiprocessadas, pode-se ter processos executando em paralelo, e não concorrentemente como nas máquinas monoprocessadas. Quando for digitado algum comando no ambiente do UNIX, este comando é executado como um processo subordinado (chamado processo filho) do processo corrente (chamado processo pai). Todos os processos criados pelo usuário são filhos de login. SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 27 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Figura 6: Processo e subprocessos. O sistema operacional tem muitos recursos que devem ser gerenciados, incluindo recursos de hardware e software. Um dos recursos de software que deve ser gerenciado é um programa em execução. As características do processo são: • É um programa que pode ser executado concorrentemente • Pode ser criado e destruído • Possui recursos alocados para ele • Possui um ambiente associado a ele que é herdado do processo pai, consiste de todas as informações relativas ao processo e pode ser alterado através de comandos no ambiente de shell • Pode criar outros processos • Pode se comunicar com outros processos No UNIX cada processo possui o seu próprio ambiente onde existem todas as informações relativas ao processo e que afetam a sua execução: • Dados • Arquivos abertos • Diretório corrente • User ID • Process ID • Parente Process ID • Conjunto de variáveis 11.1 COMANDOS DE CONTROLE DE PROCESSOS O UNIX disponibiliza alguns comandos para a manipulação de processos conforme apresentados a seguir: SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 28 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br PS Nome: ps – permite ao usuário visualizar os processos do sistema Sinopse: ps [-a] [-l ] [-u] [-e] [-f ] Opções: -a inclui informações sobre todos os processos do sistema -l apresenta saída em formato longo -u apresenta informações do usuário e hora de início dos processos -e apresenta uma lista completa dos processos, com exceção dos proc. do kernel -f apresenta uma lista completa dos processos Descrição: sem nenhum parâmetro, apresenta somente os processos do usuário na sessão, em formato resumido Exemplo: $ ps PID TTY STAT TIME CMD 1058 pp0 S 21:09 -bash 1071 pp0 R 21:09 ps $ ps -l. UID PID PPID PRI NI SIZE RSS WCHAN STAT TTY TIME CMD 525 1118 1117 5 0 368 532 11cac5 S pp0 21:09 -bash 525 1171 1118 24 0 57 188 0 R pp0 21:09 ps -l BG Nome: bg – permite ao usuário enviar um processo/grupo de processos para execução em segundo plano (background) Sinopse: bg [% número_do_job ] Descrição: sem nenhum parâmetro, o comando bg assume o job corrente. O número do job é apresentado no terminal no momento em que este foi suspenso ou pode ser listado com o comando jobs , o qual apresentará a lista de jobs do shell corrente. Exemplo: $ man ps ^Z Stopped $ jobs [1] + Stopped man ps $ bg %1 [1] man ps & $ jobs [1] + Stopped (tty output) man ps FG Nome: fg - permite ao usuário trazer um processo/grupo de processos para execução em primeiro plano (foreground) Sinopse: fg [% número_do_job ] Descrição: sem nenhum parâmetro, o comando fg assume o job corrente. O nome do job pode ser referenciado pelo número do job quando precedido pelo sinal de percentual (%) ou o PID. Exemplo: $ jobs [1] + Stopped(tty output) man ps $ fg %1 man ps SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 29 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br KILL Nome: kill - objetiva enviar sinais (interrupções de software) para processos Sinopse: kill [-sinal] pid kill [-l ] Opções: -sinal envia o sinal especificado ao(s) processo(s) (“pid”); -l apresenta lista de sinais que podem ser utilizados com o comando kill . Descrição: Cada sinal tem um número e um nome de identificação. Os mais utilizados são o SIGKILL(9) e SIGTSTP(2O). O sinal SIGKILL, quando enviado a um processo, termina sua execução, desde que o usuário seja o “dono” do processo ou seja o superusuário. O SIGTSTP pode ser enviado a um processo ou grupo de processos em foreground, provocando sua suspensão. Esse sinal também é enviado quando se aciona as teclas Ctrl+Z (^Z)_ Quando o comando kill é executado sem parâmetros, o sinal enviado é o SIGTERM (15) ou terminate, que provoca o término do(s) processo(s) especificado(s). Os programas podem desabilitar a recepção do terminate para seus processos. O parâmetro pid pode ser obtido listando os processos, através do comando ps . Exemplo: $ kill -1 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGIOT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR $ kill -91234 $ kill -SIGKILL 1234 NICE Nome: nice - executa um processo estabelecendo sua prioridades Sinopse: nice [-incremento] comando_linha Descrição: Comando de prefixo que permite executar um programa estabelecendo sua prioridade. Programas com baixa prioridade ganham menos acessos aos recursos do sistema. O incremento é um número inteiro com valor entre -20 a +20. O default do incremento é 10. Um processo com valor de nice maior é o que tem menor prioridade relativa no sistema. O valor nice não é um modificador absoluto de prioridade. Para ver as prioridades dos processos, utliza-se o comando ps -l. As prioridades são exibidas sob a coluna intitulada PRI. Jobs que têm maior prioridade terão o valor de prioridade mais baixo. O valor nice é exibido sob a coluna intitulada Nl Exemplo: $ nice -20 cc myprog.c -o myprog (dispara o processo 'cd com alta priorid. $ nice 5 sort * > sort.out SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 30 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br CRONTAB Nome: crontab - executa comandos periodicamente na data e hora programada Sinopse: crontab [-l ( -V ] [-r] [arquivo] -l exibe o conteúdo do arquivo crontab -r remove o arquivo crontab do diretório crontab -v exibe o nome do arquivo crontab e a data e a hora que foi submetido com o crontab arquivo coloca o arquivo (comandos) na fila para execução Descrição: O comando crontab coloca comandos na fila do daemon cron para serem processados. O “arquivo” que contém informações sobre os comandos a serem executados com as respectivas datas, serve como entrada de dados para o comando crontab. O UNIX possui um daemon chamado cron que executa comandos shell na data e hora especificada e de forma periódica. O daemon cron: - é inicializado quando o sistema operacional é inicializado até que ocorra uma falha no sistema ou seja executado um shutdown. - cria um log de atividades - checa o arquivo crontab no diretório /usr/spool/cron/crotabs periodicamente em busca de jobs. O formato do arquivo crontab é mostrado a seguir. Crie o arquivo com um editor de textos e então submeta o arquivo usando o comando crontab. Cada usuário pode ter apenas 1 arquivo crontab ativo num determinado tempo. O arquivo crontab pode conter mais que uma linha de comando. Cada linha no arquivo consiste de seis campos que são separados por espaços ou tabs. Exemplo de um arquivocrontab: Exemplo: $ crontab Iimpeza_semanal $ crontab -l 30 13 * 1 1-15 $ crontab -v crontab file: your submission time: Thu Jan 02 13:00:29 1992 12 REDIRECIONAMENTO DE E/S, FILTROS E PIPELINES Um comando do UNIX é um programa (conjunto de instruções) que geralmente lê dados de um ou vários arquivos de entrada, efetua algum tipo de processamento sobre eles (computação) e finalmente produz os resultados em arquivo(s) de saída. Na SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 31 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br arquitetura do UN1X, note-se, dispositivos como terminal, discos e impressoras também são tratados como arquivos. Ao criar um processo, o UNIX predefine e automaticamente lhe associa três arquivos padrões: • stdin (0) - entrada padrão; • stdout (1) - saída padrão; • stderr (2) - saída padrão para erros. A entrada padrão (stdin) e um arquivo de onde os programas obtêm dados de entrada para o seu processamento. O sistema associa a esta entrada padrão o teclado do terminal, caso o usuário não especifique uma alternativa. Essa redefinição é um recurso oferecido pelo Shell conhecido como redirecionamento. A saída padrão (stdout) é o arquivo para onde usualmente são enviados os resultados do programa. O monitor do terminal é o arquivo de saída padrão associado ao processo pelo sistema. Assim como a entrada padrão, a saída padrão pode ser redirecionada para outros arquivos (impressora, disco, etc). Além da saída e entrada padrão, o UNIX reserva uma conexão de I/O para mensagens de erros do programa. Se um usuário redireciona a saída padrão de um programa, mensagens de erros emitidas por este programa serão ainda enviadas para o terminal, pois a saída padrão de erros também é o terminal. O Shell permite redirecionar a saída padrão de erros para outros arquivos no sistema. Como exemplo, pode-se utilizar o comando cal . $ cal 10 1997 Nessa execução do comando cal , os dados de entrada para seu processamento são os parâmetros 10 e 1997. Nesse caso, o dispositivo de entrada foi o teclado. A saída do comando será realizada na tela do terminal do usuário, por default o dispositivo de saída padrão. O usuário poderia redirecionar essa saída para um arquivo ou algum outro dispositivo de saída, como uma impressora. Ou seja, se um comando espera uma entrada e nenhum arquivo de entrada é especificado, então esse comando vai buscar seus dados de uma entrada padrão, que é o terminal do usuário. Se um comando vai jogar a saída de seu processamento para um arquivo, e nenhum arquivo de saída foi especificado, o comando utilizará a saída padrão que também é o terminal do usuário. Quase todos os comandos do UNIX seguem essa filosofia de trabalho. Alguns comandos foram previamente implementados com a especificação de qual arquivo seria utilizado para saída e/ou entrada. Por exemplo, o comando ls sempre utiliza como entrada padrão um diretório. Já o comando lpr , utiliza como saída padrão a impressora. SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 32 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Figura 7: Entrada e Saídas Padrões. 13 COMANDOS DE REDIRECIONAMENTO DE E/S Redirecionamento é uma facilidade que o UNIX oferece, permitindo que o usuário altere as saídas e a entrada padrão do programa, especificando novos arquivos. 13.1 REDIRECIONANDO A SAÍDA PADRÃO ( > E >> ) No exemplo do comando cal , a saída padrão do comando foi o terminal. O usuário pode definir que a saída do programa (um determinado calendário) seja realizada para um arquivo em disco para posterior utilização. Esse redirecionamento é feito utilizando-se o símbolo “>” (maior que) e o nome do arquivo que armazenará a saída do programa. $ cal 10 1997 > calendario97.dat Nesse exemplo, a saída do comando cal será redirecionada para o arquivo calendario97.dat. O arquivo será criado, caso não exista, ou sobrescrito se já existir um arquivo com mesmo nome no diretório. Outra forma de redirecionar a saida padrão é feita utilizando o simbolo “>>”. Neste caso, a saída é colocada no final (append) de um arquivo existente, não destruindo os dados do arquivo. Caso o arquivo não exista, ele será criado para armazenar a saída do programa. $ cal 11 1997 >> calendario97.dat 13.2 REDIRECIONANDO A ENTRADA PADRÃO ( < ) O redirecionamento de entrada pode ser feito em todos os comandos que lêem os dados de uma entrada padrão. O redirecionamento de entrada é realizado utilizando o SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 33 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br símbolo “<” (menor que), indicando ao Shell para trocar a entrada padrão (terminal) para um novo arquivo especificado. Como exemplo, pode-se ter o comando write com a entrada padrão redirecionada para outro arquivo. No caso, a entrada estará contida no arquivo em disco, chamado calendario97.dat. $ write Fabio < calendario97.dat Desse modo, o conteúdo do arquivo ca.lendario97.dat será transmitido para a tela do terminal do usuário fabio. 13.3 REDIRECIONANDO A ENTRADA E A SAÍDA SIMULTANEAMENTE O UNIX permite a utilização em conjunto dos símbolos > / >> e < oferecendo ao usuário a capacidade de redirecionar a entrada e a saída padrão do programa de uma única vez. $ who > users.dat $ cat users.dat maria ttyp1 Jun 10 13:03 1997 ana ttyp3 Jun 10 13:13 1997 fabio ttyp5 Jun 10 14:07 1997 marco ttyp6 Jun 10 14:23 1997 $ sort < users.dat ana ttyp3 Jun 10 13:13 1997 fabio ttyp5 Jun 10 14:07 1997 maria ttyp1 Jun 10 13:03 1997 marco ttyp6 Jun 10 14:23 1997 $ sort < users.dat > users2.dat $ cat users2.dat ana ttyp3 Jun 10 13:13 1997 fabio ttyp5 Jun 10 14:07 1997 maria ttyp1 Jun 10 13:03 1997 marco ttyp6 Jun 10 14:23 1997 $ sort -r +1 < users.dat >> users2.dat $ cat users2 ana ttyp3 Jun 10 13:13 1997 fabio ttyp5 Jun 10 14:07 1997 maria ttyp1 Jun 10 13:03 1997 marco ttyp6 Jun 10 14:23 1997 ana ttyp3 Jun 10 13:13 1997 fabio ttyp5 Jun 10 14:07 1997 maria ttyp1 Jun 10 13:03 1997 marco ttyp6 Jun 10 14:23 1997 SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 34 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br 13.4 REDIRECIONANDO A SAÍDA DE ERROS A saída padrão de erros é muito utilizada para a depuração de programas e emissão de relatórios de erros aos usuários. O sistema operacional pode utilizar a saída padrão de erros, associada ao processo, para relatar a seu usuário algum erro que ocorreu na execução do processo. A saída de erros é redirecionada utilizando a notação: >& $ ls arquivo_nao_existente > saida_erro.dat Is: arquivo_nao_existente: No such file or directory $ cat saida_erro.dat $ ls arquivo_nao_existente >& saida_erro.dat $ cat saida_erro.dat ls: arquivo_nao_existente: No such file or directory Da mesma forma que a saída padrão, a saída padrão de erros pode ser redirecionada para o final (append) de um arquivo existente, não destruindo os dados do arquivo. Caso o arquivo não exista, ele será criado para armazenar a saída do programa. $ ls arquivo_nao_existente >& saida_erro.dat $ cat saida_erro.dat Is: arquivo_nao_existente: No such file or directory $ ls arquivo_nao_existente2 >>& saida_erro.dat $ cat saida_erro.dat Is: arquivo_nao_existente: No such file or directory ls: arquivo_nao_existente2: No such file or directory 14 COMANDOS DE FILTROS Filtro é um programa que lê de sua entrada padrão, executa um processamento e escreve para sua saída padrão. Filtros são normalmente conectados linearmente em Shell pipelines. São exemplos de filtro: wc ; sort ; grep Programas que não são filtros: who ; ls ; cd ; mv ; pwd ; whoami ; clear WC Nome: wc - conta o númerode linhas, palavras e caracteres de arquivos. Sinopse: wc [ -lwc] [arquivo ...] Descrição: o comando wc conta o número de linhas, palavras e caracteres de um arquivo especificado como parâmetro. Se nenhum nome de arquivo for especificado, o arquivo de entrada do comando wc será a entrada SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 35 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br padrão. Caso nenhuma opção seja definida, o comando imprime o número de linhas, palavras e caracteres. Opções: • -l conta linhas; • -w conta palavras (words); • -c conta caracteres. Exemplos: $ wc arq.dat 2 4 16 $wc -c arq.dat 16 SORT Nome: sort - ordena linhas de arquivos especificados e escreve os resultados para a saída Sinopse: sort [opções globais] [especificação dos campos] [-o saída] [arquivo ...] Descrição: sort ordena arquivos de entrada e escreve na saída padrão ou no arquivo especificado na opção -o. O comando sort trabalha sobre o conceito de chave (key). Chave é a parte cada linha que o comando sort examina para determinar em qual ordem as linhas aparecerão. Caso nenhuma chave seja especificada, o padrão é toda linha. Para o sort . cada linha é constituída de campos, os quais estão separados por caracteres específicos. O caracter de espaço é o separador de campos default, mas outros separadores podem ser especificados pelo usuário. O comando sort , em seu processamento, utiliza mais um parâmetro chamado indicador de posição. Ele permite que a ordenação comece em um determinado campo da linha, além de possibilitar especificar uma posição em caracter, dentro desse campo. Além disso, a ordem em que será realizada a ordenação também pode ser determinada pelo usuário. Esta determinação é feita através de opções de controle de ordenação, que devem vir antes dos parâmetros indicadores de posição. Opções • -tc o caracter c é assumido como o separador de campo. Caso esta opção não seja especificada, caracteres de espaço em branco e tabulação são usados como separadores; • -b ignora os espaços e tabulações iniciais do campo de ordenação; • -n significa que para o campo específico será realizada uma ordenação numérica. Indicador de Posição: • +C.c -C.c o caracter “C” significa o campo e o caracter “c” significa a posição em bytes naquele campo, Os valores precedidos do sinal de “+” e “-“ indicam o início e fim da chave. Ordem de Comparações: •-r reverte o sentido das comparações. O default é do menor para o maior: (1,2,3), (A,B,C), etc. Globais: SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 36 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Exemplos: $ cat > sort.dat Z:1 -1Campo M:5 -2Campo P:2 -3Campo C:1 -4Campo A:4 -5Campo ^Z $ sort -t: +1 sort.dat $ sort -t: +1 -n sort.dat Z:1 -1Campo Z:1 -1Campo C:1 -4Campo M:5 -2Campo P:2 -3Campo P:2 -3Campo A:4 -5Campo C:1 -4Campo M:5 -2Campo A:4 -5Campo $ sort +0.2 sort.dat $ sort +1 -2 sort.dat Z:1 -1Campo M:5 -2Campo C:1 -4Campo Z:1 -1Campo P:2 -3Campo P:2 -3Campo A:4 -5Campo C:1 -4Campo M:5 -2Campo A:4 -5Campo GREP Nome: grep - procura por padrões de texto em arquivos Sinopse : grep [- cvny] expressão [arquivos de entrada] Descrição: o comando grep procura por um padrão especificado em arquivos, escrevendo a linha do arquivo que possui o padrão equivalente. Opções: • -c mostra o n.° das linhas nas quais forarn encont rados padrões equivalentes; • -n mostra, com a numeração, as linhas em que foram encontrados os padrões; • -v exibe as linhas que não possuem o padrão especificado; • -y trata letras maiúsculas e minúsculas como um mesmo padrão. Expressão: expressões podem ser cadeias de caracteres ou expressões regulares, que, embora também sejam cadeias de caracteres, possuem símbolos com significados especiais chamados metacaracteres: • . (ponto) representa qualquer caracter na pesquisa; • [ - ] representa todos os caracteres compreendidos entre o caracter antes do “-“ e o caracter depois do “-“, inclusive. Exemplos: $ cat > arquivo.dat Ana Fabio Maria Marco ^Z $ grep “an” arquivo.dat Ana Fabio $ grep -n “an” arquivo.dat SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 37 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br 1 Ana 2 Fabio $ grep -v -n “an” arquivo.dat 3 Maria 4 Marco $ grep “r.” arquivo.dat Maria Marco $ grep -n “[r-t]” arquivo.dat 2 Fabio 3 Maria 4 Marco 15 COMANDOS DE Pipelines Pipes são uma velha forma de comunicação entre processos no UNIX, e são fornecidos por todos os sistemas UNIX. Um pipe (duto) é uma conexão que conduz a saída padrão de um programa para a entrada padrão de outro programa. Esse conceito facilita aos programas UNIX trabalharem juntos, sem a necessidade de arquivos intermediários. 15.1 PIPELINE ( | ) O símbolo para a criação de pipelines é a barra vertical ( | ). Quando em uma linha de comando, dois programas são separados por uma barra vertical ( | ), a saída do primeiro é transferida para a entrada do segundo. $ who | wc -1 6 A resposta da linha de comando acima é o número de usuário conectados no sistema naquele instante. Os pipes são half-duplex, isto é, os dados fluem somente em uma direção. Eles somente podem ser usados entre processos que possuam o mesmo ancestral comum (processo pai). No caso anterior, o processo “pai” comum aos dois processos era o Shell do usuário. 15.2 CAPTURANDO A SAÍDA INTERMEDIÁRIA DE UM PIPELINE A possibilidade de se ter pipeline traz a necessidade de se capturar sua saida intermediária. Para isso, tem-se o comando tee. $ tee nome_arquivo SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 38 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Esse comando copia a saída de um dos programas pertencente ao pipeline, o qual está imediatamente anterior ao comando tee, para o arquivo determinado. Figura 8: Comando tee e Pipelines. $ who | tee usuários | sort CUT Nome: cut - corta colunas de arquivos. Sinopse: cut -clista [arquivo] cut -flista [-dx] [arquivo] Descrição: o comando cut é um equivalente ao comando grep com uma análise na vertical. O cut identifica colunas através de dois métodos totalmente diferentes. O mais simples é uma posição em caracter, ou seja, a coluna inicia-se em uma determinada posição da linha. A segunda forma é através de caracteres delimitadores de campo, semelhante ao comando sort . O separador default é o caracter de tabulação (tab). Opções: • -clista os caracteres mencionados na lista são extraídos. A lista são varias posições separadas por vírgula, ou por hífen “-“; • -flista especifica as colunas que serão extraídas. Essa opção trabalha em conjunto com a opção -d; • -dx define o caracter (“x”) separador de campos. Exemplos: $ cat > notas.dat fabio:8 maria:10 marco:7,5 ^Z $ cut -c3-5 notas.dat $ cut -c3-5 notas.dat ton tn ari ai arc ac $ cut -f2 –d: notas.dat $ cut -f3 -d: notasdat 8 8 10 10 7, 7,5 SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 39 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br PR Nome: pr - converte arquivo texto para uma versão colunada e paginada; com cabeçalho. Sinopse: pr [arquivo] Descrição: o comando pr converte um arquivo texto para um arquivo paginado, colunado, com cabeçalhos. Opções: • +nº descarta as primeiras (nº - 1) páginas, imprimindo a partir da página nº; • -nº imprime em nº colunas; • -a imprime colunas horizontalmente; e não verticalmente; • -d utiliza espaço duplo; • -h cab usa cab como cabeçalho ao invés do nome do arquivo; • -l linha configura o número de linhas (o padrão é 66).Caso o número seja menor que 10, os cabeçalhos e rodapés são omitidos; • -m imprime um arquivo por coluna; • -t suprime cabeçalhos, rodapés, e caracteres de preenchimento. Exemplos: $ ls /home > arquivo $ pr -3 arquivo adriana gisela oliveira adrianem gomes pablo adriano goncalve patrick ... ... ... $ pr -a -3: arquivo adriana adrianem adriano adrianoe adrianos aide ana anac anap ... ... ... TR Nome: tr - converte caracteres. Sinopse: tr [opções] [string 1 [string 2] ] Descrição: o comando tr converte caracteres - copia de uma entrada padrão para uma saída padrão, substituindo caracteres de string 1 para string 2, ou deletando caracteres em string 1. Opções: • - d deleta caracteres no string 1 • - s suprime caracteres repetidos no string 2 Caracteres Especiais: • \b ^H (backspace) • \f ^L (form feed - alimentação de formulário) • \n ^J (nova linha) • \r ^M (retomo de carro - CR) • \t ^I (tab) • \nnn caracter com valor octal nnn • \\ contrabarra • char1-char2 todos os caracteres entre char1 e char2 SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 40 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br Exemplos: $ cat > arquivo ABCDEFG HIJKLMN OPQRST UVWXYZ ^Z $ cat arquivo | tr ’A-Z’ ’a-z’ abcdefg hijklmn opqrst uvwxyz $ tr ‘ ‘ ’ \012‘ < arquivo ABCDEFG HUKLMN OPQRST UVWXYZ 16 TAREFAS ADMINISTRATIVAS 16.1 Iniciando o Sistema A inicialização do sistema é feita ligando-se o computador. Será carregado o sistema operacional e o sistema ficará em estado de funcionamento para que se possa abrir uma sessão e trabalhar. Normalmente, quando o sistema é ligado, o boot será feito com o primeiro sistema operacional que for encontrado: o disco rígido ou um disquete. Este método é conhecido como unattended boot . Há métodos de interrupção automática no processo de boot, permitindo um boot interativo do sistema. Este método, que deve ser executado na console do sistema, é conhecido como attended boat e normalmente é usado pelo administrador do sistema para dar boot a partir de uma mídia (kernel) alternativa. Se precisar saber o nome e a versão do sistema operacional que está carregado no computador, deve-se utilizar o comando uname -a . 16.2 Finalizando o Sistema Muitas vezes o sistema UNIX está em um modo que permite vários usuários conectados ao mesmo tempo. Consequentemente existirão vários processos de usuários sendo executando no sistema num dado momento. A primeira regra é: NUNCA DESLIGUAR A ENERGIA DO COMPUTADOR. Se o sistema UNIX for parado indevidamente, podem-se perder informações e o sistema de arquivo pode ficar corrompido. Existem muitas razões para parar o sistema. Se um processo está ativo de modo estranho, a tentativa é usar o comando kill. Se este comando não resolver o problema, o SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 41 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br sistema precisa ser parado e reinicializado. Vários métodos podem ser utilizados para parar o sistema e o comando shutdown é o mais utilizado. Só após é que o equipamento deve ser desligado. O administrador do sistema é que tem a autorização para desligar o sistema e deverá estar no diretório raiz (/) para executar o comando. Nome: shutdown - finaliza a operação do sistema Sinopse: shutdown[ [-r | -h] [tempo] Opções: -r reboot automático após o shutdown -h pára o sistema após o shutdown tempo número de segundos opcionais de espera antes de terminar todos os processos Exemplo: $ shutdown -h 300 17 BACKUPS Uma das principais responsabilidades do administrador é preservar dados armazenados no sistema. Infelizmente os dados, às vezes, são perdidos. Os fatores mais comuns que provocam a perda de dados são: • Falha de hardware; • Remoção de arquivos acidentalmente; • Sistema de arquivos (Filesystem) corrompido; • Crash de Sistema. O administrador é responsável pelo planejamento e implementação de backups para minimizar a perda de dados. Outro aspecto que deve ser levado em consideração são os fatores ambientais externos (fogo, inundação, etc) que podem danificar as mídias utilizadas para backup. Por este motivo, também é importante fazer backups em discos remotos ou estabelecer procedimentos administrativos para manter mídias em locais geograficamente distintos. O procedimento de backup é determinado por alguns fatores dentre eles o uso frequente do sistema e grande quantidade de usuários podem requerer que seja feito backup diariamente. Em ambientes mais simples pode ser feito backup uma vez por semana. Quanto maior a frequência deste procedimento maior o custo pois envolve pessoal e material. No planejamento de backups deve ser levado em consideração quando e de quais dados fazer backup. Existem duas alternativas: fazer backup do sistema todo ou parte dele. Na maioria das vezes a estratégia envolve os dois procedimentos. É possível fazer backup geral aos domingos e parcial de segunda a sexta. Na escolha da estratégia de backup devem ser considerados três fatores: • Quantidade de mídias necessárias; • Quantidade de tempo necessário; • Frequência do backup. SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 42 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br A quantidade de mídia e o tempo são proporcionais ao espaço ocupado pelos arquivos do sistema. A frequência do backup depende do custo de dados perdidos. TAR Nome: tar - armazena backups em uma fita ou em disco. Sinopse: tar {-c l -r I -t I -u l -x } [-f arquivo-disposito] [arquivo] Descrição: O comando tar salva e recupera arquivos de/para fita magnética. Para salvar arquivos em fita é necessário saber o arquivo do dispositivo da unidade de fita. Os nomes típicos podem ser: /dev/rct - fita em cartucho /dev/rmt - fita rolo 9 trilhas ou fita DAT Opções: -c cria um novo arquivo -r arquivos são adicionados no fim do backup -t imprime o conteúdo do backup -u arquivos são adicionados se forem novos ou modificados -x arquivos são extraídos do backup -f arquivo-dispositivo designa o arquivo onde o backup será escrito. O arquivo-dispositivo não precisa ser um dispositivo. Pode-se criar um arquivo de backup sob um diretório no disco. arquivo arquivo onde os dados serão lidos ou extraídos Exemplo: $ tar -c arquivo1 arquivo2 $ tar -v -t -f saida.tar CPIO Nome: cpio - armazena backups Sinopse: cpio -o [-c -v -x] cpio -i [-c -d -m -t -u -v -x] Descrição: O comando cpio -o lê a lista dos nomes de arquivos de entrada padrão e cria um arquivo de backup com os arquivos requeridos e envia o arquivo backup para a saída padrão. A lista dos nomes do arquivo backup é criada com o comando find, e o arquivo de backup é geralmente redirecionado para o arquivo especial do dispositivo de fita. O comando cpio -i lê os arquivos de backup da entrada padrão (arquivo especial do dispositivo de fita) e recupera os arquivos contidos no disco. Os nomes dos arquivos criados dependem se o arquivo foi criado com caminho absoluto ou relativo. Para salvar arquivos em fita, é necessário saber o arquivo do dispositivo da unidade de fita. Os nomes típicos podem ser: /dev/rct - fita em cartucho /dev/rmt - fita rolo 9 trilhas ou fita DAT Opções: -c escreve o cabeçalho em formato ASCII (se usado com opção -o deve ser usado com -i) -d cria a estrutura do diretório se necessário. -m retém a modificação da data atual (importante para controle de versão) -t exibe os conteúdos do arquivo backup -u recupera incondicionalmente (se o arquivo já existe é sobreposto) SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 43 Rua São João, 1759 – Zona 07– Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br -v exibe uma lista de arquivos copiados -x trata arquivos especiais Exemplo: $ find . -print | cpio -ocv > /dev/rmt (cria um backup de todos os arquivos sob o diretório corrente) $ cpio -ict < /dev/fmt (recupera todos os arquivos do backup) $ cpio -icdmv < /dev/fmt (recupera todos os arquivos do backup) $ cpio -icudm ‘*arquivo*’ < /dev/rmt (recupera um único arquivo) 18 COMUNICAÇÃO COM OUTROS USUÁRIOS A comunicação com outros usuários no sistema UNIX é uma das características chave do sistema operacional que os usuários precisarão e utilizarão diariamente. O UNIX possibilita diferentes formas de se comunicar eletronicamente com outros usuários. Com os serviços de comunicação poder-se-á: • Obter informações sobre outros usuários do sistema; • Enviar e Receber mensagens eletrônicas com o utilitário mail ; • Comunicar com outros usuários conectados com o sistema. 18.1 COMANDOS PARA COMUNICAÇÃO WHO Nome: who - exibe informaeoes sobre os usuarios conectados no sistema Sinopse: who [am i] Descrição: O comando who gera uma lista de todos os usuários que estão conectados no sistema no instante de sua execução Este comando examina o arquivo /etc/utmp para obter informações de usuários As informações exibidas dos usuários são o username, o terminal, a data e hora de login. Opções: am i exibe o nome de login do usuário corrente Exemplo: $ who anderson tty00 Jan 14 08:01 johnston tty02 Jan 14 09:00 smith ttyp0 Jan 14 12:16 thomas ttyp3 Jan 14 15:34 $ whoami anderson SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 44 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br WRITE Nome; write - escreve uma mensagem para o tty de um determinado usuário Sinopse: write usuário [tty] Descrição: O comando write permite a um usuário enviar uma mensagem para o tty de outro usuário no UNIX. Após a digitação do comando, seguido do nome do destinatário (ou nome do usuário e identificação do terminal no qual ele está conectado) e da tecla <ENTER>, cada linha escrita será enviada ao terminal do usuário chamado depois de pressionada a tecla <ENTER>, até que o usuário que iniciou a chamada pressione CTRL-D ou CTRL-Z como primeiro caracter da linha. Caso o usuário chamado estiver em outra máquina da rede, o argumento usuário deve conter uma identificação da forma usuário@máquina . Exemplo: $ write fulano <ENTER> $Message from sicrano on... Sicrano esta' lendo esta linha. Sicrano esta’ lendo esta linha. E continuará lendo outras ate' E continuara’ lendo outras ate’ que fulano digite: que fulano digite: ^D $Message from fulano on... $write sicrano <ENTER> Mensagem recebida. Mensagem recebida. Para de perturbar! Para de pertubarl ^D MESG Nome: mesg - desabilita ou habilita a recepção de mensagens através dos comandos write e talk . Sinopse: mesg [n] [y] Descrição: o comando mesg permite ao usuário configurar se quer ou não receber mensagens de outros usuários enviadas através do comando write , ou pedidos de conexão com o comando talk . O comando sem parâmetros apresenta o estado de aptidão do terminal corrente. Opções: • y (yes) habilita a recepção de mensagens de outros usuários. • n (no) desabilita a recepção de mensagens. Exemplo: $ mesg is y $ mesg n $ mesg is n TALK Nome: talk - permite a comunicação interativa entre dois usuários. Sinopse: talk usuário [tty] Descrição: o comando talk é bem mais elaborado que o comando write. Quando o usuário invoca o comando talk a fim de se conectar com outro usuário, o talk se comunica com um processo servidor (daemon) chamado talkd o qual se encarrega de avisar ao usuário destino que alguém esta querendo SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 45 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br estabelecer uma conexão, Mensagens e avisos sonoros são enviados ao terminal do usuário destino. Para estabelecer a conexão, o usuário destino invoca o comando talk passando como parâmetro o nome do usuário que esta solicitando a comunicação. Este nome é obtido na mensagem emitida pelo servidor talkd. Assim como o write, o talk permite uma conversação entre usuários em máquinas diferentes, desde que o parâmetro usuário contenha também a identificação da máquina. Exemplo : $ who ana fabio ttyp1 ttyp3 Jun Jun 17 17 21:05 20:53 $ talk fabio@ttyp3 Message from Talk_Daemon talk: connection request by ana@ttyp1 talk: respond with: talk ana@ttyp1 $ talk ana@ttyp1 <ENTER> [Connection Established] Oi, estou com algumas duvidas. Podes me ajudar? [Connection Established] Tudo bem. Vou ate” ai' Ana... Tudo bem. Vou ate’ ai' Ana... Oi, estou com algumas dúvidas. Podes me ajudar? MAIL Nome: Mail - Utilitário que permite receber, selecionar, consultar, enviar e manter mensagens de mail. Sinopse: Mail [usuário] Descrição: o utilitário Mail ou mailx é um dos recursos mais utilizados no sistema UNIX para troca de mensagens entre usuários. Existem outros utilitários, como o mail , que é mais limitado que não será abordado. Este utilitário permite ENVIAR mail para outros usuários, estando eles conectados ou não ao sistema. Os procedimentos para utilizar este utilitário são: $ Mail usuário (onde usuário é o endereço de e-mail do destinatário) Subject: informe o assunto da mensagem e pressione <ENTER>. [sem prompt] a partir daqui escreva o corpo da sua mensagem e então pressione <ENTER> para mover o cursor para o início da próxima linha. Pressione CTRL D para finalizar a mensagem. Cc: usuários para quem se deseja enviar cópias da mensagem. Se for mais de um usuário, separar os nomes com espaço ou vírgula. Quando concluir pressionar <ENTER> $. lndica que a mensagem foi enviada com sucesso. Para LER os e-mails o procedimento é: SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 46 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br $ Mail Mail $Revision: 4.2.4.2 $ Type ? for help. “usr/spoll/mail/marcelo”: 3 messages 3 new U 1 ricardo Wed Feb 9 13:40 11/190 “Não se esqueça da Festa” >N 2 marcelo Wed Feb 9 17:35 11/302 “Trabalho de Unix” N 3 ricardo Thu Feb 13 13:40 11/234 “Comentários sobre a Festa” ? Onde: N indica que a mensagem é nova, isto é, não foi lida antes. U indica que a mensagem não foi lida anteriormente, mas cabeçalho da mensagem no menu em consulta anterior. > aponta para a mensagem corrente no menu. Comandos COMUNS que podem ser usados: ?, help lista de comandos que podem ser utilizados q , CTRL D finaliza o mail. <ENTER> exibe a mensagem corrente n, + exibe a próxima mensagem - exibe a mensagem anterior número exibe a mensagem associada ao número informado. d número(s) deleta a(s) mensagem(ns) especificada(s) Exemplo: $ Mail alexandre adriano jorge Subject: Conclusão do Trabalho <ENTER> Precisamos concluir o trabalho ainda esta semana porque a apresentação está marcada para o final do mês. <ENTER> ^ D Cc: eduardo <ENTER> $ SG SISTEMAS DE AUTOMAÇÃO LTDA. LINUX 47 Rua São João, 1759 – Zona 07 – Maringá – PR Fone: (44) 3026-2666 – Site: www.sgsistemas.com.br 19 PROGRAMAÇÃO DO SHELL O Shell é um interpretador de comandos. Quando desejar executar muitas vezes uma série de comandos, é conveniente salvar estes comandos em um programa shell e executar os comandos invocando o script shell. REFERÊNCIAS BIBLIOGRÁFICAS http://www.linux.org - Home page da Linux Organization, site oficial do Linux http://sunsite.unc.edu/mdw/linux.html - Site com projeto de documentação do Linux em Inglês http://www.conectiva.com.br/cpub/pt/principal/index.php- Site da Conectiva http://br.tldp.org/documentos/livros/html/gas/ - Guia do administrador de sistemas em português http://www.ciagri.usp.br/linux.html - Linux Page do projeto CIAGRI da USP http://www.linuxsecurity.com.br/article.php?sid=961 - Linux Security Brasil http://tux.cprm.net/.disk2/www.poli.org/rh/indice.html - Manual de Instalação do Red Hat da Poli – USP