Curso Básico de Unix 1 1 - Sistema Operacional Um sistema operacional é um software especial que controla o computador, ele realiza a comunicação entre o usuário e a máquina. No caso do Unix, ele realiza a alocação de recursos entre vários usuários. Os recursos podem ser: utilização de CPU, acesso a disco, acesso a memória entre outros. Exemplificando, quando um usuário solicita que um arquivo seja gravado em disco, o sistema operacional intervém para gerenciar a alocação de espaço no disco e a transferência da informação da memória para o disco. O sistema operacional também controla a utilização de CPU, dizendo quando e como um programa poderá utilizar tal recurso. Sistema Operacional Hardware Fig. 1 Um sistema operacional de rede, realiza o controle e gerenciamento dos recursos da rede, como serviço de arquivos, serviço de impressão, segurança, acesso a aplicativos entre outros. O sistema operacional possui um núcleo ao qual são anexados outros serviços. Estes serviços podem ser removidos e adicionados conforme a necessidade. Fig. 2 Recursos de um Sistema Operacional Os principais de rede são: recursos de um S.O. Curso Básico de Unix 2 • Sistema de Arquivos É responsável pelo gerenciamento e organização de arquivos e diretórios. Um arquivo é geralmente um container de dados, enquanto um diretório é um container de arquivos e/ou outros diretórios. O diretório contido em um outro diretório é chamado de subdiretório. O sistema de arquivos do sistema operacional UNIX é bastante similar a um arquivo gabinete. O sistema completo de arquivos é análogo ao gabinete, pois contém todas as gavetas, pastas e arquivos. Uma gaveta é similar a um diretório, a qual pode conter pastas ou relatórios. Uma pasta de arquivos também poderia representar um subdiretório, a qual pode conter pastas ou relatórios. O relatório representaria um arquivo, pois possui os dados reais. Fig. 3 • Multitarefa No sistema Unix, várias tarefas podem ser realizadas ao mesmo tempo. A partir de um único terminal, um único usuário pode executar vários programas que dão a impressão de estarem rodando simultaneamente. Isso significa que um usuário pode editar um arquivo de texto enquanto outro arquivo esta sendo formatado, e um outro sendo impresso. Curso Básico de Unix 3 • Multiusuário A capacidade de multiusuário permite que mais de um usuário tenha acesso e use o sistema ao mesmo tempo. Múltiplos terminais e teclados podem ser ligados ao mesmo computador. Essa é uma extensão natural da capacidade de multitarefa. Se o sistema pode rodar múltiplos programas simultaneamente, alguns desses programas deverão ser capazes de suportar outras sessões de usuários. Além, disso, um único usuário poderá entrar várias vezes no mesmo sistema através de múltiplos terminais. Uma grande vantagem dessa arquitetura é que os membros de um grupo de trabalho podem ter acesso aos mesmos dados ao mesmo tempo. • Serviço de Impressão O sistema operacional Unix fornece um utilitário denominado spooler de impressão (ou simplesmente spooler) que é utilizado para configurar e controlar a impressão em seu sistema. O spooler é um mecanismo que aceita requisições de impressão provenientes de todos os usuários do sistema e então configura adequadamente a impressora e imprime as requisições uma de cada vez. Cada vez que um usuário quisesse imprimir um arquivo, ele teria que certificar- se de que ninguém mais estivesse correntemente imprimindo um arquivo. • Segurança Por permitir que vários usuários acessem simultaneamente o ambiente, se faz necessário um controle de quem pode ou não acessar o sistema e seus recursos. De tal forma que somente usuários cadastrados tenham acesso ao ambiente. Somente usuários ou grupos de usuários possam acessar determinados arquivos. Bem como em determinados casos registrar o que foi feito pelos usuários. Curso Básico de Unix 4 2 - Conceitos Gerais Para se comunicar com o Unix você precisa ter: • Login ID • Senha O login ID é o nome do usuário. A esse ID pode ou não ser atribuída uma senha de acesso, a qual será apenas de seu conhecimento, nem mesmo o administrador saberá qual é a sua senha. A senha deve satisfazer as seguintes condições: 1. Deve Ter pelo menos seis caracteres. 2. Pelo dois dos primeiros seis caracteres devem ser alfabéticos 3. Pelo um dos seis primeiros seis caracteres deve ser nãoalfabético. Comandos de Usuário Login Função: Inicia a sessão do usuário. Sintaxe: login: [usuário] password: <senha_do_usuário> Exemplo: login root logout Função: Encerra a sessão do usuário Sintaxe: logout Curso Básico de Unix 5 SHELL Durante seu processo de login, um shell é iniciado. O shell é responsável pela emissão do prompt e interpretação dos comandos digitados. Fig. 4 Formato da Linha de Comando Sintaxe: $ comandos [- opções] [argumentos] Exemplo: $ ls - F $ tar –cvf /dev/rmt / 0 m /etc/ Curso Básico de Unix 6 Comandos de Usuário clear Limpa a tela Sintaxe: clear id Mostra o identificador do usuário. Sintaxe: id [- gu] Parâmetros: - g Mostra apenas o identificador de grupo efetivo do usuário. - u Mostra apenas o identificador efetivo do usuário. who Mostra quem esta usando qual terminal. Sintaxe: who [am i] Parâmetros: am i Mostra o nome real do usuário (real user name) Exemplo: $ who am i date Mostra a data e hora atuais do sistema, com possibilidade de formatação da saída. Sintaxe: date [- u] [+formato] Parâmetros: - u +formato Universal time. Mostra a hora GMT formato é uma string que contém informações sobre a formatação da saída do comando date. Os seguintes operandos especiais serão substituídos por seus valores correspondentes quando Curso Básico de Unix 7 encontrados dentro da string formato : %n %t %m %d %y Caractere newline (quebra de linha) Caractere de tabulação (TAB) Mês do ano (01 a 12) Dia do mês (01 a 31) Últimos dígitos do ano (00 a 99) %D %H %M %S %T %j %w %a %h %r Data no formato MM/DD/AA Hora (00 a 23) Minuto (00 a 59) Segundo (00 a 59) Hora no formato HH:MM:SS Dia do ano (001 a 366) Dia da semana (Dom=0 a Sáb=6) Dia da semana abreviado (Sun... Sat) Mês abreviado (Jan...Dec) Hora no formato am/pm Exemplos: date +”Agora são %H horas e %M minutos %n” date +”Hoje é %d/%m/%y ” passwd Altera a senha do usuário Sintaxe: passwd [usuário] Obs: Apenas o usuário root pode alterar a senha de outro usuário. echo Escreve no terminal. Sintaxe: echo [string] Exemplo: $ echo ‘Bom dia’ Curso Básico de Unix 8 banner Escreve com letras grandes. Sintaxe banner [string] mesg Controla o recebimento de mensagens pelo terminal. Sem argumentos mesg mostra o estado atual. Sintaxe: mesg [y|n] Parâmetros: y n Liga o recebimento de mensagens Desliga o recebimento de mensagens. write Envia uma mensagem a um terminal Sintaxe: write usuário [terminal] Parâmetro: terminal mensagem. Indica para qual terminal deve ser enviada a Exemplo: $ write bbb Saudacoes ^D Curso Básico de Unix 9 3 - Sistema de Arquivos Estrutura da Árvore Fig. 5 A organização do diretório poderá ser representada graficamente utilizando uma estrutura de árvore hierárquica. Cada item da árvore será um diretório ou um arquivo. Os diretórios estão representados por figuras ovais e os arquivos estão representados por retângulos de modo a serem facilmente distinguidos no diagrama. Hierarquia do Sistema de Arquivos Curso Básico de Unix 10 Fig. 6 Assim como o gabinete, a hierarquia do sistema de arquivos do sistema operacional Unix oferece um mecanismo fácil e eficiente para organizar seus arquivos. Como as várias versões do sistema operacional Unix normalmente contém centenas de arquivos e programas, foi definida uma convenção de hierarquias para que todos os sistemas operacionais Unix suportem um layout similar de diretórios. O topo da hierarquia é identificado como diretório raiz e é denotado com uma barra única diagonal. O Unix também oferece comandos que permitem facilmente a criação de novos diretórios, à medida em que se alterem as suas necessidades organizacionais, bem como transferir ou copiar arquivos de um diretório para outro. Isto é tão fácil quanto adicionar uma nova pasta a uma das gavetas de seu gabinete e transferir um relatório de uma pasta antiga para uma pasta nova. No Unix HP- UX 10.0, o sistema de arquivos foi reorganizado em duas partes principais: Arquivos estáticos (que são compartilhados). Existem três diretórios importantes nesta parte: /opt. /usr e /sbin. /opt Este diretório conterá aplicações e produtos. As pessoas que desenvolvem e administram o sistema Unix o utilizarão para instalar novos produtos ou aplicações locais. /usr /bin Este diretório contém os programas necessários Curso Básico de Unix 11 para a manipulação de arquivos e operação do sistema operacional. Eles podem normalmente ser acessados por todos os usuários. (bin é a abreviação de binário). /usr /sbin Este diretório contém os programas para todos os comandos de administração do sistema. Somente o super- usuário para utilizar a maioria deles. /usr /lib Este diretório contém bibliotecas compartilhadas e arquivos utilizadas para as aplicações. /usr /share Este diretório contém arquivos de fornecedores independentes (o mais importante é o manual). /usr /share/man Este diretório contém todos os arquivos associados às páginas do manual online. /usr /local /bin Este diretório geralmente armazena programas e utilitários desenvolvidos localmente. /sbin Este diretório contém os comandos essenciais utilizados para inicialização e encerramento do sistema. Arquivos Dinâmicos (que são privados). Existem sete diretórios importantes nesta parte: /home, /etc, /stand, /tmp, /dev, /mnt e /var. /home Todo usuário de um sistema operacional Unix deve Ter sua própria conta. Juntamente com a identificação do seu login e a senha, o administrador também criará o seu próprio diretório. /etc Este diretório mantém a maioria dos arquivos de configuração do sistema. /stand/vmunix Este arquivo armazena o programa que é o núcleo (kernel) do sistema operacional. Este programa é carregado na memória quando seu sistema é ligado e controla a todas as operações de seu sistema. /tmp Este diretório é comumente utilizado como área de Curso Básico de Unix 12 rascunho do sistema operacional, que necessita criar arquivos de trabalho ou intermediários. Este diretório é limpado durante a reinicialização do sistema. /dev Este diretório contém os arquivos que representam periféricos de hardware que podem ser conectados a seu sistema. Uma vez que esses arquivos atuam como uma passagem para o periférico, os dados nunca serão armazenados diretamente nos arquivos especiais. /mnt Este diretório será utilizado para montar outros periféricos . /var /mail Este diretório contém uma “caixa de correio” para cada usuário que tenha mensagens a receber. /var /tmp Este diretório é utilizado comumente como área de rascunho dos usuários. Curso Básico de Unix 13 Percursos Fig. 7 Percurso Absoluto • Sempre se inicia no topo da hierarquia (a raiz) • Sempre se inicia com uma / • Não depende de sua localização corrente dentro da hierarquia • Sempre fornece a designação completa da localização de um arquivo ou diretório É único dentro da hierarquia • Percurso Relativo • Sempre começa na sua posição corrente dentro da hierarquia • Nunca começa com uma / • É único relativo somente à sua localização corrente • É freqüentemente menor do que o percurso absoluto Curso Básico de Unix 14 Comandos de Usuário pwd Mostra o diretório corrente. Sintaxe: pwd ls Lista o conteúdo de diretórios. Sintaxe: ls [- aAcCdfFiLqrstu1][arquivo] Parâmetros: - a -A Inclui entradas do diretório cujos nomes comecem com “.” normalmente omitidas. Lista todas as entradas, exceto “.” e “..”, esta opção é default para o superusuário root. -c Usa a data de modificação do arquivo para a ordenação ou impressão. -C Formata a saída em múltiplas colunas; default quando a saída é o terminal. -f Não ordena a saída. -F Diferencia os tipos de arquivos concatenando caracteres a seus nomes: / * @ = | -l Diretório Arquivos executáveis Links simbólicos Sockets Pipes Lista usando o formato longo. Curso Básico de Unix 15 -r Reverte a ordenação para obter uma ordem alfabética inversa. -R Lista inclusive o conteúdo dos diretórios abaixo. cd Muda o diretório de trabalho. Se o diretório não for especificado, muda para o diretório home do usuário. Sintaxe: cd [diretório] find Percorre os diretórios (e seus subdiretórios) especificados mostrando os arquivos com as características desejadas. Sintaxe: find <diretório> [diretório...][expressão] Parâmetros: expressão As seguintes primitivas podem ser combinadas para definir expressão. - atime n dias. Verdadeiro se o arquivo tiver sido acessado há n - ctime n dias. Verdadeiro se o arquivo tiver sido mudado há n - group x Verdadeiro se o arquivo pertencer ao grupo x. - mtime n Verdadeiro se o arquivo tiver sido modificado há n dias. - name x Verdadeiro se x coincidir com o nome do arquivo corrente. - print Sempre verdadeiro, imprime o nome do arquivo corrente. - prune Não entra em subdiretórios. - user x Verdadeiro se o arquivo pertencer ao usuário x. Operadores: ! exp - and -a Negação Operador ‘E’ lógico Algumas versões de find utilização –a no lugar de Curso Básico de Unix 16 - or -o - and Operador lógico ‘OU’ Algumas versões de find utilizam –o no lugar de –or mkdir Cria diretórios. Sintaxe: mkdir [- p] <diretório> [diretórios...] Parâmetro: - p Cria os diretórios intermediários do path de necessário. rmdir Remove diretórios vazios. Sintaxe: rm dir <diretório> [diretórios...] Curso Básico de Unix 17 4 – Arquivos Um arquivo é um container para dados ou uma conexão para um periférico. Todo arquivo tem um nome e pode conter dados que residem em um disco. Existem vários tipos de arquivos: - Arquivos comuns • texto, dados, desenho • programas executáveis - Diretórios Arquivos especiais Comandos de Usuário cat Concatena e mostra arquivos. Sintaxe: cate [–etuv] [arquivo...] Parâmetros: - e Similar a –v mais imprime um cifrão ($) ao final de cada linha. Ignorado em alguns sistemas se não usado com –v. -t Similar a –v, mas imprime caracteres de tabulação (tabs) como ^|. Ignorado em alguns sistemas se não usado com – v. -u Processa a saída caractere a caractere, em vez de utilizar o buffer. -v Imprime caracteres especiais de forma visível (tabs e newlines são processados) more Mostra arquivos texto página a página. Curso Básico de Unix 18 Sintaxe: more [- csu] [arquivo] Parâmetros: - c Escreve a partir do topo da tela em vez de rolá- la. -s Substitui múltiplas linhas em branco consecutivas por apenas uma. -u Trata caracteres de retrocesso (backspace) e seqüências CR- LF de maneira especial. lp Envia arquivos para a fila de impressão. Caso nenhuma impressora seja especificada, lpr usará a impressora padrão do sistema. Sintaxe: lp [- ddest][- m][- nnumber ] [arquivo...] Parâmetros: - d Fila de destino. -m Determina que após a impressão seja enviada uma mensagem para o usuário -n Número de cópias cp Copia um ou vários arquivos. Quando vários arquivos estão sendo copiados, destino deve se referir a um diretório. Sintaxe: cp [- ipr] <arquivo> [arquivo...] <destino> Parâmetros: - i Solicita confirmação antes de copiar cada arquivo. -p Mantém na cópia as datas de modificação e as permissões do arquivo original. -r Copia todos os arquivos e subdiretórios abaixo do diretório especificado. Neste caso, destino deve se referir a um diretório. Curso Básico de Unix 19 mv Move ou renomeia arquivos e diretórios. Se múltiplos arquivos forem especificados, destino deverá ser um diretório. Sintaxe: mv [- f|i] <arquivo> [arquivo...] <destino> Parâmetros: - f -i Não pede confirmação antes de sobrescrever um arquivo já existente Solicita confirmação antes de subescrever um arquivo existente. Ln Cria links para arquivos ou diretórios. Ln cria tanto links simbólicos como diretos. Default=links diretos. Sintaxe: ln [- fs] <destino> <nome> Parâmetros: - f -s Força a criação do link, ignorando acessibilidade ou existência do arquivo. Cria um link simbólico. rm Remove arquivos. Sintaxe: rm [- firR] <arquivo> [arquivo...] Parâmetros: - f Efetua a eliminação sem solicitar confirmação. -i Solicita confirmação antes de remover. - r ou –R Causa a remoção de todos os arquivos e subdiretórios abaixo do diretório especificado. (Inclusivo o próprio). Curso Básico de Unix 20 tail Mostra as linhas finais de um arquivo. Algumas versões de tail aceitam no máximo um arquivo como entrada. Sintaxe: tail [- f] [- n] <arquivo> Parâmetros: - f Faz com que o tail não pare de ler o arquivo mesmo encontrando seu fim. Útil quando o arquivo está aumentando constantemente. -n Mostra as últimas n linhas do arquivo. Acesso a Arquivos Cada arquivo pertence a um usuário do sistema. O proprietário de um arquivo tem o controle absoluto sobre quem tem acesso a ele. O proprietário tem o poder de permitir ou negar o acesso dos seus arquivos a outros usuários. Ele também pode decidir dar o arquivo a outro usuário do sistema. Uma vez transferida a propriedade, o proprietário anterior não terá mais o controle sobre o arquivo. O sistema Unix tem uma estrutura de acesso de três camadas para um arquivo: • usuário representa o proprietário do arquivo • grupo um grupo que pode Ter acesso ao arquivo • outro Qualquer outra pessoa Exemplo - rw- r- - r- - 1 user1 11:00 arq1 - rwx r- x r- - 1 user1 11:05 arq2 - rw- r- x r- x 1 user1 11:00 arq3 user 37 Jul 24 user 37 Jul 24 user 37 Jul 24 Curso Básico de Unix 21 Tipos de Acesso Há três tipos de acesso para cada arquivo e diretório. - Read(leitura) permite que o conteúdo de arquivos e diretórios possa ser examinado. - Write(gravação) permite que o conteúdo de arquivos e diretórios possa ser alterado. - Execute(execução) Permite que um arquivo seja usado como comando e um diretório se torne o diretório corrente de trabalho Permissões O seu acesso a um arquivo é definido através da sua identificação do usuário, sua identificação de grupo e as permissões associadas ao arquivo. As permissões de um arquivo são designadas no modo. O modo de um arquivo é um campo de nove caracteres que define as permissões para o proprietário do arquivo, o grupo a que o arquivo pertence, e todos os outros usuários no sistema. - rw - r - - rwx r - x r - - 1 user1 user r - x 1 user1 user 37 jul 24 37 jul 24 Acesso a outros Acesso ao grupo Acesso ao usuário (proprietário) Comandos de Usuário chmod Altera permissões de acesso a arquivos. 11:00 arq1 11:00 arq1 Curso Básico de Unix 22 Sintaxe: chmod [- R] <modo> <arquivo> [arquivo...] Parâmetros: - R Muda o modo de acesso de todos os arquivos e subdiretórios abaixo do diretório especificado. modo Pode assumir modo simbólico ou absoluto. Modo simbólico: é uma lista de expressões da forma [identificador..] operando[valor] separada por vírgula. Identificador____Descrição___________________________________ u g o a Permissões para o dono do arquivo Permissões para o grupo do arquivo Permissões para outros grupos. Todos os anteriores (all). Default se o identificador for omitido. Operando______Descrição___________________________________ + = Adiciona permissões. Retira permissões. Assinala explicitamente uma permissão (zerando as outras). Valor_________Descrição___________________________________ r w x Permissão para leitura. Permissão para escrita. Permissão para execução Modo absoluto: as permissões neste modo são representadas por um número octal. Valor_________Significado__________________________________ 0 1 2 3 4 5 Nenhuma permissão. Permissão de execução. Permissão de escrita Permissão de execução e escrita. Permissão de leitura. Permissão de execução e leitura. Curso Básico de Unix 23 6 7 Permissão de leitura e escrita. Permissão de leitura, escrita e execução. touch Atualiza a data de acesso do arquivo. Caso o arquivo não exista, touch irá criá- lo vazio por default. Sintaxe: touch [- c] <arquivo> [arquivo...] Parâmetros: - c Não cria o arquivo caso ele não exista. chown Altera o proprietário de um arquivo(s) e, opcionalmente, o grupo ID. Sintaxe: chown <proprietário>[:grupo] <arquivo> [arquivo...] chgrp Altera o acesso do grupo para um arquivo ou diretório. Sintaxe: chgrp <grupo> <arquivo> [arquivo] su Troca a identificação do usuário. Sintaxe: su [usuário] nwgrp Altera a identificação de grupo. Sintaxe: newgrp [grupo] Curso Básico de Unix 24 5 – Editor vi O vi é o editor de texto padrão que é fornecido com a maioria dos sistemas Unix. É dirigido por comandos, e seus comandos são classificados em: • Administração geral • Movimentação do cursor • Inserção de texto • Transferência de texto • Modificação de texto Iniciando o vi Para iniciar o vi basta digitar no prompt: vi [arquivo] Terá então inicio uma sessão de edição. Se o arquivo requisitado já existi, a primeira tela do texto será exibida. Do contrário, se você esta editando um novo arquivo, verá uma tela em branco com sinal gráfico (~) na coluna esquerda de toda a tela. Finalizando o vi Para finalizar o vi você pode gravar as alterações do texto ou simplesmente abandoná- las. Comando ESC ZZ ESC :wq ESC :q! Função Salva e sai do vi sem nenhuma mensagem. Salva e sai do vi. Abandona as alterações Curso Básico de Unix 25 Comandos de Controle do Cursor Comando h ou backspace j k l ou espaço #w #b #e $ ^ ou 0 (zero) G #G :# Ctrl + g Return Ctrl Ctrl Ctrl Ctrl L M H Ctrl + + + + b f u d + l Função Move um caracter para a esquerda Desce uma linha Sobe uma linha Move um caracter para a direita Move palavra por palavra (W ignora pontuação) Volta palavra por palavra (B ignora a pontuação) Move para o fim da próxima palavra Vai para o fim da linha corrente Vai para o início da linha corrente Vai para o fim do arquivo Vai para a linha número # Vai para a linha número # Informa a linha que você esta Vai para o primeiro caracter sem espaço em branco na próxima linha Retorna à janela anterior de texto Avança para a próxima janela de texto Avança metade da janela de texto Retorna metade da janela de texto Vai para a última linha na tela Vai para o meio da linha na tela Vai para o início da tela Redesenha a tela. Modo de Entrada Comando a i O o A I Função append – (acrescenta) novo texto depois do cursor insert – (insere) novo texto antes do cursor Open – (abre) uma linha para o texto acima da linha corrente Open – (abre) uma linha para o texto abaixo da linha corrente Append – (acrescenta) novo texto no fim da linha Insert – (insere) novo texto no início ou na linha Trabalhando com o Texto Comando Função Curso Básico de Unix 26 dw pw x xp pp npp yw yy n yy r R /texto ?texto n N :m,ns/ old_text /n ew_text /[g] Deleta uma palavra (delete word) Cola palavra Deleta caracter Cola caracter Deleta linha Deleta n linhas Copia uma palavra Copia linha Copia n linhas Troca um caracter Efetua a troca até a tecla ESC ser pressionada Pesquisa um determinado texto para baixo Pesquisa um determinado texto para cima Procura a próxima ocorrência previamente pesquisada Procura a próxima ocorrência previamente pesquisada, mas no sentido inverso. Realiza a troca global de textos. m define a quantidade de palavras a serem pesquisadas na linha, n define a linha inicial de pesquisa a partir do cursor, g define se a pesquisa e global dentro da linha. Comandos de Arquivo Comando :w :w file :e file :e! :! Cmd :set nu :set nonu Função Grava o buffer corrente para o disco Grava o buffer corrente para o arquivo file Traz o arquivo file para o buffer desconsiderando o antigo Desconsidera todas as alterações para o buffer e recarrega o arquivo do disco Executa o comando shell cmd Ativa a opção de numeração de linha Desativa a opção de numeração de linha Curso Básico de Unix 27 6 - Shell Um shell é um programa interativo que serve como um interpretador de linha de comando. Ele é separado do sistema operacional, isso permite que se possa selecionar a interface que mais se adapta às suas necessidades. Resumidamente o shell possui as seguintes funcionalidades. • Pesquisa por um comando e executa o programa a ele associado. • Substitui os valores da variável do shell por variáveis associadas. • Manipula o redirecionamento de E/S e pipelines. • Contém uma interface de programação interpretada. Fig. 8 Shells Utilizados /usr /bin /sh /usr /bin / ksh POSIX shell Korn shell Curso Básico de Unix 28 /usr /old /bin /sh Bourne shell /usr /bin /csh C shell /usr /bin / keysh Uma softkey do shell, sensitiva ao contexto /usr /bin / rksh Korn shell restrito /usr /bin / rsh Bourne shell restrito O Ambiente do Usuário O ambiente do usuário descreve muitas coisas sobre a sua sessão ao programa que você executa. Ele descreve sua sessão para o sistema. Seu ambiente contém informações sobre o seguinte: • O caminho para o seu diretório home • Onde enviar o seu correio eletrônico • O fuso horário no qual você esta trabalhando • Com que nome você se logou • Onde o shell pesquisará por comandos • Seu tipo e tamanho de terminal • Outras informações que as aplicações possam precisar. Configurando as variáveis do Shell Uma variável do shell é similar a uma variável em álgebra. É um nome que representa um valor. A designação de uma variável permite que um valor seja associado a um nome de variável. O valor pode então ser acessado através do nome da variável. Se o valor é modificado, o novo valor pode ainda ser acessado através do mesmo nome de variável. Para se associar um valor a uma variável basta digitar: Nome_da_variável = valor Os nomes de variáveis devem começar com um caracter alfa e podem conter caracteres alfa- numéricos ou sublinhado. Não restrição quanto ao número de caracteres que o nome da variável possa conter. Duas variáveis importantes são a PATH e TERM, a primeira armazena em quais diretórios o shell deve procurar por um comando ou arquivo. A Segunda armazena qual o tipo de terminal que o usuário esta usando. Processo de Login Quando você senta para trabalhar, você vê o prompt do login: na tela. Curso Básico de Unix 29 Quando você digita o seu nome de usuário, o sistema lê seu nome e solicita uma senha. Depois de digitar a senha, o sistema checa o seu nome de usuário e a senha no arquivo de senhas do sistema (*/etc/passwd), Se o nome do usuário e a senha informados forem válidos, o sistema colocará você no seu diretório home e inicia o shell para você. Observamos isso acontecer cada vez que executamos login. Quando o shell é iniciado, ele lerá os comandos de um arquivo de comandos do sistema chamado / etc/profile . Sempre que alguém, se loga e inicia um shell, este arquivo será lido. Existe também um arquivo chamado .profile em seu diretório home. Depois que o /etc/profile for lido, o shell lê o seu próprio .profile. Esses dois programas em shell são usados para customizar um ambiente de usuário. O /etc /profile configura o ambiente básico usado por todo mundo no sistema e o .profile personaliza o ambiente para as suas necessidades específicas. Não Solicita o nome do usuário Executa o shell Solicita a senha do usuário Executa o /etc/profile Login válido? Executa o .profile no diretório home Sim Coloca o usuário no diretório home Apresenta o prompt da console Fig. 8 Curso Básico de Unix 30 7 – Redirecionamento de Entrada e Saída O shell proporciona um outro recurso que é a capacidade de redirecionar a entrada e a saída de um comando. A maior parte dos comandos envia a saída deles para seu terminal; os exemplos incluem date, banner, ls, who, etc. Outros comandos obtém entrada a partir de seu teclado; os exemplos incluem mail, write, cat. No sistema Unix, tudo é um arquivo, incluindo seu terminal e teclado. Redirecionamento de saída permite que você envie a saída de um comando para algum arquivo que não o seu terminal. De maneira semelhante, redirecionamento de entrada permite que você obtenha a entrada para um comando a partir de algum arquivo que não seja o teclado. stdin O arquivo stdin é o arquivo a partir do qual o shell lê a sua entrada. O arquivo stdin é geralmente chamado de entrada padrão . Esse arquivo é aberto com o descritor de arquivo 0 da linguagem C, e está geralmente ligado a seu teclado. Portanto, quando o shel precisa de uma entrada, este deve ser digitada através do teclado. stdout O arquivo stdout é o arquivo para o qual seu shel grava sua saída normal. O arquivo stdout é geralmente chamado de saída padrão. Esse arquivo é aberto com o descritor 1 da linguagem C, e está normalmente ligado a seu terminal. Portanto, quando o shell produz saída, ela é mostrada em sua tela. stderr O arquivo stderr é o arquivo no qual o shell grava suas mensagens de erro. O arquivo stderr é geralmente chamado de saída padrão de erro. Esse Curso Básico de Unix 31 arquivo é aberto com o descritor 2 da linguagem C. Como o arquivo stdout, o arquivo stderr esta geralmente ligado ao monitor de seu terminal. O arquivo stderr pode ser redirecionado independentemente do arquivo stdout. Redirecionamento de Entrada - < Qualquer comando que leia sua entrada a partir de stdin pode Ter essa entrada redirecionada para vir de outro arquivo. Exemplo: $ cat < arquivo Redirecionamento de Saída - > e > > > >> Criar/sobregravar Criar/Acrescentar Qualquer comando que produz saída para stdout pode ter sua saída redirecionada para outro arquivo. Exemplo: $ date > date.out $ ls >> ls.out Redirecionamento de Erro - 2> e 2> > 2> 2>> Criar/sobregravar Criar/Acrescentar Qualquer comando que produz saída para stderr pode ter sua saída redirecionada para outro arquivo. Exemplo: $ cp 2> cp.log $ lcp 2>> cp.log Curso Básico de Unix 32 8 – Filtros Alguns comandos aceitam entrada a partir da entrada padrão e geram saída para a saída padrão. Esses comandos são conhecidos como filtros. Os filtros nunca modificam o conteúdo do arquivo que está sendo processado. Os resultados filtrados são geralmente transmitidos para o terminal. Comandos do Usuário grep Pesquisa por padrões. Sintaxe: grep [- cinv] [- e] padrão [arquivo] grep [- cinv] –f arquivo_de_padrões [arquivo] Parâmetros: - c Apenas uma contagem de linhas correspondentes é impressa -i Informa ao grep que ignore o padrão se as letras são maiúsculas ou minúsculas. -n Coloca número de linha para cada linha exibida. -v Exibe as linhas que não contêm o padrão -e Permite a especificação de mais de um padrão -f Indica um arquivo de padrões sort Ordena linhas de um arquivo. Sintaxe: sort [- ndutX] [- k Registro] [arquivo] Parâmetros: none lexicográfica (ASCII) Curso Básico de Unix 33 -d -n -u dicionário(desconsidera todos os caracteres que não são letras, números ou brancos numérica única (oculta todas as linhas duplicadas) wc Conta linhas, palavras e caracteres em um arquivo. Sintaxe: wc [- lwc] [arquivo] Parâmetros: - l -w -c Mostra o número de linhas Mostra o número de palavras Mostra o número de caracteres. 9 – Pipes Os pipelines permitem a transferência do resultado de um comando diretamente como entrada de outro comando. Não é necessário a criação de um arquivo intermediário, portanto não será necessária a sua eliminação quando o processamento terminar. O símbolo | (pipe) é utilizado para efetuar a ligação de dois comandos. A saída padrão do comando à esquerda do símbolo | será utilizada como entrada padrão para o comando à direita. Requisitos para comandos em cada posição na pipeline: • • • Exemplo: Qualquer comando à esquerda de um símbolo | deve produzir uma saída para a saída padrão. Qualquer comando |à direita de um símbolo | deve ler uma entrada da entrada padrão. Qualquer comando entre dois símbolos | deve aceitar entrada e saída padrão. Curso Básico de Unix 34 $ ps –ef | grep root $ cat arquivo | short | more 10 – Jobs Uma atividade muito comum no Unix é a inicialização, monitoração e finalização de processos. Á cada processo iniciado no sistema é assinalado um número único de identificação, conhecido como process id (PID) . Comandos de Usuário nohup Faz com que um comando continue sua execução mesmo que o usuário que o iniciou saia do sistema. Sintaxe: nohup <comando> <argumentos> nice Executa um processo numa prioridade mais baixa. Sendo ela entre 1 e 19 Sintaxe nice [- N] comando kill Envia um sinal a um processo especificado. Sintaxe: kill [- s nome_sinal] PID [PID...] Parâmetros: HUP 1 Sinal de desligar INT 2 Interrupção QUIT 3 Abandono ABRT 6 Sinal de processo abortado KILL 9 Matar ALRM 14 Alarme do relógio TERM 15 Sinal de terminação por software por comando kill Curso Básico de Unix 35 crontab Instala, lista ou remove arquivo crontab de usuário. Sintaxe: crontab [arquivo] Crontab [- l | - r | - e] Parâmetros: - l -r -e Mostra o arquivo crontab atual dop usuário remove o arquivo crontab atual do usuário Edita o arquivo crontab atual do usuário