You are on page 1of 136

1

Conceitos básicos do sistema operacional IBM-AIX

2
Conceitos básicos do sistema operacional IBM-AIX

Sistema operacional AIX - Conceitos Básicos


Módulo 1 - Introdução ao sistema Unix ___________________________________________ 7
Sistema Operacional _______________________________________________________________ 7
História do Sistema Operacional Unix_________________________________________________ 7
Recursos do Unix __________________________________________________________________ 9
O sistema operacional _____________________________________________________________________ 9
O ambiente operacional____________________________________________________________________ 9
Ferramentas e aplicativos ________________________________________________________________ 9
O shell ______________________________________________________________________________ 10
- Bourne shell (/usr/bin/sh ou /usr/oldbin/sh): _____________________________________ 10
- C shell (/usr/bin/csh):____________________________________________________________ 10
- Korn shell (/usr/bin/ksh): _________________________________________________________ 10
- POSIX shell (/usr/bin/posix/sh): __________________________________________________ 10
- Korn Shell 1993 (/usr/bin/ksh93): __________________________________________________ 10
Outros recursos de Unix __________________________________________________________________ 11
Sistema hierárquico de arquivos __________________________________________________________ 11
Multitarefa___________________________________________________________________________ 11
Multiusuário _________________________________________________________________________ 11
Módulo 2 - Login e execução de comandos _______________________________________ 12
Sessão de terminal ________________________________________________________________ 12
Login e Logout ___________________________________________________________________ 12
Interpretação de comandos pelo shell ________________________________________________ 14
Formato da linha de comando ______________________________________________________ 14
O prompt secundário______________________________________________________________ 15
O manual de referência on-line _____________________________________________________ 17
Alguns comandos iniciais __________________________________________________________ 19
Comando id ___________________________________________________________________________ 20
Comando who__________________________________________________________________________ 21
Comando date ________________________________________________________________________ 22
Comando passwd ______________________________________________________________________ 23
Comando echo ________________________________________________________________________ 24
Comando banner ______________________________________________________________________ 25
Comando write _______________________________________________________________________ 26
Comando mesg ________________________________________________________________________ 28
Módulo 2 - Exercícios de fixação ____________________________________________________ 29
Módulo 3 - Navegando pelo sistema de arquivos ___________________________________ 30
A hierarquia do sistema de arquivos _________________________________________________ 30
Percursos relativos e absolutos _____________________________________________________________ 31
Percurso absoluto _____________________________________________________________________ 32
Percurso relativo ______________________________________________________________________ 32
Exemplos de ponto (.) _________________________________________________________________ 33
Exemplos de ponto-ponto (..) ___________________________________________________________ 33
Principais diretórios do sistema de Arquivos __________________________________________ 33
Diretório / (root) _______________________________________________________________________ 33
Diretório /bin _________________________________________________________________________ 33
Diretório /lib _________________________________________________________________________ 34
Diretório /usr _________________________________________________________________________ 34
Diretório /usr/bin ____________________________________________________________________ 34
Diretório /usr/lib ____________________________________________________________________ 34

3
Conceitos básicos do sistema operacional IBM-AIX

Diretório /var/spool/mail ____________________________________________________________ 34


Diretório /usr/man e /usr/share/man ________________________________________________ 34
Diretório /usr/local/bin _____________________________________________________________ 34
Diretório /etc _________________________________________________________________________ 34
Diretório /home ________________________________________________________________________ 34
Diretório /dev _________________________________________________________________________ 34
Diretório /tmp e /var/tmp______________________________________________________________ 34
Comando pwd__________________________________________________________________________ 36
Comando ls ___________________________________________________________________________ 37
Comando cd ___________________________________________________________________________ 39
Comando find ________________________________________________________________________ 40
Comandos mkdir e rmdir_______________________________________________________________ 41
Módulo 3 - Exercícios de fixação ____________________________________________________ 42
Módulo 4 - Gerenciamento de Arquivos __________________________________________ 43
O que é um arquivo para o Unix ____________________________________________________ 43
Comandos usados no gerenciamento de arquivos_______________________________________ 44
Características de um arquivo ______________________________________________________ 45
Tipos de arquivo ________________________________________________________________________ 45
Comando cat__________________________________________________________________________ 46
Comando more ________________________________________________________________________ 47
Comandos tail, head e line ___________________________________________________________ 48
Comando cp ___________________________________________________________________________ 49
Comando mv ___________________________________________________________________________ 50
Comando rm ___________________________________________________________________________ 51
Comando ln ___________________________________________________________________________ 52
Módulo 4 - Exercícios de fixação ____________________________________________________ 53
Módulo 5 - Permissão e acesso aos arquivos ______________________________________ 54
Quem tem acesso a um arquivo _____________________________________________________ 55
Tipos de acesso ___________________________________________________________________ 56
Permissões ______________________________________________________________________ 57
Comando chmod _______________________________________________________________________ 58
Modo simbólico ______________________________________________________________________ 58
Modo numérico _______________________________________________________________________ 58
Comando umask _______________________________________________________________________ 60
Comando touch _______________________________________________________________________ 62
Comando chown _______________________________________________________________________ 63
Comando chgrp _______________________________________________________________________ 64
Comando su ___________________________________________________________________________ 65
Comando newgrp ______________________________________________________________________ 66
Módulo 5 - Exercícios de fixação ____________________________________________________ 67
Módulo 6 - O editor de textos vi ________________________________________________ 68
O que é o vi _____________________________________________________________________ 68
Os modos do vi __________________________________________________________________ 69
Descrevendo uma sessão vi ________________________________________________________ 70
Finalizando uma sessão vi _________________________________________________________ 71
Comandos usados para edição de texto no vi _________________________________________ 72
Comandos de controle do cursor____________________________________________________________ 72
Comandos em modo de entrada ____________________________________________________________ 74

4
Conceitos básicos do sistema operacional IBM-AIX

Deletando texto _________________________________________________________________________ 75


Copiando e movendo texto ________________________________________________________________ 76
Alterando o texto________________________________________________________________________ 77
Pesquisando no texto_____________________________________________________________________ 78
Pesquisando modelos de texto _____________________________________________________________ 79
Pesquisa e substituição de texto ____________________________________________________________ 80
Alguns comandos ex úteis e outras opções do vi ______________________________________________ 81
Módulo 7 - Introdução ao Korn Shell ____________________________________________ 82
O uso de alias ____________________________________________________________________ 83
Histórico de comandos - exibindo e reentrando comandos _______________________________ 84
Chamando e editando comandos ____________________________________________________ 85
Ambiente do usuário ______________________________________________________________ 86
Configurando as variáveis do shell___________________________________________________ 87
A variável PATH ________________________________________________________________________ 87
A variável TERM ________________________________________________________________________ 87
O que acontece durante o login _____________________________________________________ 88
Arquivos de inicialização do shell____________________________________________________ 89
Comandos internos do shell e comandos Unix _________________________________________ 90
Módulo 7 - Exercícios de fixação ____________________________________________________ 91
Módulo 8 - O shell e suas características avançadas ________________________________ 92
Capacidades de substituição do shell _________________________________________________ 93
Armazenamento de variáveis ______________________________________________________________ 94
Inicialização e remoção de variáveis_________________________________________________________ 95
Substituição de variáveis e exibição de seu conteúdo ____________________________________________ 96
Substituição de comandos _________________________________________________________________ 97
Substituição do til (~) ____________________________________________________________________ 98
Passando variáveis para uma aplicação_______________________________________________ 99
Monitorando e gerenciando processos_______________________________________________ 100
Os processos filhos e o ambiente do shell____________________________________________________ 101
Módulo 8 - Exercícios de fixação ___________________________________________________ 102
Módulo 9 - Geração de nomes de arquivos _______________________________________ 103
Caracteres geradores de nome de arquivos___________________________________________ 104
Os arquivo iniciados por ponto (.) _________________________________________________________ 104
Gerando nomes de arquivos com o caractere interrogação - ? ____________________________________ 105
Gerando nomes de arquivo com os caracteres colchetes - [ ] ___________________________________ 106
Gerando nomes de arquivos com o caractere asterisco - * _______________________________________ 107
Módulo 9 - Exercícios de fixação ___________________________________________________ 108
Módulo 10 - Uso do quoting___________________________________________________ 109
Caracteres usados no mecanismo de quoting _________________________________________ 109
O quoting barra invertida - \______________________________________________________________ 110
O quoting aspas duplas - " "____________________________________________________________ 111
O quoting aspas simples - ' '___________________________________________________________ 112
Módulo 10 - Exercícios de fixação __________________________________________________ 113
Módulo 11 - Introdução ao redirecionamento de entrada e saída _____________________ 114
Entrada padrão, saída padrão e saída de erro padrão__________________________________ 115
Redirecionamento da entrada padrão - < ____________________________________________________ 116

5
Conceitos básicos do sistema operacional IBM-AIX

Redirecionamento da saída padrão - > e >> __________________________________________________ 117


Redirecionamento da saída de erro padrão - 2> e 2>>__________________________________________ 118
Filtros e pipelines ________________________________________________________________ 119
O comando more ______________________________________________________________________ 119
O comando sort ______________________________________________________________________ 121
O comando grep ______________________________________________________________________ 122
O comando cut _______________________________________________________________________ 123
O comando tr ________________________________________________________________________ 124
O comando tee _______________________________________________________________________ 125
Módulo 11 - Exercícios de fixação __________________________________________________ 126
Módulo 12 – Efetuando backup de arquivos______________________________________ 127
O comando tar _________________________________________________________________ 128
O comando cpio ________________________________________________________________ 129
O comando mt __________________________________________________________________ 131
Exemplos de uso do comando mt para efetuar backup e restore de arquivos: ________________________ 131
Apêndice A - Referência rápida de comandos do Unix _____________________________ 133
Apêndice B - Endereços da Internet referentes a Unix _____________________________ 136
Manual do IBM-AIX 5.3_________________________________________________________________ 136
Manual da linguagem AWK ______________________________________________________________ 136
Unix - Perguntas e respostas sobre programação shell-Script_____________________________________ 136
Unix - Perguntas e respostas sobre análise de performance ______________________________________ 136
Unix - Perguntas e respostas sobre comunicação ______________________________________________ 136
Dicas diversas sobre Unix________________________________________________________________ 136

6
Conceitos básicos do sistema operacional IBM-AIX

Módulo 1 - Introdução ao sistema Unix

Sistema Operacional

Sistema Operacional é um programa especial (software) que controla o computador.


Ele faz a ligação entre os consumidores (programas, usuários) e os recursos (discos, CPU,
memória, rede, impressoras, etc.). Controla como e quando um programa terá sua vez na CPU.
Em um sistema time-sharing, há geralmente vários programas tentando acesso à CPU ao mesmo
tempo.

História do Sistema Operacional Unix


O sistema operacional Unix nasceu nos laboratórios Bell em 1969, tendo como seus criadores
Ken Thompson, Rudd Canaday, Doug McIlroy, Joe Ossana e Dennis Ritchie.
Nos meados dos anos 70, foi licenciado para universidades e ganhou imensa popularidade na
comunidade acadêmica porque:
- Era pequeno:
Os sistemas usavam discos de 512 KB: 16 KB para o sistema operacional, 8 KB para os
programas de usuário e 64 KB por arquivos.
- Era flexível:
Como o fonte fora desenvolvido em linguagem de alto nível, isto proporcionava a
portabilidade do sistema operacional.

7
Conceitos básicos do sistema operacional IBM-AIX

- Era barato:
As universidades conseguiam obter uma licença basicamente pelo preço de uma fita
cassete, sem contar que os primeiros sistemas Unix proporcionavam recursos poderosos
disponíveis somente em sistemas operacionais que rodavam em computadores mais
caros.

Essas vantagens superavam as desvantagens que o sistema possuía na época, que eram:
- Não tinha suporte:
A AT&T já tinha investido muito no sistema MULTICS e não estava interessada em
explorar o sistema operacional Unix.
- Ele tinha bugs:
Como não tinha suporte, não havia a garantia de que os bugs seriam identificados e
consertados.
- Não tinha quase nenhuma documentação:
Porém era possível usar o código fonte para se basear.

8
Conceitos básicos do sistema operacional IBM-AIX

Recursos do Unix
O sistema Unix proporciona um sistema operacional time-sharing, sendo projetado para
administrar múltiplos processos ao mesmo tempo e suportar múltiplos usuários com a finalidade
de facilitar o compartilhamento de dados entre os membros de uma equipe de projeto.

Os comandos, que nada sabem um do outro, podem ser combinados através de pipelines para
desempenhar manipulações mais complexas.

O sistema operacional
O kernel é o sistema operacional, responsável pelo gerenciamento dos recursos disponíveis e
pelo acesso ao hardware. O kernel contém módulos para cada componente do hardware com o
qual ele faz a interface. São esses módulos que proporcionam a funcionalidade do acesso do
programa á CPU, memória, discos, rede, etc. À medida que novos dispositivos de hardware são
instalados no sistema, novos módulos podem ser incorporados ao kernel.
A maior parte do kernel é programada em linguagem C, sendo que a parte dependente de
hardware é desenvolvida em Assembler.

O ambiente operacional
Ferramentas e aplicativos
A filosofia de comandos do Unix espera que cada um dos comandos faça uma coisa bem, e o
conjunto de comandos forme uma caixa de ferramentas. Quando você tem uma tarefa a executar,
você puxa a(s) ferramenta(s) adequada(s). Tarefas complexas podem ser executadas
combinando-se adequadamente as ferramentas.
Além de comandos básicos necessários para interagir com o sistema, o Unix fornece utilitários
para:

9
Conceitos básicos do sistema operacional IBM-AIX

- correio eletrônico (mail, mailx);


- edição de arquivos (ed, ex, vi);
- processamento de textos (sort, sed, wc, awk, grep);
- formatação de textos (nroff, troff);
- desenvolvimento de programas (cc, make, lint, lex);
- comunicação intersistemas (uucp);
- contabilidade de processos e de usuários (ps, du, acctcom).

O shell
O shell é um interpretador interativo de comandos. Isto significa que os comandos são digitados
no prompt de comandos do shell e trabalhados à medida que são emitidos.
Observe que o shell é separado do kernel. Se você não gostar de interface provida pelo shell
fornecido, pode ser substituída por uma que mais lhe agrade.
Os shells mais comuns que acompanham o ambiente Unix são:

- Bourne shell (/usr/bin/sh ou /usr/oldbin/sh):


Provê um interpretador de comandos do sistema Unix e suporte a uma interface
programável para o desenvolvimento de programas (Shell-Scripts).

- C shell (/usr/bin/csh):
É considerado um aperfeiçoamento do Bourne shell porque oferece recursos interativos
como histórico de comandos (os comandos entrados anteriormente podem ser
recuperados, editados e re-executados) e o uso de alias, o que permite o uso de nomes
alternativos para os comandos existentes.

- Korn shell (/usr/bin/ksh):


Pode ser considerado um Bourne shell aperfeiçoado, pois suporta a interface simples
programável do Bourne shell, além dos recursos interativos do C shell. O código foi
otimizado para oferecer um shell mais rápido e eficiente. Atualmente, é o shell mais
comumente usado nos ambientes Unix. No AIX, é o shell padrão.

- POSIX shell (/usr/bin/posix/sh):


Possui as mesmas características do Korn shell, porém obedece as normas do POSIX na
interface de programação. É semelhante ao Korn shell em muitos aspectos(histórico de
comandos, uso de alias e controle de tarefas). Nem todas as implementações Unix o
possuem.

- Korn Shell 1993 (/usr/bin/ksh93):


O sistema operacional AIX fornece uma versão avançada do Korn shell, o KSH-93. Ela é,
na maioria de suas funcionalidades, compatível com a versão atual do KSH-1988. Inclui
algumas características adicionais que não estão disponíveis no Korn shell padrão.
Alguns scripts se comportarão de modo diferente sob ksh93, pois sob ele a manipulação
variáveis é um pouco diferente do Korn shell padrão.

10
Conceitos básicos do sistema operacional IBM-AIX

Outros recursos de Unix


Sistema hierárquico de arquivos
A informação é armazenada em disco através de arquivos. Para o Unix tudo é um arquivo
(dados, textos, dispositivos, periféricos).
Para que os arquivos sejam organizados de maneira lógica, tanto em nível de sistema operacional
quando em nível de usuário, existem os diretórios, que são as pastas onde os arquivos ficam
depositados. Em um sistema Unix os diretórios podem ser usados tanto para o armazenamento de
arquivos quanto para o armazenamento de outros diretórios, que poderão ter arquivos e/ou
diretórios, e assim por diante.

Multitarefa
Em um sistema Unix, várias tarefas podem ser executadas ao mesmo tempo, dando a impressão
que de um único terminal os programas estão sendo executados simultaneamente. Isso significa
que um usuário pode editar um texto, enquanto um processo que trata arquivo de dados pode ser
executado, como também pode-se executar um comando para localizar um determinado arquivo
em qualquer lugar do disco, tudo isso dando a impressão ao usuário que os processos estão sendo
executados ao mesmo tempo.

Multiusuário
Permite que mais de um usuário tenha acesso ao mesmo sistema. Vários terminais e teclados
podem ser conectados ao mesmo computador. Esta á a extensão natural da capacidade de
multitarefa.
Assim, um programa pode ser executado por mais de um usuário, incluindo o mesmo usuário,
que poderá ter mais de uma sessão de terminal no mesmo sistema.

11
Conceitos básicos do sistema operacional IBM-AIX

Módulo 2 - Login e execução de comandos

Sessão de terminal
Uma sessão de terminal começa com login através de um terminal reconhecido pelo sistema e
terminal com logout. O computador executará a tarefa ordenada por você em resposta aos
comandos que serão dados no prompt de comandos do sistema operacional, prompt este que
variará de acordo com o tipo de shell ou da maneira como foi configurado pelo administrador do
sistema ou por você mesmo, de acordo com suas preferências pessoais.

Login e Logout

Para efetuar o login e iniciar sua sessão de terminal, os seguintes passos são necessários:

- Digitar sua identificação de usuário no prompt login: do terminal;


- Digitar sua senha de acesso no prompt password;
- Assim que aparecer o prompt do shell, execute os comandos ou tarefas desejadas;
- Para encerrar sua sessão de terminal, execute o comando exit (logout também á válido em
algumas implementações Unix) ou tecle bD. Isso fará o terminal retornar ao prompt
login:. No caso de se usar um emulador de terminal, e dependendo do emulador, a saída da
sessão causará o fechamento do emulador.

O símbolo que representa o prompt de comando varia de acordo com o shell do usuário, que
podem ser:

$ para Bourne shell, Korn Shell ou POSIX Shell;


% para C Shell;

12
Conceitos básicos do sistema operacional IBM-AIX

# para quando se estiver logado como superusuário (root). É um lembrete muito útil, pois
o administrador do sistema (usuário root) pode modificar (ou remover) qualquer coisa
no sistema.

Estaremos usando o Korn shell, por isso o prompt será um $. Mais tarde veremos como
personalizá-lo.
Nos sistemas AIX, no primeiro login o usuário é solicitado para que a senha seja alterada por
razões de segurança.

13
Conceitos básicos do sistema operacional IBM-AIX

Interpretação de comandos pelo shell


O shell é responsável pelo emissão do prompt e interpretação dos comandos que você entra.
Estaremos vendo neste módulo os vários comandos que permitem acessar o manual de referência
on-line, descobrir os usuários que estão logados no sistema e comunicar-se com outros usuários.

Como pode ser visto na figura acima, o shell possui muitas outras funções que complementam a
interpretação de comandos.

Formato da linha de comando

Uma linha de comando no Unix segue basicamente a seguinte sintaxe:

$ comando [-opções] [argumentos]

O comandos podem ou não ter opções de modificação. Estas opções são precedidas pelo sinal de
menos, ou hífen (-). Os argumentos geralmente referem-se a nomes de arquivos, diretórios,
dispositivos, cadeias de caracteres, etc.
O espaço em branco é usado para delimitar (separar) comandos, opções e argumentos, caso
contrário você pode receber do sistema uma mensagem de erro indicando que foi digitado um
comando inválido.
A entrada/saída do terminal suporte digitação contínua. Isso permite que você entre com um
comando e, em seguida, com os outros comandos antes mesmo que o prompt de comandos

14
Conceitos básicos do sistema operacional IBM-AIX

retorne. O comando será mantido em um buffer e será executado logo após o comando corrente
ser concluído.
Comandos múltiplos podem ser introduzidos em uma linha de comando separando-os por ponto-
e-vírgula (;). Por exemplo:

$ ls -l ; pwd ; date

A entrada de comandos no sistema Unix é sensível a maiúsculas e minúsculas. A maior parte dos
comandos e opções são definidos em letras minúsculas.
Caso a linha possa se estendera após o limite visível da tela, pode-se acrescentar o caracter \,
precedido de um espaço, e continuar a digitação da linha de comando na linha seguinte. Após o
pressionamento da tecla f o comando será executado.

O prompt secundário
Os shells Born, Korn e POSIX suportam comandos multilinha interativos. Se o shell requisitar
mais entradas para completar o comando, o prompt secundário (>) será emitido após o
pressionamento da tecla f .
Alguns comandos exigem comandos de fechamento e alguns caracteres exigem um caractere de
fechamento. Por exemplo, um if aberto exige um fi para fechar; parênteses de abertura
exigem parênteses de fechamento e, finalmente, um apóstrofo ou uma aspa-dupla de abertura
exigem respectivamente o mesmo caractere para o fechamento.
Se você digitar um comando incorretamente, o shell emitirá um prompt secundário para você.
Para interromper e cancelar o prompt secundário basta pressionar bC, encerrando a
execução do comando e retornando ao prompt padrão do shell. Veja os exemplos na figura
abaixo (não se preocupe com os comandos apresentados, pois serão estudados mais tarde):

15
Conceitos básicos do sistema operacional IBM-AIX

16
Conceitos básicos do sistema operacional IBM-AIX

O manual de referência on-line


O manual é muito útil para consultar a sintaxe dos comandos, nas não foi desenvolvido como um
tutorial e, por isso, não serve muito para se aprender com usar o sistema operacional Unix. É
acessado através do comando man.
Usuários experientes consultam o manual para saber detalhes sobre comandos e como usá-los. O
manual está dividido em várias seções conforme uma breve descrição mostrada abaixo:

- Seção 1: comandos de usuário


Descreve os programas destinados a usuários ou oriundos de programas shell. São os
comandos que geralmente podem ser executados por qualquer usuário do sistema.

- Seção 1m: Manutenção do sistema


Descreve os comandos usados pelo administrador do sistema para sua manutenção. São
executáveis que podem ser utilizados somente pelo superusuário (root), que é o login
associado ao administrador do sistema.

- Seção 2: Chamadas do sistema


Descrevem funções que fazem interface com o kernel do sistema Unix, incluindo a
interface da linguagem C.

- Seção 3: Funções e bibliotecas de funções


Ilustra as funções que acompanham o sistema em formato binário, diferentes das
chamadas diretas do sistema. São geralmente acessadas através de programas C. Os
exemplos incluem manipulação de entrada e saída e funções matemáticas.

- Seção 4: Formatos de arquivos


Define os campos dos arquivos de configuração do sistema (tais como /etc/passwd) e
documenta a estrutura de vários tipos de arquivos (tais como o a.out).

- Seção 5: Tópicos diversos


Inclui informações variadas, tais como as descrições de arquivos de cabeçalho, conjuntos
de caracteres, pacotes de macros e outros tópicos.

- Seção 7: Arquivos especiais


Discute as características dos arquivos especiais que fazem a ligação entre o sistema Unix
e os periféricos de E/S do sistema (discos, fitas e impressoras).

- Seção 9: Glossário
Define os termos selecionados usados em todo o manual de referência.

Quando a primeira página do manual on-line aparece, as seguintes teclas podem ser usadas no
prompt standard output:

f exibe a linha seguinte


k exibe a página seguinte
H ajuda on-line para navegação

17
Conceitos básicos do sistema operacional IBM-AIX

Q retorna para o prompt do shell


bB retorna uma página
jG vai para o final do manual
1jG vai para o início do manual
/ busca uma string específica. Sensível ao contexto

18
Conceitos básicos do sistema operacional IBM-AIX

Alguns comandos iniciais


id - Exibe a identificação de usuário e grupo
who - Lista os usuários logados no sistema
date - Exibe a hora e a data do sistema
passwd - Atribui uma senha à conta do usuário
echo - Exibe mensagens simples na tela
banner - Exibe argumentos em letras grandes
write - Envia mensagens para o terminal de outro usuário
mesg - Permite ou nega o recebimento de mensagens pelo terminal

19
Conceitos básicos do sistema operacional IBM-AIX

Comando id

O comando id exibe a identificação de usuário e grupo para a sessão de terminal.


Para acessar arquivos e executar programas você precisa saber sua identificação de usuário e
grupo. O sistema mantém identificadores numéricos. Os nomes alfanuméricos são somente para
a conveniência do usuário.
Todas as identificações de usuário reconhecidas são armazenadas no arquivo /etc/passwd.
As identificações de grupo são armazenadas no arquivo /etc/group.
Veja abaixo o exemplo de execução e saída do comando id:

20
Conceitos básicos do sistema operacional IBM-AIX

Comando who

O comando who lista quais são os usuários que estão logados no sistema, em que porta de
terminal está conectado, hora de início da sessão, número de processo (opção -u) e a origem da
conexão (opção -u).
Existe a variante who am i que lista somente informações referente ao usuário da sessão atual.
A variante whoami lista somente a identificação do usuário logado. Veja os exemplos da saída
do comando na figura a seguir:

21
Conceitos básicos do sistema operacional IBM-AIX

Comando date

O comando date mostra a data e hora do sistema. É possível usar argumentos que modificam o
formato de saída do comando.
Geralmente este comando é usado sem opções ou argumentos. Veja na pagina do manual on-line
(através do comando man date) para mais detalhes das opções e argumentos utilizados pelo
comando. Os exemplos abaixo ilustram algumas saídas do comando date:

22
Conceitos básicos do sistema operacional IBM-AIX

Comando passwd

O comando passwd pode ser usado para alterar a sua senha. Sua sintaxe é:

$ passwd

Sua senha atual (senha antiga) é solicitada. Isso é para evitar que alguém mude sua senha se você
deixar o terminal sozinho enquanto está logado. Depois é solicitada a nova senha, é solicitado
que você digite novamente a nova senha para confirmação, evitando que você troque sua senha
por outra que contenha erros de digitação. É recomendado que as senhas antigas e novas sejam
diferentes em, pelo menos, três caracteres.
A senha não será exibida na tela enquanto digitada.
O administrador do sistema (root) não é submetido a essas condições, podendo atribuir uma
senha qualquer para uma conta, não sendo obrigado a seguir essas regras..

23
Conceitos básicos do sistema operacional IBM-AIX

Comando echo

O comando echo serve para exibir argumentos de linha de comando, isto é, para imprimir
mensagens na tela, como ilustrado abaixo:

Embora pareça um tanto inútil, o uso de echo no prompt do shell, este comando será mais
utilizado em programação Script-Shell, onde será usado para a exibição de mensagens ou para a
exibição dos valores de variáveis.

24
Conceitos básicos do sistema operacional IBM-AIX

Comando banner
Este comando foi criado, e ainda é usado, para rotular a saída de listagens impressas. O comando
banner exibe os argumentos passados em letras maiúsculas expandidas, um argumento por
linha.
Caso deseje exibir mais de um argumento na mesma linha, coloque-os entre aspas. Veja a
ilustração abaixo:

25
Conceitos básicos do sistema operacional IBM-AIX

Comando write
Este comando é usado para envio de mensagens para o terminal de um outro usuário que está
logado no mesmo sistema Unix. Quando executado, o comando write dá a você a
oportunidade de digitar sua mensagem. Toda vez que a tecla f for pressionada, a mensagem é
transmitida para o terminal do usuário de destino. O terminal receptor pode fazer a mesmo coisa
e pode-se ter uma conversa interativa entre os dois terminais.
Ao término do envio de mensagens, pressione bD para sair do comando write. Veja o
exemplo na ilustração abaixo:

A não ser que a capacidade de recepção esteja desativada, mensagens podem ser enviadas ao seu
terminal em qualquer momento. Portanto, se você está em um utilitário como o man, mail ou

26
Conceitos básicos do sistema operacional IBM-AIX

um editor de textos como o vi e alguém enviar mensagens para você, ela será exibida em seu
terminal podendo causar confusão nos caracteres exibidos, o que pode tornar-se inconveniente.
Independe do usuário estar ou não com a capacidade de recebimento de mensagens ativada, o
superusuário pode enviar mensagens para o terminal de qualquer usuário logado.

27
Conceitos básicos do sistema operacional IBM-AIX

Comando mesg

Você pode usar o comando mesg para impedir a recepção de mensagens de outros usuários em
seu terminal. Se você enviar mensagens para uma pessoa que desabilitou a recepção de
mensagens, receberá a mensagem Permission denied.
Mesmo que a recepção de mensagens esteja desabilitada em seu terminal, o administrador do
sistema ainda poderá enviar mensagens para o seu terminal. A sintaxe do comando mesg é
simples:

$ mesg - mostra o estado atual da recepção de mensagens


$ mesg y - habilita a recepção de mensagens
$ mesg n - desabilita a recepção de mensagens

A ilustração abaixo explica o funcionamento do comando mesg:

28
Conceitos básicos do sistema operacional IBM-AIX

Módulo 2 - Exercícios de fixação


1 - Quais dos comandos estão sintaticamente corretos?
$ echo
$ eco Ola
$ echo IBM Brazil Site Hortolandia
$ banner
$ banner SO Unix Team
$ BANNER Curso de Unix

2 - Usando os comandos id, who e whoami, responda as questões seguintes:


- Quem está no sistema? ___________________________
- Em que terminal você está logado? ___________________________
- Quem o sistema pensa que você é? ___________________________

3 - Tente enviar mensagens para o terminal de algum colega e peça para ele enviar para você.
Use os comandos necessários para verificar se a capacidade de recepção está ou não ativada.

4 - Execute o comando date de modo a mostrar a data e a hora na seguinte configuração:


$ hoje é dd/mm/yy e são hh:mm:ss

5 - Finalize a sessão do seu terminal. Faça um login de volta, porém com a tecla @ ativada.
Caso seu terminal tenha ficado com a tela estranha, como este problema pode ser resolvido sem a
necessidade de um logout e outro login?

29
Conceitos básicos do sistema operacional IBM-AIX

Módulo 3 - Navegando pelo sistema de arquivos

A hierarquia do sistema de arquivos


O sistema operacional Unix oferece um sistema de arquivos para organizar e gerenciar seus
arquivos e diretórios.
A organização dos diretórios poderá ser representada graficamente utilizando uma estrutura em
árvore hierárquica. Na figura a seguir, os diretórios são representados por ícones em forma de
pastas e os arquivos por ícones em forma de documentos.

O topo da hierarquia é identificado como diretório raiz ou root, porque está no topo da árvore
invertida. É denotado com uma barra diagonal (/).
Dependendo da implementação do Unix, a estrutura de diretórios pode variar, assim como alguns
arquivos de configuração de sistema podem estar localizados em outros subdiretórios mas,
basicamente, seguem o padrão exibido na figura acima.
Diferente de algumas implementações Unix, o IBM-AIX gerencia seus sitemas de arquivos
através de LVM (Logical Volume Manager) usando o formato JFS (Journaled File System). Tal
implementação de sistema de arquivos permite recuperação automática em caso da queda do
servidor pela falta de energia ou desligamento acidental.
O sistema de arquivos JFS mantém um log de transações do que é gravado no filesystem para
uso em sua autorecuperação em caso de pane.
Na figura a seguir é mostrado o esquema de como é gerenciado pelo sistema operacional o
acesso a disco através do gerenciamento de volumes lógicos do AIX. rootvg é o nome dado ao
VG, particionado em LVs padrão, onde o AIX é instalado.

30
Conceitos básicos do sistema operacional IBM-AIX

Gerenciamento de Volumes Lógicos no IBM AIX – LVM (Logical Volume Manager)

Percursos relativos e absolutos


Muitos comandos do Unix operam em arquivos, diretórios ou nos dois.
Para informar a um comando sobre a localização de um arquivo ou diretório solicitado, você
fornece um percurso como argumento para o comando. O percurso representa o caminho
percorrido através da hierarquia para alcançar o arquivo ou diretório desejado, como nesse
exemplo genérico:
$ comando [opções] [percurso1 percurso2 ... percursoN]

Ao designar o percurso de um arquivo ou diretório, a barra diagonal (/) é utilizada para delimitar
os nomes do diretório e/ou arquivos. Exemplo:

diretório/diretório/diretório
diretório/arquivo

Sempre que se logar, você estará posicionado em algum diretório. Por exemplo, ao fazer login, o
diretório em que você estará posicionado será inicialmente o diretório $HOME. As localizações
de arquivos e/ou diretórios podem ser designados com um percurso absoluto ou relativo.

31
Conceitos básicos do sistema operacional IBM-AIX

Percurso absoluto
- Sempre se inicia no topo da hierarquia (diretório raiz);
- Sempre se inicia com uma barra diagonal (/);
- Não é dependente da 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.
Exemplos de percursos absolutos:
/tmp/arq001
/home/user1/arq001
/home/user3/arq001
/home/user3/memo/memo001.txt

Percurso relativo
- Sempre começa na 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.

Exemplos de percursos relativos:


Os exemplos a seguir fazem referência aos arquivos denominados arq001.txt, mas sua
designação de caminho relativo depende da posição corrente do usuário dentro da hierarquia.
Assumindo sua posição corrente sendo /home:
user1/arq001.txt
user3/arq001.txt
user3/memo/arq001.txt

Assumindo sua posição corrente sendo /home/user3:


arq001.txt
memo/arq001.txt

Assumindo que sua posição corrente seja /home/user3/memo:


arq001.txt

Note que o percurso relativo poderá ser muito mais curto do que o absoluto. Por exemplo, se
você estiver no diretório /home/user3/memo, poderá imprimir arq001.txt com qualquer
um dos seguintes comandos:

32
Conceitos básicos do sistema operacional IBM-AIX

lp /home/user3/memo/arq001.txt
lp arq001.txt

Internamente o sistema Unix encontra todos os arquivos ou diretórios através de percursos


absolutos. O Unix permite o uso de percursos relativos somente para a conveniência de digitação
do usuário.
Quando qualquer diretório é criado, duas entradas, denominadas ponto (.) e ponto-ponto (..),
são criadas automaticamente. São comumente usadas para referirem-se a percursos relativos:
. - faz referência ao diretório corrente
.. - faz referência ao diretório de nível imediatamente superior

Exemplos de ponto (.)


Se você está correntemente no diretório /home/user3:
. representa /home/user3
./docs representa /home/user3/docs
./memo/jan2000 representa /home/user3/memo/jan2000

Exemplos de ponto-ponto (..)


Se você está correntemente no diretório /home:
.. representa /
../.. também representa /
../tmp representa /tmp
../tmp/work representa /tmp/work

Se você está correntemente no diretório /home/user3:


.. representa /home
../.. representa /
../user2 representa /home/user2
../user1/docs representa /home/user1/docs
../../tmp/work representa /tmp/work

Principais diretórios do sistema de Arquivos


Diretório / (root)
O topo da árvore. Contém os arquivos de configuração do super usuário.

Diretório /bin
Normalmente é um link simbólico para /usr/bin. Contém a maioria dos comandos do UNIX.

33
Conceitos básicos do sistema operacional IBM-AIX

Diretório /lib
Geralmente é um link simbólico para /usr/lib. Contém as bibliotecas do sistema.

Diretório /usr
Contém a maioria dos arquivos e diretórios de trabalho do UNIX e outros comandos.
Alguns subdiretórios importantes abaixo de /usr são:
/usr/bin
/usr/lib
/usr/mail
/usr/man
/usr/share/man
/usr/local/bin

Diretório /usr/bin
Contém a maioria dos comandos de seção 1 do UNIX, como por exemplo:
ls, cp, rm, mv, ln, date, mail

Diretório /usr/lib
Contém arquivos bibliotecas utilizados pelo UNIX para suportar linguagens e aplicações.

Diretório /var/spool/mail
A caixa postal do sistema. Contém um arquivo por usuário que possui correspondência.
Normalmente é um link simbólico de /usr/var/spool/mail ou /usr/spool/mail.

Diretório /usr/man e /usr/share/man


Contém as páginas do manual on-line.

Diretório /usr/local/bin
Comandos executáveis desenvolvidos no sistema local.
O diretório /usr/local/bin é normalmente criado pelo Administrador do Sistema para
acrescentar arquivos executáveis que não fazem parte do Sistema Operacional Unix padrão.

Diretório /etc
Contém a maioria dos arquivos e comandos de Administração relativos à máquina local.

Diretório /home
Normalmente contém todos os diretórios de login ao sistema, ou seja, os arquivos de todos os
usuários.

Diretório /dev
Contém os arquivos especiais (device files) para comunicação com periféricos como discos,
fitas, impressoras e terminais.

Diretório /tmp e /var/tmp


Normalmente utilizado pelo sistema e aplicações para criação de arquivos temporários.

34
Conceitos básicos do sistema operacional IBM-AIX

Comandos básicos usados no sistema de arquivos


pwd - Exibe o nome do diretório corrente
ls - Listagem de arquivos
cd - Troca de diretório
find - Procura de arquivos
mkdir - Criação de diretórios
rmdir - Remoção de diretórios

Os comandos acima permitirão que sejam efetuadas as seguintes tarefas:


- Exibir o nome do diretório e sua localização na árvore;
- Listar os arquivos que estão no diretório;
- Mudar de um diretório para outro;
- Localizar arquivos nos diretórios;
- Criar diretórios;
- Remover diretórios.

35
Conceitos básicos do sistema operacional IBM-AIX

Comando pwd

O comando pwd relata o percurso absoluto da localização do seu diretório corrente em um


sistema de arquivos. Supondo que você esteja no diretório /usr/local/bin, o seguinte
resultado será exibido:
$ pwd
/usr/local/bin

36
Conceitos básicos do sistema operacional IBM-AIX

Comando ls

O comando ls é usado para listar os nomes de arquivos de um diretório.


Sem qualquer argumento, o comando ls mostra os nomes dos arquivos e/ou diretórios existentes
no diretório corrente. A lista sempre será classificada em ordem alfabética obedecendo a
classificação ASCII.
Para saber quais as opções aceitas pelo comando ls, refira-se ao manual on-line para maiores
detalhes. Abaixo é detalhado as opções mais usadas:

-a Lista todos os arquivos do diretório, incluindo os escondidos. No Unix um arquivo é


considerado escondido quando seu nome começar com um ponto (.), como é o caso do
arquivo de configuração .profile que cada usuário possui no seu diretório $HOME,
além das entradas . (diretório corrente) e .. (diretório do nível anterior).
-A O mesmo que o anterior, exceto as entradas . e ..
-l Fornece uma listagem detalhada sobre os arquivos, mostrando tipo, permissões,
proprietário, grupo, tamanho, data e hora da criação.
-d Lista as características de um diretório ao invés de seu conteúdo. Utilizado com a opção
-l mostra o status do diretório especificado.
-F Acrescenta uma barra (/) ao final de cada arquivo listado que seja um diretório. Se o
arquivo for executável será colocado um asterisco(*) no final de seu nome.
-R Lista, recursivamente, todos os arquivos de um diretórios e os arquivos dos subdiretórios
nele existentes.
-o Semelhante à opção -l, porém não mostra a coluna em que está o nome do proprietário
do arquivo. Em algumas implementações Unix essa opção não surte efeito.
-g Semelhante à opção -l, porém não mostra a coluna em que está o grupo ao qual o
arquivo pertence.
-t Faz com que a lista de arquivos seja mostrada em ordem decrescente de criação, isto é, os
arquivos atualizados ou criados recentemente são listados primeiro, os mais antigos
depois.
-r Permite que a listagem de arquivos seja mostrada em ordem inversa. Muito útil quando
combinada com as opções -l e -t.

Nas figuras a seguir são mostrados alguns exemplos da saída do comando ls com algumas das
suas diferentes opções:

37
Conceitos básicos do sistema operacional IBM-AIX

38
Conceitos básicos do sistema operacional IBM-AIX

Comando cd

O comando cd permite que você se movimente na árvore de diretórios, podendo ser alterado o
diretório corrente. Sua sintaxe é:

$ cd [nome do diretório]

O argumento opcional nome do diretório é o diretório para onde se deseja posicionar.


Caso não seja especificado, o comando posicionará sua localização como sendo o diretório
$HOME.
O usar o comando cd para movimentar-se entre os diretórios, use o comando pwd para checar
qual o diretório corrente. Mais tarde será mostrado como personalizar o prompt do shell para
mostrar o diretório corrente, além de outras informações úteis.
No Korn Shell e no POSIX-Shell o comando cd possui o argumento hífen (-) que permite
mudar para o diretório anteriormente acessado. Isso é possível por causa de uma variável de
ambiente OLDPWD que sempre armazena o diretório acessado antes do último comando cd.
Abaixo é ilustrado as diversas maneiras de usar o comando cd:

39
Conceitos básicos do sistema operacional IBM-AIX

Comando find

O comando find é usado, basicamente, para localizar arquivos e/ou diretórios no sistema de
arquivos do Unix. Opcionalmente pode ser usado para executar algumas ações nos nomes de
arquivos encontrados. Sua sintaxe é:

$ find <caminho> [expressão]

caminho argumento obrigatório. É o diretório onde deverá ser iniciada a pesquisa pelo
comando find;
expressão palavras chaves e argumentos que possam especificar os critérios de pesquisa e
as tarefas a serem executadas ao encontrar uma correspondência. Todas as
palavras chave do comando find são precedidas por um hífen (-).

Abaixo são mostradas algumas maneiras mais comuns de uso do comando find e algumas de
suas palavras-chave:

40
Conceitos básicos do sistema operacional IBM-AIX

Comandos mkdir e rmdir

O comando mkdir é usado para a criação de diretórios. Sua sintaxe é:

$ mkdir [-p] <diretórios>

diretórios argumento obrigatório que especifica o nome dos diretórios a serem


criados. Esses nomes devem ser separados por espaços.
-p este parâmetro opcional faz com que, em caso de os diretórios e seus
subdiretórios serem especificados para a criação, e seus respectivos
diretórios pais ainda não existirem, estes também serão criados. Caso esta
opção não seja especificada neste caso, o comando retornará uma
mensagem de erro.

O comando rmdir é utilizado para a remoção de diretórios. Sua sintaxe é:

$ rmdir <diretórios>

O diretório será removido somente se estiver completamente vazio, isto é, não poderá haver
arquivos e/ou diretórios armazenados nele, caso contrário será emitida uma mensagem de erro. O
diretório corrente também não poderá ser removido, assim como o diretório /.
Veja a figura abaixo referente aos comandos mkdir e rmdir:

41
Conceitos básicos do sistema operacional IBM-AIX

Módulo 3 - Exercícios de fixação


1 - Qual é o seu diretório $HOME?

2 - Partindo do seu diretório $HOME, vá para o diretório /etc. Utilizando um percurso relativo,
vá para o diretório /home. Utilizando um percurso absoluto vá para diretório bin localizado
sob o diretório /usr. Em seguida retorne para o seu diretório $HOME.

3 - Crie, em seu diretório $HOME, o diretório workflow. Faça dele o seu diretório corrente.
Qual o caminho absoluto do diretório que você acabou de criar?

4 - A partir de seu diretório $HOME, crie os seguintes diretórios abaixo com apenas uma linha de
comando:

business/jan01
business/fev01
business/mar01
business/abr01

5 - A partir de seu diretório $HOME, remova todos os subdiretórios abaixo do diretório


business, utilizando uma única linha de comando.

42
Conceitos básicos do sistema operacional IBM-AIX

Módulo 4 - Gerenciamento de Arquivos

O que é um arquivo para o Unix


Tudo para o Unix é um arquivo, o que inclui:
- Arquivos comuns: texto, mensagens de correio eletrônico, dados, desenhos, código fonte de
programas;
- Programas: executáveis como ksh, who, date, man, ls e find;
- Diretórios: arquivos que contém o nome e o identificador do sistema de arquivos para
os diretórios e arquivos neles contidos;
- Periféricos: arquivos especiais que fornecem a interface para o hardware tais como
discos, terminais, impressoras e memória.
Arquivos são simplesmente nomes e os dados associados aos nomes, armazenados em um
periférico de armazenamento de massa, geralmente um disco. Para o sistema Unix, um arquivo
nada mais é do que uma seqüência de bytes de dados. Não existem registros pré-definidos,
campos, marcas de final de registro ou marcas de final de arquivo.
Arquivos comuns contém caracteres de texto ASCII, geralmente criados por um editor de textos
em uma sessão de terminal. Um exemplo de arquivo comum é o arquivo de usuários do sistema
Unix, /etc/passwd.
Arquivos de programas podem ser arquivos binários executáveis, como é o caso dos comandos
do sistema operacional (date, who, find, etc) ou podem ser arquivos textos executáveis,
chamados scripts, como os arquivos $HOME/.profile, /etc/profile ou algum programa
shell, onde são armazenados seqüências de comandos em um arquivo texto criado através de um
editor.
Um diretório é um arquivo com os nomes de arquivos e diretórios contidos neles. Ele também
armazena um número conhecido como i-node para cada entrada. Um diretório não é um arquivo
comum.
Um arquivo especial (device file) fornece a interface entre o kernel e o hardware. Como eles
servem somente para fazer a interface, eles nunca terão quaisquer dados reais. Estão comumente
armazenados sob o diretório /dev e haverá um arquivo para cada dispositivo de hardware com o
qual o seu computador precisa de comunicar.

43
Conceitos básicos do sistema operacional IBM-AIX

Comandos usados no gerenciamento de arquivos


ls - ver as características de um arquivo
cat - ver o conteúdo de um arquivo
more - ver o conteúdo de um arquivo uma tela por vez
cp - copiar arquivos
mv - mover arquivos ou renomeá-los
ln - criar um outro nome para o mesmo arquivo
rm - remover arquivos

Você conhece alguns comandos para a manipulação de diretórios. Veremos a seguir alguns
comandos adicionais que serão utilizados em arquivos e diretórios.

44
Conceitos básicos do sistema operacional IBM-AIX

Características de um arquivo

Como é mostrado na figura acima, um arquivo tem várias características a ele associadas. Elas
podem ser exibidas pelo comando ls -l.

Tipos de arquivo
Existem vários tipos de arquivos suportados pelo Unix. Esses tipos são identificados pelo
primeiro caractere exibido na saída do comando ls -l:

- arquivo comum
d diretório
l link simbólico
n arquivo de rede
c dispositivo de caractere (terminal, impressora)
b dispositivo de bloco (discos)
p pipe nomeado (canal de comunicação interprocessos)
s socket (canal de comunicação interprocessos)

45
Conceitos básicos do sistema operacional IBM-AIX

Comando cat

O comando cat exibe o conteúdo de um ou mais arquivos. Tipicamente ele é usado para ver o
conteúdo de um único arquivo. Sua sintaxe:

$ cat [arquivo1 arquivo2 ...arquivoN]

Se não for informado o nome de arquivo, o comando cat ficará em modo de espera aguardando
a digitação de dados. Ao pressionamento da tecla f, uma linha será saltada para que seja dada
uma nova entrada pelo teclado. Para sair do comando cat, pressione bD e os dados
digitados anteriormente serão exibidos. Para abortar a execução do comando cat pressione
bC.
bC
Abaixo é ilustrado a execução do comando cat.

Caso o arquivo a ser exibido for muito para ser exibido em uma única tela, o texto passará muito
rapidamente para ser lido. Nesse caso aplicaremos outro comando, que será visto a seguir, para
mostrar o arquivo em uma tela de cada vez.
Se o arquivo a ser exibido pelo comando cat contém caracteres de controle, tal como um
arquivo binário ou programa compilado, seu terminal poderá ficar desativado. Nesse caso, entre
em contato com o administrador do sistema para cancelar a sessão do seu terminal.

46
Conceitos básicos do sistema operacional IBM-AIX

Comando more

Como o comando cat, o comando more exibe o conteúdo de um arquivo na tela, porém
mostrando uma página de tela por vez. Por exemplo, para ver o conteúdo do arquivo
/etc/passwd, use o seguinte comando:
$ more /etc/passwd

Diferente do comando cat, o comando more possui opções de controle de paginação do texto
para que, por exemplo, no caso de adiantar ou avançar de mais o texto, você possa ter como
voltar linhas ou páginas e poder ler os dados, sem a necessidade de executar o comando more
novamente para abrir o arquivo. Isso é muito útil quando se trata de arquivos muitos extensos. A
seguir alguns dos comandos de controle do comando more:

f exibe a linha seguinte


k exibe a página seguinte
Q retorna para o prompt do shell
bB retorna uma página
jG vai para o final do arquivo
1jG vai para o início do arquivo

47
Conceitos básicos do sistema operacional IBM-AIX

Comandos tail, head e line

O comando tail serve para exibir as linhas finais de um arquivo. A quantidade de linhas
default mostrada são 10, mas podem ser mostradas quantas linhas se desejar. A mesma coisa vale
para o comando head, porém este mostra as linhas inicias de um arquivo.
No caso do comando line, ele mostra apenas a primeira linha do arquivo.
Supondo que você tenha um arquivo texto chamado listagem.txt com as seguintes linhas:

Arthur Andersen
Accenture
IBM Brasil
Compaq Corp
PriceWaterhouse Coopers

Vamos executar os comando tail para mostrar as 3 últimas linhas do arquivo, o comando
head para mostrar a 3 primeiras e o comando line para mostrar apenas a primeira linha:

$ tail -3 listagem .txt


IBM Brasil
Compaq Corp
PriceWaterhouse Coopers

$ head -3 listagem .txt


Arthur Andersen
Accenture
IBM Brasil

$ line < listagem.txt


Arthur Andersen

48
Conceitos básicos do sistema operacional IBM-AIX

Comando cp

O comando cp é utilizado para copiar arquivos. Pode-se criar cópias de arquivos individuais ou
de vários arquivos. Sintaxe:

$ cp <origem> <destino>

Apresentamos algumas considerações ao utilizar o comando cp:


- são necessários pelo menos dois argumentos: arquivo de origem e destino (que pode ser
outro nome de arquivo ou um diretório para onde a cópia será feita. Se forem usados mais
de 2 argumentos o último, obrigatoriamente, deverá ser um diretório;
- pode-se usar percursos relativos e/ou absolutos em qualquer um dos argumentos;
- se o destino não existir, será criado. Caso exista, será sobrescrito, exceto se for usada a
opção -i que pede a confirmação antes de sobrescrever o arquivo existente, pois por
padrão a cópia é feita sem fazer perguntas. Um arquivo não pode ser copiado para ele
mesmo. Caso isso seja tentado será emitida uma mensagem de erro.

Exemplos de uso do comando cp:


- Copiar o arquivo listagem.txt do diretório corrente para o diretório
/home/user1/backup com o nome listagem.txt.bkp;
$ cp listagem.txt /home/user1/backup/listagem.txt
- Copiar o arquivo /etc/passwd para o diretório /home/user2 com o mesmo nome;
$ cp /etc/passwd /home/user2
- copiar os arquivos arq001.dat e arq002.dat para o diretório /var/tmp;
$ cp arq00.dat arq002.dat /var/tmp

49
Conceitos básicos do sistema operacional IBM-AIX

Comando mv

O comando mv pode ser usado para as seguintes finalidades:


- mudar o nome de arquivos (renomear arquivo);
- mudar o nome de diretórios (renomear diretórios);
- mover arquivos para outros diretórios, mudando ou não seus nomes.
A sintaxe do comando mv é:

$ mv [-i] <origem> <destino>

Podem ser usados percursos relativos ou absolutos. Caso o arquivo não exista no destino, ele será
criado. Se o arquivo existir, será sobrescrito.
A opção -i fará com que o comando avise se o arquivo ou o diretório de destino existe,
aguardando confirmação para sobrescrever o arquivo ou diretório. Por default, o comando mv
renomeia ou move os arquivos ou diretórios sem fazer perguntas.
Exemplos de uso do comando mv:

- renomear o arquivo arq001.txt, no diretório corrente, para arq0001.dat


$ mv arq001.txt arq0001.dat

- renomear o diretório /dir1 para /dir01:


$ mv /dir1 /dir01

- mover o arquivo arq002.txt para o diretório /home/user2:


$ mv arq002.txt /home/user2

- mover todo o diretório /home/user3 para /usr/users:


$ mv /home/user3 /usr/users

- mover o arquivo /etc/hosts.copia para o diretório /etc/backup com o mesmo nome:


$ mv /etc/hosts.copia /etc/backup

- mover os arquivos dados.jan e dados.fev para o diretório /oracle/financ:


$ mv dados.jan dados.fev /oracle/financ

50
Conceitos básicos do sistema operacional IBM-AIX

Comando rm

O comando rm é usado para remover arquivos. Não é possível recuperar os arquivos após serem
removidos. Podem ser usados percursos relativos ou absolutos.
Sua sintaxe é:

$ rm [-r] [-f] [-i] <arq1> [arq2 arq3...arqN]

A opção -f força a remoção do arquivo. Com a opção -r é possível remover recursivamente


quaisquer arquivos e diretórios especificados. Sem a opção -r para remover diretórios, o
comando rm retorna uma mensagem de erro. Com a opção -i o comando emite uma mensagem
pedindo confirmação para a remoção do arquivo.
Utilize sempre a opção -r com extremo cuidado, pois poderá remover TODOS os seus arquivos
e diretórios. Se for utilizar a opção -r, utilize-a em conjunto com a opção -i.
Exemplos de uso do comando rm:

- remover o arquivo arq001.txt do diretório corrente:


$ rm arq001.txt

- remover o diretório /home/user2 e todos os seus arquivos e subdiretórios:


$ rm -r /home/user2

51
Conceitos básicos do sistema operacional IBM-AIX

Comando ln

O comando ln permite que vários nomes possam se referir a um mesmo arquivo (link). Isso é
útil quando um arquivo deve ser referenciado por outro nome em um determinado diretório, mas
não é desejado que outro arquivo seja criado. Diretórios também podem ser referenciados por
outro nome através do comando ln.
Por default, o arquivo criado com o comando ln é um hard-link, isto é, caso o arquivo seja
removido, será removido também o arquivo original ao qual o novo nome está fazendo
referência. Para que isso não aconteça, usa-se a opção -s para que seja criado o link. Sintaxe:

$ ln [-s] Arquivo_original Novo_nome

Onde:
-s argumento opcional que faz com que seja criado um soft-link (link
simbólico). O default é ser criado como hard-link (link físico).
Arquivo_original nome do arquivo/diretório a ter um link criado. Pode-se usar
percursos absolutos.
Novo_nome nome que será usado para referenciar a Arquivo_original.

Exemplos:
para criar no diretório corrente um soft-link para o arquivo /usr/bin/vi como nome
meueditor:

$ ln -s /usr/bin/vi meueditor

para criar um hard-link para o arquivo .profile.old com o nome perfil.ant, no


diretório /tmp

$ ln .profile /tmp/perfil.ant

Para remover o nome alternativo, use o comando unlink seguido do nome do link criado.
Exemplo:
para remover o link meueditor:

$ unlink meueditor

52
Conceitos básicos do sistema operacional IBM-AIX

Módulo 4 - Exercícios de fixação


1 - Vá para o seu diretório $HOME e copie o arquivo hosts, existente no diretório /etc, com o
nome hosts.copy.

2 - Crie os arquivos hosts.01 e hosts.02, no seu diretório $HOME, fazendo referência ao


arquivo hosts.copy criado no exercício anterior.

3 - Remova os arquivos criados no exercício anterior, pedindo confirmação na hora da remoção.

4 - Crie, em seu diretório $HOME, um subdiretório chamado etc. Copie o conteúdo do diretório
/etc para esse diretório.

5 - Mova todo o diretório criado no exercício anterior para o subdiretório etc02 em seu
diretório $HOME.

53
Conceitos básicos do sistema operacional IBM-AIX

Módulo 5 - Permissão e acesso aos arquivos


O acesso aos arquivos está sujeito à identificação dos usuários e às permissões associadas aos
arquivos. Este módulo mostrará como:

Permissões Entender o acesso à leitura, escrita e execução de um arquivo


ls (ls -l) Determinar que tipo de acesso é concedido ao arquivo
chmod Alterar o modo de acesso ao arquivo
umask Alterar o acesso default aos arquivos
chown Alterar o proprietário do arquivo
chgrp Alterar o grupo de um arquivo
su Trocar o seu identificador de usuário
newgrp Trocar seu identificador de grupo

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
de seus arquivos a outros usuários.

54
Conceitos básicos do sistema operacional IBM-AIX

Quem tem acesso a um arquivo


O sistema Unix incorpora uma estrutura de três camadas para definir quem tem acesso a cada
arquivo e diretório.
user - representa o proprietário do arquivo
group - representa o grupo que pode ter acesso ao arquivo
other - representa todos os outros usuários do sistema

O proprietário tem controle absoluto sobre quem tem que tipo de acesso ao arquivo. Ele pode
permitir ou negar o acesso ao seu arquivos a outros usuários do sistema. ele também decide que
grupo poderá acessar seus arquivos. O proprietário pode decidir também dar seu arquivo a outro
usuário do sistema. Uma vez transferida a propriedade, o proprietário anterior não terá mais
controle sobre o arquivo.
O comando ls -l mostra o proprietário e o grupo que tem acesso ao arquivo. Veja na
ilustração abaixo as informações referente aos arquivos listados:

55
Conceitos básicos do sistema operacional IBM-AIX

Tipos de acesso
Há três tipos de acesso, tanto para arquivos como diretórios:
Read
Arquivo - o conteúdo pode ser examinado
Diretório - o conteúdo pode ser examinado
Write
Arquivo - o conteúdo pode ser alterado
Diretório - o conteúdo pode ser alterado
eXecute
Arquivo - pode ser usado como um comando
Diretório - podem tornar-se o diretório de trabalho corrente

Note, como mostrado acima, que deixar um arquivo com permissão Read não o impede de ser
apagado ou sobreposto por outro arquivo do mesmo nome, no caso de um comando mv ou cp.
Para rodar um arquivo como um programa, além das instruções corretas estarem contidas no
arquivo, ele deve ter as permissões read e execute.

56
Conceitos básicos do sistema operacional IBM-AIX

Permissões
O acesso a um arquivo é definido através da identificação do usuário, 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 do sistema.
Veja a figura a seguir as permissões mostradas pelo comando ls -l:

Detalhando a figura acima, os arquivos listados pelo comando ls -l têm as seguintes


características em relação a permissões, proprietário e outros usuários:

Arquivo Associações Atribuições de Acesso Atividades permitidas


DIA (link simbólico) root (proprietário) Leitura, gravação e execução Examina, modifica o conteúdo e
o executa como um comando
membros do grupo system Leitura, gravação e execução Examina, modifica o conteúdo e
o executa como um comando
todos os outros Leitura, gravação e execução Examina, modifica o conteúdo e
o executa como um comando
X11 (diretório) root (proprietário) Leitura, gravação e execução Examina, modifica o conteúdo e
torna-o o diretório corrente
membros do grupo system Leitura e execução Examina o conteúdo e torna-o o
diretório corrente
todos os outros Leitura e execução Examina o conteúdo e torna-o o
diretório corrente
adm (diretório) adm (proprietário) Leitura, gravação e execução Examina, modifica o conteúdo e
torna-o o diretório corrente
membros do grupo adm Leitura e execução Examina o conteúdo e torna-o o
diretório corrente
todos os outros Leitura e execução Examina o conteúdo e torna-o o
diretório corrente
checklist.setup root (proprietário) Leitura e gravação Examina e modifica o conteúdo
membros do grupo system Leitura e gravação Examina e modifica o conteúdo
todos os outros Leitura Examina o conteúdo

57
Conceitos básicos do sistema operacional IBM-AIX

Comando chmod

O comando chmod é usado para alterar as permissões de arquivos ou diretórios. As alterações


somente podem ser feitas pelo proprietário do arquivo ou pelo superusuário. Porém, para o
sistema Unix a responsabilidade do acesso ao arquivo é do proprietário e não do administrador
do sistema.
Para que um arquivo possa estar protegido contra apagamento acidental, o diretório em que ele
se encontra não deve possuir a permissão de escrita.
O comando chmod suporta dois modos para atribuir permissões a arquivos e diretórios:

Modo simbólico
No modo simbólico, a sintaxe do comando chmod é:

$ chmod [-R] <[a|u|g|o][+|-|=]permissão], [...] arquivos>


onde:
a, u, g, o camada onde será aplicada a permissão (respectivamente todas as
camadas, proprietário, grupo e outros);
+,-,= respectivamente adiciona, remove ou atribui a permissão à camada
especificada;
permissão letra que identifica a permissão a ser atribuída à camada especificada:
r - leitura
w - gravação
x - execução
arquivos Um ou mais arquivos a terem suas permissões de acesso alteradas.
-R Esta opção permite que, em caso de diretórios, todos os arquivos e
subdiretórios tenham suas permissões atribuídas recursivamente.

Modo numérico
O comando chmod aceita uma representação numérica (octal) para designar as permissões de
arquivos. Sua sintaxe é:
$ chmod permissão arquivos
Onde:
permissão composto três dígitos, cada um representando uma camada de permissão. Os
valores válidos para as permissões são:
4 - leitura
2 - gravação
1 - execução

58
Conceitos básicos do sistema operacional IBM-AIX

A soma dos valores acima, de acordo com a permissão a ser dada, determina qual
a designação de permissão a ser dada para o proprietário (primeiro dígito), grupo
(segundo dígito) e outros (terceiro dígito).
arquivos arquivos que devem ter suas permissões alteradas.

Abaixo são mostrados alguns exemplos do uso do comando chmod, tanto em modo alfabético
quando em modo numérico. Crie o arquivo em seu diretório $HOME usando o comando
>financ.dbf (será discutido mais tarde o uso do caractere >). Use o comando ls -l para
verificar as permissões que você atribuiu aos arquivos.

- atribuição das seguintes permissões para o arquivo financ.dbf: usuário (ler, gravar e
executar), membros do grupo (ler e executar), outros usuários (apenas ler):
$ chmod u=rwx,g=rx,o=r financ.dbf
ou
$ chmod 754 financ.dbf

- adicionar a permissão de gravação aos membros do grupo ao arquivo do exemplo anterior:


$ chmod g+w financ.bdf
ou
$ chmod 774 financ.bdf

- remover o acesso de leitura para os outros usuários do arquivo financ.dbf:


$ chmod o-r financ.dbf
ou
$ chmod 770 financ.dbf

- remover todas as permissões de todas as camadas do arquivo financ.dbf:


$ chmod a-rwx financ.dbf
ou
$ chmod 000 financ.dbf

59
Conceitos básicos do sistema operacional IBM-AIX

Comando umask

O comando umask é usado para definir o modo de permissões padrão de criação de arquivos.
Sintaxe:

$ umask [-S] [permissões]

onde:
-S esta opção mostra o valor das permissões default para a criação de
arquivos;
permissões quais os valores para as camadas de permissões a serem usada como
default no momento da criação de um novo arquivo.
As permissões, numéricas ou simbólicas, são as mesmas do comando
chmod:
r ou 4 - leitura
w ou 2 - escrita
x ou 1 - execução

Quando as permissões são especificadas em modo simbólico, indicam que serão as permissões a
serem usadas na criação dos arquivos. Quando especificadas em modo numérico, na verdade
você estará especificando ao comando umask qual a permissão que deve ser negada na hora da
criação do arquivo. Por exemplo:
- deseja-se que todos os arquivos que forem criados à partir deste momento possuam as
seguintes permissões:
proprietário = rwx
grupo = rx
outros = r

- primeiro definimos quais serão as permissões padrão através do comando umask:


$ umask u=rwx,g=rx,o=r

- para confirmar se as permissões padrão estão corretas, podemos criar um arquivo e um


diretório quaisquer para verificarmos quais as permissões que serão atribuídas a eles:
$ >arquivo.novo
$ mkdir diretório.novo

- utilizando o comando ls -l, verificamos que o arquivo e o diretório deve ter ficado
com as seguintes permissões:

60
Conceitos básicos do sistema operacional IBM-AIX

$ ls -l
-rw-r--r-- ............ arquivo.novo
drwxr-xr-- ............ diretório.novo

Observe a saída do comando ls -l executado anteriormente. Há uma explicação para o


que acaba de acontecer na criação do arquivo e do diretório? Compare usando o comando
umask -S.

61
Conceitos básicos do sistema operacional IBM-AIX

Comando touch

O comando touch atualiza a data e hora de um arquivo existente. Caso o arquivo não exista,
será criado. O comando touch não afeta o conteúdo do arquivo.
Sintaxe:

$ touch [-a|m|t yyyymmddhhmm.ss] [-c] arq1 arq2 ... arqN

-a atualiza a hora de acesso ao arquivo para yyyymmddhhmm.ss


-m atualiza a hora de modificação do arquivo para
yyyymmddhhmm.ss
-t atualiza a hora do arquivo para a data e hora especificada em
yyyymmddhhmm.ss
arq1 arq2 ... arqN lista de arquivos a ter atualizado o registro de tempo
-c esta opção impede a criação do arquivo caso ele não exista

Abaixo é ilustrado o efeito do comando touch, tanto em um arquivo existente quanto na


criação de outro arquivo.

62
Conceitos básicos do sistema operacional IBM-AIX

Comando chown

O comando chown é usado para trocar o proprietário, e opcionalmente o grupo, ao qual um


arquivo pertence. Sintaxe:

$ chown <proprietário[:grupo]> arq1 arq2 ... arqN

Somente o proprietário de um arquivo, ou o superusuário, tem controle sobre os atributos e o


acesso aos arquivos. Uma vez que o proprietário de um arquivo foi alterado, somente o novo
proprietário, ou o superusuário, poderá modificar o direito de propriedade e as permissões de
acesso. Em alguns ambientes, por medida de segurança, o comando chown pode ser executado
apenas pelo superusuário.
A alteração só terá sucesso se o proprietário e grupo existirem no sistema, isto é, deve ser um
usuário existente no arquivo /etc/passwd e um grupo existente no arquivo /etc/group.
Exemplos:

- para tornar o usuário oracle proprietário do arquivo bancos.txt


$ chown oracle bancos.txt

- para tornar o usuário informix proprietário do arquivo fornecedores.dat, assim como o grupo
de acesso sendo dba
$ chown informix:dba fornecedores.txt

Em algumas implementações Unix, por medida de segurança o comando chown somente pode
ser executado pelo superusuário (root).

63
Conceitos básicos do sistema operacional IBM-AIX

Comando chgrp

O comando chgrp é usado para alterar o grupo ao qual terá acesso ao arquivo. É necessário que
o grupo seja válido. Isto significa que ele deve estar cadastrado no arquivo /etc/group.
Sintaxe:

$ chgrp <novo grupo> arq1 arq2 ... arqnN

Somente o proprietário de um arquivo ou o usuário root poderá alterar o grupo associado a um


arquivo. Veja o exemplo na figura abaixo:

Em algumas implementações Unix, por medida de segurança o comando chgrp somente pode
ser executado pelo superusuário (root).

64
Conceitos básicos do sistema operacional IBM-AIX

Comando su

O comando su é usado para trocar a identificação de usuário e grupo. É uma abreviação de


switch to user ou set user. Isso permite que você inicie uma subsessão com uma nova
identificação de usuário, conseguindo acesso a todos os arquivos que são de propriedade deste
novo usuário. Sua sintaxe:

$ su [-][usuário]

Por segurança, você será solicitado a entrar com a password do usuário para o qual está mudando
a identificação, para efetivamente ter acesso aos seus arquivos.
Sem nenhum argumento, o comando su alterna para o usuário root (que é o administrador do
sistema). O root é também conhecido como superusuário, pois tem acesso a qualquer coisa no
sistema. É por esta razão que muitas pessoas pensam que o comando su é abreviação de
superusuário. Claro que a senha de root deverá ser fornecida para efetuar a mudança de
identificação.
Caso seja o usuário root que esteja executando o comando su, a senha do usuário não será
pedida pelo sistema.
Para voltar à identificação de usuário anterior, não use novamente o comando su. Use o
comando exit para sair da sessão que você iniciou com o comando su.
Se for usado a opção hífen (-) além de ser efetuada a troca de identificação, todo o ambiente do
shell daquele usuário será executado, isto é, se existirem seus arquivos .profile e .kshrc
em seu diretório $HOME, estes serão executados como em uma sessão de login padrão.
Na figura abaixo é mostrado o uso do comando su:

65
Conceitos básicos do sistema operacional IBM-AIX

Comando newgrp

O comando newgrp é similar ao comando su. Ele permite a alteração do seu identificador de
grupo.
Os grupos aos quais o usuário poderá ter acesso são definidos pelo administrador do sistema. Se
você não tem permissão para tornar-se membro de um grupo específico a mensagem Sorry será
mostrada. Sintaxe:

$ newgrp [grupo]

O comando newgrp não abre uma nova subsessão. Para retornar à identificação de grupo
original, basta digitar o comando newgrp sem argumentos.

66
Conceitos básicos do sistema operacional IBM-AIX

Módulo 5 - Exercícios de fixação


1- Crie um arquivo chamado arquivo.001. Deixe as permissões do arquivo de maneira que
somente você possa modificá-lo. Os membros do grupo somente poderão ler e os demais
usuários não poderão ter acesso ao arquivo.

2- Modifique as permissões do arquivo do exercício anterior de modo que ele fique somente com
permissão de escrita para o proprietário e grupo. Para os demais usuários, as permissões de
acesso deverão ser removidas.

3 - Faça uma cópia de arquivo.001 como arquivo.001.bkp. Retire todas as permissões


da cópia criada. Tente remover o arquivo. Caso consiga removê-lo, faça com que o arquivo não
possa ser removido.

4 - Quem é o proprietário do arquivo /etc/profile? Qual o acesso que você tem a este
arquivo? Quem poderá alterar a propriedade ou grupo deste arquivo?

5 - Rode o comando mesg. Em seguida procure pelo arquivo que faz referência ao seu terminal
e veja as permissões dele. O que o comando mesg faz realmente?

67
Conceitos básicos do sistema operacional IBM-AIX

Módulo 6 - O editor de textos vi

O que é o vi

O vi é um editor de textos orientado a tela, que acompanha a maioria dos sistemas Unix.
É um editor dirigido por comandos que incluem:
- Comandos de administração geral;
- Comandos de movimentação do cursor;
- Comandos de inserção de texto;
- Comandos de apagamento de texto;
- Comandos de transferência de texto;
- Comandos de modificação de texto.

Você pode usar o vi para criar novos arquivos ou alterar os existentes. Sintaxe:

$ vi [arquivo]

O editor vi foi desenvolvido para ser independente do terminal, e os comandos foram mapeados
para a maioria dos teclados padrão. Foi originalmente usado em teletipos, que não tinham teclas
de funções especiais ou teclas de movimentação do cursos.
A vantagem é que o vi pode ser executado em qualquer tipo de terminal. Como ele acompanha
a maioria dos sistemas Unix, você não precisa reaprender como usar o editor toda vez que mudar
para uma implementação de Unix diferente.
Usar o vi de modo eficiente requer prática. Este capítulo fornecerá uma boa base para a edição
de arquivos, além da habilidade para aumentar sua performance.

68
Conceitos básicos do sistema operacional IBM-AIX

Os modos do vi

O vi é um editor dirigido por comandos. Quando você inicia uma sessão do vi você está no
modo comando. Caso você pressione qualquer tecla, o vi tentará executar o comando associado
àquela tecla. Os comandos estão disponíveis para introduzir texto, mover o cursor, deletar,
modificar e transferir o texto. Os comandos do vi geralmente são silenciosos, não mostrando
nada na tela quando são executados. A única coisa que você verá serão os efeitos do comando.
Existem comandos do vi para acessar o modo entrada, o que permitirá que você possa digitar
informações no seu arquivo. Para retornar ao modo de comando, basta pressionar a tecla ^.
Alguns comandos do vi requisitam entradas múltiplas de teclado. Se você se perder no meio de
um comando, basta pressionar a tecla ^ para finalizar o comando corrente, retornando para o
modo entrada.

69
Conceitos básicos do sistema operacional IBM-AIX

Descrevendo uma sessão vi


Quando é iniciada uma sessão do vi, a tela se parecerá com a da ilustração abaixo. Você verá
uma "janela" do seu arquivo.

Você deve prestar atenção às mensagens que aparecem na área de modo. O vi pode lembrá-lo
quando você está no modo entrada ou modo substituição. Essas dicas visuais o ajudarão muito
durante as sessões de edição.
Se você está no modo de entrada e não vê a mensagem INPUT MODE, faça o seguinte:
^:set showmodef.

70
Conceitos básicos do sistema operacional IBM-AIX

Finalizando uma sessão vi


Quando você terminar de editar seu arquivo, deverá salvá-lo em disco. Há dois comandos
disponíveis para gravar seu arquivo: um comando vi ou um comando ex.
Lembre-se de que deve estar no modo comando para executar qualquer comando, por isso não
esqueça de pressionar a tecla ^ para ter a certeza de que está no modo comando.

^ZZ comando vi. Não aparece na tela;


^:wqf comando ex. Grava o arquivo e sai do vi.

Para sair do vi sem salvar (abandonar o arquivo), use o seguinte comando ex:
^:q!f

71
Conceitos básicos do sistema operacional IBM-AIX

Comandos usados para edição de texto no vi

Comandos de controle do cursor


A primeira categoria de comandos que você aprenderá permitirá mover o cursor pelo texto.
Como os teletipos não possuem teclas de movimentação do cursor, você não deve usar as teclas
de movimentação do cursor, apesar de algumas configurações atuais do vi suportarem as teclas
de movimentação (z, y, w, x, {, }, etc).
Seguem os comandos usados para a movimentação do cursor. No caso de alguns comandos de
movimentação serem seguidos do sinal de numeral (#), este deve ser substituído por um número.
H mover um caractere para a esquerda. Equivalente à tecla z
J desce uma linha. Equivalente à tecla y
K sobe uma linha. Equivalente à tecla w
L ou k move um caractere para a direita. Equivalente à tecla x
#W move palavra por palavra para a direita. jW ignora a pontuação
#B move palavra por palavra para a esquerda. jB ignora a pontuação
#E move para o final da próxima palavra. jE ignora a pontuação
$ vai para o final da linha corrente
^ vai para o primeiro caractere não nulo da linha corrente
0 vai para o início da linha corrente
jG vai para o final do arquivo
#jG vai para a linha #
:# vai para a linha #
bG mostra, na base da tela, o número da linha corrente, além do nome do arquivo que
está sendo editado
f vai para a próxima linha. equivalente ao comando J
bB volta uma tela. Equivalente à tecla {
bF avança uma tela. Equivalente à tecla }
bU volta meia tela.
bD avança meia tela.
jL vai para a última linha da tela
jM vai para o meio da tela
jH vai para a primeira linha da tela
bL redesenha a tela. Útil no caso de receber mensagens enquanto está sendo editado
um arquivo
Se você gosta de ver os números das linhas enquanto está editando o arquivo, use o seguinte
comando:

72
Conceitos básicos do sistema operacional IBM-AIX

^:set numberf

Para desativar os números use:


^:set nonumberf

73
Conceitos básicos do sistema operacional IBM-AIX

Comandos em modo de entrada


Para inserir o texto no seu arquivo, você deve estar no modo entrada. Existem vários comandos
que colocarão o vi no modo entrada:

A acrescenta o texto à direita do cursor


jA acrescenta o texto no final da linha corrente
I insere o texto na posição onde se encontra o cursor
jI insere o texto no início da linha corrente
O insere uma nova linha abaixo da linha corrente
jO insere uma nova linha acima da linha corrente

Quando o vi estiver no modo entrada, aparecerá a mensagem INPUT MODE no lado inferior
direito da tela.
No modo entrada a tecla f abrirá uma nova linha. Se precisar separar uma linha, posicione o
cursor no local desejado e pressione a tecla f. Lembre-se que no modo comando a tecla f
move o cursor para a próxima linha, como se estivesse usando o comando J ou a tecla y.
Para retornar ao modo comando, pressione a tecla ^. O cursor sempre retornará um caractere
para a esquerda após seu pressionamento.

Enquanto você está no modo entrada, é possível usar a tecla Backspace para retornar
caracteres e digitar o novo texto. Quando você voltar com o cursor usando essa tecla, os
caracteres não desaparecerão até que se volte ao modo comando.

74
Conceitos básicos do sistema operacional IBM-AIX

Deletando texto
Dois comandos estão disponíveis para a deleção de texto:
# X apaga o caractere que se encontra na posição do cursor
# Dobjeto apaga o objeto nomeado

O comando D é um comando ativo que requisita um objeto para agir sobre ele. O objeto
especificado será removido. Os objetos são definidos com os comandos de movimentação do
cursor. Vejamos alguns comandos de deleção de texto:
#DW apaga a palavra onde se encontra o cursor
DD
#DD apaga a linha corrente. Isto é uma convenção do vi .Quando uma ação é
repetida, ele afeta a linha toda
D jG apaga até a última linha do arquivo
D$ apaga até o final da linha
D0 ou D^ apaga até o início da linha

Como um novo usuário vi, você pode deletar ou modificar algo que não deveria. O comando
U pode salvar sua vida:

U cancela a última modificação


jU cancela todas as modificações da linha corrente.

Para o comando jU ou U funcionar, o cursor não pode ser movimentado após a alteração.
Portanto, deve ser acionado imediatamente após a última modificação efetuada.

75
Conceitos básicos do sistema operacional IBM-AIX

Copiando e movendo texto


Sempre que você deleta um objeto, ele fica gravado em um buffer interno do vi. É um buffer
temporário, pois o conteúdo da próxima deleção substituirá seu conteúdo. Baseado nisto,
podemos mover o texto de um lugar para outro no arquivos que estamos editando. O texto é
colocado de acordo com a posição do cursor.
Portando, os comandos de deleção de objetos e caracteres são usados para termos a função
recortar texto. Para colar o texto recortado, usam-se os dois seguintes comandos:
P insere o texto após a posição onde se encontra o cursor.
jP insere o texto antes da posição onde se encontra o cursor.

Para copiar um texto para a área de buffer do vi, usamos o comando Y, seguido do objeto no
qual ele deve agir. Veja que este comando trabalha de maneira semelhante ao comando D. Veja
os comandos usados para cópia de texto:

# YW copia a palavra onde se encontra o cursor


# YY copia a linha corrente
Y jG copia até a última linha do arquivo
Y$ copia até o final da linha
Y^ copia até o início da linha

Por exemplo, para mover 3 linhas de texto, incluindo a linha corrente, para outro lugar no
arquivo e acima da posição do cursor, execute os seguintes passos:
- posicione o cursor na linha inicial do texto que deseja mover
- digite 3 DD. Isto vai deletar 3 linhas, incluindo a linha onde se encontra o cursor
- leve o cursor até a posição onde deseja inserir o texto
- digite jP. Isto fará com que o texto seja inserido acima do cursor.

Supondo que você tenha um arquivo com umas 30 linhas e queira copiar para o início do texto
desde da linha 15 até o final do arquivo, use o seguinte procedimento:
- vá para a linha 15 do arquivo digitando 15 jG ou :15
- dê o comando Y jG. Isto armazenará, da linha 15 até o final do texto, no buffer
do vi
- vá para o início do arquivo digitando 1 jG ou :1
- digite jP. Isto fará com que o texto seja inserido acima do cursor.

76
Conceitos básicos do sistema operacional IBM-AIX

Alterando o texto
Os comandos que permitem alterar o texto, tornam as modificações mais convenientes, uma vez
que, já que aprendeu a usar os comandos de inserção e deleção de texto, isto pode se tornar um
pouco incômodo, pois você tem que entrar e sair manualmente do modo comando e do modo
entrada.
Existem três comandos comuns que são usados para modificar o texto:
R substitui o caractere na posição onde se encontra o cursor pelo caractere digitado
após este comando
jR substitui todos os caracteres. Este comando faz com que o vi entre no modo
sobrescrever. Para finalizar este comando pressione a tecla ^
Cobjeto substitui o objeto nomeado, colocando o sinal $ no final do objeto. Para
finalizar este comando pressione a tecla ^. A seguir a lista de comandos com
seus objetos:
# CW altera a palavra corrente
# CC altera a linha corrente
CjG altera até o final do arquivo
C$ altera até o final da linha
C^ altera até o início da linha

Caso haja a necessidade da repetição de um comando utilize o comando ponto (.). Este comando
permite que seja repetida a última operação de alteração, incluindo deleção.

77
Conceitos básicos do sistema operacional IBM-AIX

Pesquisando no texto
Uma das coisas mais comuns efetuadas na edição de um texto, é a pesquisa de uma string de
texto específica. Abaixo são relacionados os comandos utilizados para a pesquisa de texto em um
arquivo editado pelo vi:

/texto pesquisa o texto desde da linha corrente até o fim do arquivo, com volta para o
começo
?texto pesquisa o texto desde da linha corrente até o início do arquivo, com volta para o
começo
N encontra a próxima ocorrência, previamente pesquisada, na mesma direção
jN encontra a próxima ocorrência, previamente pesquisada, na direção oposta

Volta para ao começo significa que se o texto não for encontrado até o fim (ou início) do
arquivo, a pesquisa será continuada do outro lado do arquivo.

78
Conceitos básicos do sistema operacional IBM-AIX

Pesquisando modelos de texto


Como você deve ter percebido no tópico anterior, a busca só teria sucesso se fosse encontrado o
texto exatamente como digitado.
As construções, a seguir, permitem que sejam pesquisados modelos de string. Essas
especificações de modelos são chamadas de expressões regulares e são reconhecidas por vários
utilitários do sistema Unix. Abaixo é apresentado um resumo das expressões regulares:

[a-zA-Z0-9] define uma classe de caracteres a ser encontrada. O hífen (-) significa que
uma faixa dentro da classe.
^texto fixa texto para o início da linha
texto$ fixa texto para o final da linha
. encontra um caractere simples
caractere* encontra zero ou mais ocorrências de caractere

Veja estes exemplos:


/[Uu]nix procura pela próxima ocorrência da string Unix ou unix
/[oO][nN][eE] procura pela próxima ocorrência de one, independente de possuir letras
maiúsculas ou minúsculas
/b*t procura pela ocorrência de b seguido de qualquer caractere, terminando
com t
/^[arq].* procura a próxima ocorrência de uma linha que inicie com a, r ou q,
seguido de um caractere qualquer na segunda posição e seguido de
zero ou mais caracteres a partir da terceira posição
/final.$ procura a próxima ocorrência de uma linha que termine com final,
seguido de um caractere qualquer

79
Conceitos básicos do sistema operacional IBM-AIX

Pesquisa e substituição de texto


No vi também é possível efetuar a busca-e-troca de um texto por outro. Isto é feito através de
comandos ex. O ex é um editor de textos orientado a linha que aceita endereço de linhas para
operar dentro de um arquivo. Veja a sintaxe da busca e troca no vi:

:Início,Final s/String procurada/String substituta/[g]


Início número da linha inicial. Se usado ponto (.), é considerado como
sendo a partir da linha corrente
Final número da linha final. Se usado cifrão ($), é considerado como
sendo até o final do arquivo
s o comando substitute do ex
String procurada o texto que deve ser encontrado no arquivo
String substituta o texto que deverá ser usado no lugar de String procurada
g parâmetro opcional do comando s. Se não for usado, será efetuada
a substituição somente da primeira ocorrência de String procurada
em cada linha do arquivo. Caso seja usado, todas as ocorrências em
qualquer posição das linhas do arquivo serão substituídas.

Exemplos de busca-e-troca no vi:


- trocar todas as ocorrências de "microcomputador" por "computador pessoal", iniciando na
linha 1 e terminando na linha 27:
:1,27 s/microcomputador/computador pessoal/g

- trocar a primeira ocorrência da palavra "vírus" por "bug", iniciando na linha corrente e
terminando no final do arquivo:
:.,$ s/virus/bug

- trocar a palavra "perform" por "Executar". Todas as ocorrências serão trocadas desde o início
até o final do arquivo:
:1,$ s/[Pp][Ee][Rr][Ff][Oo][Rr][Mm]/Executar/g

80
Conceitos básicos do sistema operacional IBM-AIX

Alguns comandos ex úteis e outras opções do vi


Abaixo é mostrada uma lista de comandos ex muito usados no vi:
:w [arquivo] grava o arquivo correntemente editado em disco.
Opcionalmente pode ser dado um nome ao arquivo,
criando outro em disco, porém gravar o arquivo com o
outro nome mantém a edição do arquivo anterior.
:LinI, LinF w arquivo permite que uma parte do arquivo seja gravado em outro.
LinI e LinF significam respectivamente linha inicial e
linha final.
:e arquivo abre arquivo para ser editado, desconsiderando o arquivo
corrente, inclusive as alterações efetuadas nele.
:e! desconsidera todas as alterações efetuadas, carregando
novamente o arquivo para a edição.
:r arquivo Lê o arquivo, inserindo-o na posição logo abaixo de onde
se encontra o cursor.
:! comando executa um comando qualquer do shell.

As opções mais usadas (comando set) do vi são mostradas a seguir:


:set all mostra todas as opções da sessão de edição.
:set number ativa a numeração de linhas na tela
:set autoindent causa indentação automática quando no modo de entrada. A linha
seguinte seguirá o alinhamento da linha anterior.
:set wrapmargin=# causa a quebra de linha quando o cursor atingir a linha # na tela
:set showmatch acusa os fechamentos de parênteses, chaves e colchetes.
:set redraw força o vi a atualizar a tela após cada atualização ou salvamento do
arquivo. Para fazer manualmente a atualização de tela, use
bL.
:set showmode ativa o modo de mensagens.
:map exibe o mapeamento de teclado usado no modo comando.
:map! exibe o mapeamento de teclado usado no modo entrada.

Caso deseje que qualquer uma dessas opções sejam ativadas automaticamente quando o entrar
com o vi, coloque os comando (sem preceder por dois pontos) em um arquivo chamado .exrc
em seu diretório $HOME.

81
Conceitos básicos do sistema operacional IBM-AIX

Módulo 7 - Introdução ao Korn Shell


O Korn shell é um interpretador de comandos com linguagem de programação integrada,
residente em /usr/bin/ksh. Ele pode executar comandos a partir de um terminal ou um
arquivo.
Ele contém um mecanismo de histórico de comandos, suporta controle de tarefas além de outras
características úteis.
O Korn shell foi desenvolvido por David Korn do AT&Y Bell Labs. A seguir serão mostradas
algumas características do Korn Shell, importantes para o entendimento do ambiente.

82
Conceitos básicos do sistema operacional IBM-AIX

O uso de alias
Alias é um novo nome para o comando. Você pode abreviar longas linhas de comando, criar
novos comandos ou fazer com que os comandos padrão sejam executados de maneira diferente,
substituindo o comando original por um comando assinalado por um alias.
O alias pode ser uma letra ou uma palavra pequena. Por exemplo, o comando ps -ef é usado
com muita freqüência. Seria mais fácil se usasse psf.
O comando usado para a criação de novos nomes para os comandos chama-se alias. Sua
sintaxe é:
$ alias nome=string
nome novo nome para o comando original.
string cadeia de caracteres que faz referência ao comando original. Se string contém
espaços, deve ser colocada inteira entre aspas.

Ao ser entrado um alias, ele se parece com um comando qualquer do Unix. Sempre que o Unix
for interpretar um comando para a execução, o alias sempre terá prioridade sobre o comando
original. Na verdade o Unix analisa o alias definido, monta a linha de comando e depois a
executa.
Sem argumentos, o comando alias lista todos os aliases definidos no ambiente. Para listar um
alias determinado digite:
$ alias nome

Se a atribuição de alias for feita interativamente, ao término da sessão de terminal (logout) eles
serão destruídos.
Para desativar um alias use o comando unalias, como abaixo:
$ unalias nome

Caso queira que o comando original seja executado ao invés de seu alias, coloque uma barra
invertida (\) antes do nome do comando.

83
Conceitos básicos do sistema operacional IBM-AIX

Histórico de comandos - exibindo e reentrando comandos


O Korn shell mantém, no seu diretório $HOME, um arquivo que armazena os comandos que você
digita e permite que você reentre esses comandos. Esse arquivo é mantido nas sessões de login.
O comando history exibirá os últimos 16 comandos digitados. Cada linha é precedida por um
número que pode ser usado como referencia para a reentrada do comando.
Para reexibir os últimos comandos digitados, digite:
history

A variável HISTSIZE define a quantidade de comandos que poderá ser escrita no arquivo de
histórico de comandos. O conteúdo default dessa variável é 128.
A variável HISTFILE especifica o nome do arquivo em que os comandos serão armazenados. O
conteúdo default dessa variável é .sh_history.
Uma vez exibido o seu histórico de comandos, você pode chamar novamente, editar ou
reexecutar qualquer um deles.
Para que um comando seja reexecutado, usa-se o comando r. Vejamos exemplos de uso dos
comandos history e r:
supondo que abaixo tenham sido listados os últimos comandos digitados:
$ history
1 date
2 cat /etc/passwd
3 echo $PATH
4 ls -l /etc/group

Para reentrar primeiro comando da lista mostrada acima pelo comando history digite:
r 1 ou r d este último faz com que o último comando iniciando com a letra d seja
reexecutado.

84
Conceitos básicos do sistema operacional IBM-AIX

Chamando e editando comandos


O histórico de comandos permite que os comandos entrados anteriormente sejam receitados sem
que seja necessário a digitação dos mesmos. Porém além da reentrada de comandos, pode haver
a necessidade de que esses comandos sejam editados para, posteriormente, serem executados.
Para que isso seja possível, o Unix permite que o editor de textos vi seja usado como editor de
linha de comando, usando os mesmos comandos de movimentação do cursor aprendidos
anteriormente.
Para que as linhas de comando possam ser rechamadas e editadas, digite:
$ set -o vi

Para mostrar o último comando digitado tecle ^. Isso coloca o prompt do Unix no modo
comando do vi. em seguida use as teclas K e J para a movimentação entre as linhas de
comando. Para editá-las use os comandos do vi que já conhece. Na verdade, você está dentro do
vi, editando uma linha de comandos como se estivesse editando um arquivo texto. Nunca use
as teclas de seta para movimentação do cursor. Ao término da edição da linha de comando,
pressione f para que seja executada.
Se você tiver problemas ao editar a linha de comando e quiser recomeçar, tecle bC, o que
faz você voltar ao prompt do shell, e tente novamente.
Você também pode usar o comando history para listas os últimos 16 comandos digitados. Ao
ver o número da linha em que se encontra o comando, poderá ir para aquela linha digitando #
jG (onde # deve ser substituído pelo número do comando a ser editado). Lembre-se que #
jG posiciona o cursor em uma linha específica.

85
Conceitos básicos do sistema operacional IBM-AIX

Ambiente do usuário
O ambiente do usuário descreve muitas coisas sobre o programa que está sendo executado. Ele
descreve a sessão para o sistema. O ambiente contém as seguintes informações:
- caminho para o diretório $HOME do usuário;
- caminho para o armazenamento do correio eletrônico;
- fuso horário no qual se está trabalhando;
- com que nome de usuário se está logado;
- caminho do shell para a pesquisa de comandos;
- tipo e tamanho do terminal;
- outras informações que os aplicativos necessitam.
Por exemplo, os comandos do editor vi precisam saber qual tipo de terminal está sendo usado
para formatar a saída corretamente.
Muitos aplicativos necessitam que se personalize seu ambiente de algum modo. Isto é feito
através da modificação do arquivo .profile, existente no diretório $HOME.
Através do comando env é possível ver as variáveis ambientais. Cada uma dessas variáveis tem
uma razão específica. Abaixo algumas variáveis ambientais mais comuns e seus significados:
TERM, COLUMNS e LINES descrição do terminal em uso
HOME caminho para o diretório de login
PATH caminho de busca de comandos
LOGNAME nome do usuário logado
ENV e HISTFILE variáveis especiais do Korn shell
DISPLAY variável especial do X-Window

Algumas dessas variáveis são ativadas pelo sistema. Outras são defininas no arquivo
/etc/profile ou .profile.

86
Conceitos básicos do sistema operacional IBM-AIX

Configurando as variáveis do shell


Uma variável do shell é um nome que representa um valor. O valor associado ao nome pode ser
modificado, assim como ser acessado através do nome da variável
Algumas variáveis do shell são definidas durante o processo de login. Um usuário pode definir
novas variáveis do shell.
Para criar uma variável do shell digite a seguinte sintaxe:
nome=valor
Isto pode ser digitado tanto no prompt do shell quanto em uma linha de programa. Não deve
haver espaço antes ou depois do sinal de igual. Isto vai garantir que o shell não interpretará como
uma chamada de comando.
Os nomes de caracteres devem começar com um caractere alfabético (a-z, A-Z), podendo conter
outros caracteres após como números e o sublinhado. Não há restrição quanto à quantidade de
caracteres que o nome de uma variável pode conter.
Sugere-se que as variáveis criadas, sejam interativamente ou por programas, com seus nomes em
letras maiúsculas. Assim pode se ter a certeza de que não haverá confusão com os nomes dos
comandos do Unix.

A variável PATH

A variável PATH é uma relação de diretórios, usada pelo shell para encontrar comandos. É ela
que permite que um comando seja executado apenas com a digitação de seu nome, e não usando
o percurso absoluto (por exemplo vi, ao invés de /usr/bin/vi).
A lista de diretórios para pesquisa é separada por dois-pontos (:).Este é um exemplo de uma
variável PATH:
PATH=/usr/bin:/usr/sbin:/usr/local/bin:.
Isto significa que a busca pelos comandos será nos diretórios /usr/bin, depois em /usr/sbin,
depois em /usr/local/bin e, finalmente, no diretório corrente. A mensagem de not found só
será apresentada se não for encontrado o comando digitado.

A variável TERM

A variável TERM descreve o tipo de terminal que está em uso. Para que muitos comandos sejam
executados corretamente eles necessitam saber o tipo do terminal em uso. Um exemplo é o
comando ls que precisa saber a quantidade de linhas. A mesma coisa vale para o comando
more. Já para o vi há a necessidade de se saber a quantidade de linhas e colunas, além de outras
informações para poder trabalha adequadamente.
O tipo do terminal é ativado usando o modelo de terminal (como vt100, dtterm, vt320,
etc).
Se o terminal ficar estranho quando estiver sendo usado o comando more ou o comando vi, veja
se a variável TERM existe e se está definida corretamente. Se tudo estiver correto, use o comando
tset para resetar as características do terminal usando a variável TERM.

87
Conceitos básicos do sistema operacional IBM-AIX

O que acontece durante o login

A primeira coisa que você vê quando vai começar a usar o sistema Unix é o prompt Login:.
Nele você deve digitar o seu nome de usuário (ou login name). Em seguida o sistema vai
solicitar a sua senha no prompt Password:. Após a entrada desses dados, o sistema checa a
validade do login name e senha no arquivo /etc/passwd. Se o nome e senha estiverem
corretos, o sistema posiciona você no seu diretório $HOME e inicia o shell mostrando o prompt
de comandos como símbolo $.
Na verdade essa explicação simples camufla vários passos que acontecem desde o momento em
que a senha foi digitada até o aparecimento do prompt de comandos. A figura acima ilustra o
processo de login em nível de sistema operacional.
Isto tudo acontece quando se está trabalhando com uma sessão de terminal típica, ou seja, login
em tela tipo texto. Caso o login seja efetuado em uma tela gráfica (CDE) os arquivos de
inicialização de sistema normalmente não são usados para startup. Para isso deve ser forçada a
carga dos arquivos de inicialização.
No arquivo .dtprofile, existente no diretório $HOME, a linha DTSOURCEPROFILE deve
ser definida para true. Caso isso não seja feito, somente o arquivo .dtprofile será
executado, não carregando as definições de ambiente criadas nos arquivos .profile e
.kshrc.

88
Conceitos básicos do sistema operacional IBM-AIX

Arquivos de inicialização do shell


Algumas variáveis ambientais são requeridas para configurar a sessão de terminal, como por
exemplo PATH e EDITOR.
Quando as variáveis são definidas interativamente, elas são perdidas no momento do logout,
sendo necessário que sejam redefinidas em um novo login.
Para ajudar na customização da sessão de terminal, existem os arquivos .profile e .kshrc.
São scripts-shell que definem a configuração do ambiente da sessão de terminal, executarão
programas, atribuirão aliases para comandos, etc.
Qualquer usuário que queira mudar o ambiente padrão definido pelo administrador do sistema
deverá criar um arquivo .profile ou modificar o existente. Claro que isso só será possível se
o usuário tiver permissão para alterar o arquivo de configuração do ambiente.
O arquivo .kshrc é usado como o .profile, ou seja, para modificar a configuração do
ambiente do usuário. A diferença é que ele é executado toda vez que um novo shell iniciado, e
não somente no processo de login. O nome desse arquivo não é um nome obrigatório, podendo
ser mudado através da modificação da variável ENV. Isto é feito colocando no arquivo .profile
uma linha parecida com a seguinte:
export ENV=$HOME/.kshrc
Isto fará com que seja usado o arquivo .kshrc do diretório do usuário que logou.

89
Conceitos básicos do sistema operacional IBM-AIX

Comandos internos do shell e comandos Unix


A maioria dos comandos digitados estão localizados sob o diretório /usr/bin. São arquivos
binários executáveis, sendo que em alguns casos podem ser até mesmo shells-scripts. Outros
comandos, como cd, pwd e echo, estão residentes dentro do próprio shell (ksh), isto é, não
existem como arquivos de comandos armazenados em disco. Esses comandos são chamados de
comandos internos do shell ou intrínsecos do shell. Alguns comandos residentes possuem parte
de seu código em disco, seja como um aquivo de bliblioteca chamado em tempo de execução,
seja como um arquivo com o mesmo nome do comando interno localizado em /usr/bin.
Como os comandos podem existir em vários diretórios, o shell deve saber onde pesquisá-los. A
variável PATH define os diretórios a serem pesquisados e em que ordem ele deve ser feita a
pesquisa.

90
Conceitos básicos do sistema operacional IBM-AIX

Módulo 7 - Exercícios de fixação


1 - Crie um alias chamado "a_ls" que execute o comando ls com as opções l, o, g, t, r e F.

2 - Faça com que o alias do exercício anterior seja executado a cada nova sessão se shell que for
aberta.

3 - Crie um alias chamado "ir_para", que deverá efetuar a mudança de diretório.

4 - Digite o seguinte comando, que está incorreto:


$ cd/usr/bin;ls –lK *.txt

Agora use a edição de linha de comando para corrigir os erros do comando acima. Não redigite o
comando.

5 - Crie um alias chamado "rm", que execute o comando "rm -i". Como o comando original
pode ser executado ao invés do alias?

91
Conceitos básicos do sistema operacional IBM-AIX

Módulo 8 - O shell e suas características avançadas


Uma característica interessante no shell é a capacidade de podermos manipular textos, números e
até saída de comandos através de variáveis. A seguir serão mostradas características avançadas
do Korn Shell, que irá auxiliar bastante na produtividade do usuário no ambiente Unix.

92
Conceitos básicos do sistema operacional IBM-AIX

Capacidades de substituição do shell


O shell possui três tipos de substituição, cuja função é acelerar a execução e a digitação da linha
de comando.
- substituição de variáveis;
- substituição de comandos;
- substituição do til (~).
Antes vamos entender como as variáveis são armazenadas no ambiente do shell e como elas são
inicializadas ou criadas.

93
Conceitos básicos do sistema operacional IBM-AIX

Armazenamento de variáveis
Variáveis são áreas de memória onde podem ser armazenados dados. Esses dados podem ser
números, textos, listas de arquivos e até mesmo resultados da saída de comandos que podem ser
utilizados posteriormente.
Existem duas categorias de variáveis que podemos definir no Unix:
Variáveis locais disponíveis somente para o Shell corrente, não sendo acessadas
pelos subprocessos;
Variáveis ambientais ou globais disponíveis tanto para o shell corrente como para os
subprocessos que venham a usar o conteúdo das variáveis
definidas.

Para tornar uma variável com escopo global, ela deve ser exportada usando-se o comando
export. Por exemplo para tornar a variável PS1 de escopo global, digite:

$ export PS1

Para a visualização das variáveis locais usa-se o comando set. Para verificar quais variáveis
estão exportadas, usa-se o comando env.

94
Conceitos básicos do sistema operacional IBM-AIX

Inicialização e remoção de variáveis


O armazenamento de variáveis ocorre da seguinte maneira:
- Variáveis locais criadas através da sintaxe nome=conteúdo. Possuem escopo local.
- Variáveis globais se já existirem, o seus conteúdos serão atualizados.

Lembre-se que para tornar uma variável de escopo global, o comando export deve ser usado,
podendo-se criar a variável e, ao mesmo tempo, exportá-la como neste exemplo genérico:

$ export nome=conteúdo

Para tornar uma variável imune a alteração ou deleção deve-se usar o comando readonly:

$ readonly nome

Para apagar uma variável use o comando unset:

$ unset nome

Uma das vantagens de manter-se uma variável somente-leitura é que, no caso de ocorrer, no shell
corrente, a alteração de uma variável de ambiente que não deveria ser alterada, ela estará
protegida contra essa alteração.
Variáveis somente-leitura não podem ser apagadas. Elas somente deixarão de existir no
momento em que for efetuado o logout da sessão de terminal ou se o programa que criou a
variável for encerrado, exceto no caso de um script-shell ter sido executado na mesma instância
de interpretador que iniciou a execução do script.

95
Conceitos básicos do sistema operacional IBM-AIX

Substituição de variáveis e exibição de seu conteúdo


Cada variável terá um valor a ela associado. Quando o nome de uma variável for precedido por
um sinal de $ (dólar) o Shell substituirá o parâmetro pelo conteúdo da variável. Este
procedimento é conhecido como substituição de variável. Uma das maneiras de exibirmos o
conteúdo de uma variável é usando o comando echo. Exemplos de uso da substituição de
variáveis:
$ echo $PATH
/usr/bin:/usr/contrib/bin:/usr/local/bin

$ ARQUIVO=/home/morro.txt
$ more $ARQUIVO

$ echo $HOME
/usr/user1
$ PATH=$PATH:$HOME:.
$ echo $PATH
/usr/bin:/usr/contrib/bin:/usr/local/bin:/usr/user1

$ TXT1="Casa da"
$ TXT2="Mae "
$ TXT3="Joana"
$ echo ${TXT1}da$TXT2$TXT3

Observe que no último exemplo foram usadas as chaves para circundar o nome da variável,
senão o shell poderia interpretar a variável como TXT1da caso as chaves não fosse usadas, o
que seria um nome de variável diferente de TXT1, gerando mensagem de erro de parâmetro não
definido, pois nesse caso a variável TXT1da não existe.

96
Conceitos básicos do sistema operacional IBM-AIX

Substituição de comandos
A substituição de comandos é usada para substituir um comando por seu resultado dentro da
mesma linha de comando. Isto será útil quando for necessário armazenar a saída de um comando
em uma variável ou passar essa mesma saída para outro comando. A sintaxe utilizada é:

$ $(comando)

A substituição de comandos permite que você capture o resultado de um comando e utilize-o


como um argumento para outro comando ou armazene sua saída em uma variável. Veja os
exemplos a seguir:

Armazenando o diretório corrente em uma variável;

$ DIR_ATUAL=$(pwd)

Passando uma lista de arquivos do comando ls para o comando cp;

cp $(ls *txt) /home/user1/backup

Passando a saída do comando date para o comando banner;

banner $(date)

Embora um par de crases seja válida para o Korn shell, recomenda-se usar a sintaxe $(), que é
a padronização POSIX, além de evitar a confusão com o mecanismo de quoting, que será
estudado mais adiante.

97
Conceitos básicos do sistema operacional IBM-AIX

Substituição do til (~)


A substituição do til é executada de acordo com as seguintes regras:

Um til sozinho ou em frente a uma / é substituído pelo conteúdo da variável HOME;


$ HOME=/home/user3
$ echo ~
$ ls –lF ~/file1 - Será substituído por /home/user3/file1

Um til seguido do sinal de + é substituído pelo valor da variável PWD;


$ PWD=/home/user3/sheet
$ ls –logt ~+/financ - Será substituído por /home/user3/sheet/financ

Um til seguido de um hífen (-) será substituído pelo valor da variável OLDPWD;
$ OLDPWD=/home/user3/mail
$ ls ~- - Será substituído por /home/user3/mail

98
Conceitos básicos do sistema operacional IBM-AIX

Passando variáveis para uma aplicação


Todas as aplicações ou comandos são arquivos armazenados no disco. A maioria dos comandos
padrão do sistema Unix estão armazenados sob o diretório /usr/bin. Quando ocorre a
solicitação de execução de um comando, o arquivo a ele associado deve ser localizado, o código
do programa carregado na memória e então o comando, ou aplicativo, é executado. Um comando
em execução é chamado de processo.
Quando o usuário se loga no sistema, o programa shell será carregado e um processo shell será
executado. Quando é digitado o nome de uma aplicação ou comando no prompt do shell, um
processo-filho é criado e executado através de uma das maneiras abaixo:
1- fork o ambiente do processo shell é duplicado, incluindo o código do programa, área
de dados global e área de dados local;
2 - exec o código da área de dados local do processo filho é substituída pelo código da área
de dados local da aplicação solicitada. O exec termina executando o processo da
aplicação solicitada. Isto acontece quando o prompt de comando volta a aparecer.
Enquanto o processo filho estiver sendo executado, o shell (pai) ficará inativo, aguardando que o
filho termine. Quando sua execução é encerrada, a memória usada pelo processo é liberada,
acordando o shell-pai que estará pronto para aceitar outra solicitação de comando. Você saberá
que o processo-filho terminou quando aparecer o prompt de comandos.

99
Conceitos básicos do sistema operacional IBM-AIX

Monitorando e gerenciando processos


A todo processo é atribuído um número único de identificação chamado de PID (process
identification). Para sabermos quais são os PID atribuídos aos processos usamos o comando ps
e suas opções. Veja a sintaxe do comando ps (padrão System V) e as opções mais usadas:

$ ps [-e] [-f] [-o formato]

-e Exibe todos os processos em execução, e não somente os do usuário


corrente.
-f Exibe mais detalhes dos processos, como número do processo-pai,
consumo de threads de CPU, terminal que disparou o processo, entre
outras informações.
-o formato permite que sejam selecionados somente parte das informações ou colunas
do comando ps a serem executados. Por exemplo, para mostrar somente
as colunas PID, PPID e COMMAND de todos os processos do sistema:
$ ps -ef -o pid,ppid,args
Veja o manual on-line para mais detalhes dos formatos usados pela opção
-o do comando ps.

A figura a seguir mostra a saída do comando ps com algumas opções:

Além da monitoração de processos, existem comandos que permitem que estes sejam
gerenciados (alterada a prioridade, cancelamento, execução em background, etc). Os seguintes
comandos serão discutidos com exemplos práticos:
kill [-9] job/processo cancelar um processo em execução
bg job e fg job colocar, respectivamente job em background e foreground
jobs listar os jobs que estão em execução
& coloca processos em background. Sempre colocado no final
da linha de comando

100
Conceitos básicos do sistema operacional IBM-AIX

Os processos filhos e o ambiente do shell

A figura acima ilustra que o processo-filho não pode alterar o ambiente do processo-pai.
Quando um comando ps -f é executado ele revela somente o shell de login e o comando ps
antes de terminar sua execução. Um valor foi atribuído a uma variável, que em seguida foi
exportada para o ambiente. O comando ksh é chamado, criando um processo-filho. Como o
ambiente é duplicado no momento da criação do processo-filho, pode-se verificar que a variável
criada no shell-pai apresenta o mesmo conteúdo no shell-filho.
Ao alterar o conteúdo da variável, este somente acontece no shell-filho. Quando encerramos o
shell-filho, pode-se verificar que a variável ainda possui o seu valor original, indicando que,
realmente, o shell-filho não pode alterar os valores do ambiente do shell-pai.
O AIX possui um processo especial, que inicia pelo PID 516. Este processo não consome
recursos do sistema operacional, sendo usado internamente apenas para mostrar a quantidade de
recursos livres no momento. Na versão 4 do AIX, o processo é identificado como kproc; na
versão 5 é identificado como wait.

101
Conceitos básicos do sistema operacional IBM-AIX

Módulo 8 - Exercícios de fixação


1 - Utilizando a substituição de comandos, atribua a data de hoje no formato dd/mm/yy à
variável TODAY. Consulte o manual on-line para verificar quais o formatos possíveis para a
exibição de datas e/ou horas.

2 - Liste o conteúdo do diretório de outro usuário usando a substituição do til

3 - Crie uma variável chamado MYNAME e armazene nela o seu primeiro nome. Como se mostra
o conteúdo da variável?

4 - Como fazer para que o Shell filho "enxergue" o conteúdo da variável MYNAME?

5 - Torne a variável TODAY somente-leitura. É possível excluir esta variável?

6 - Modifique seu prompt de comando, de modo que ele fique com a aparência exemplificada a
seguir:
usuário@servidor:/home/usuário =>

102
Conceitos básicos do sistema operacional IBM-AIX

Módulo 9 - Geração de nomes de arquivos


O shell fornece um recurso que economiza tempo de digitação dos nomes de arquivos. Esse
recurso chama-se geração de nomes de arquivos ou expansão de nomes de arquivos. Pode-se
encontrar nomes de arquivos que correspondam a um padrão, como por exemplo todos os
arquivos que terminem com o sufixo .TXT ou que iniciem por 2001. Você entra com caracteres
especiais que aceitam um ou mais caracteres em um nome de arquivo. O shell expandirá o
padrão do nome de arquivo solicitado nos nomes de arquivos correspondentes antes que o
comando seja executado.
O recurso de geração de nomes de arquivo é útil, pois as aplicações costumam definir
convenções de nomes para os seus arquivos. Depois de conhecer as convenções de nomes,
poderá ser usada a expansão de nomes de arquivos para acessar somente os arquivos que
possuam os padrões desejados.
Vamos conhecer a seguir a maneira de usar-se os caracteres de geração de nomes de arquivos.

103
Conceitos básicos do sistema operacional IBM-AIX

Caracteres geradores de nome de arquivos


Os caracteres especiais utilizados pelo shell para a expansão de nomes de arquivos são:
? corresponde a qualquer caractere simples, exceto quando um arquivo tem seu nome
iniciado por um ponto (.).

[ ] corresponde a uma classe de caracteres dentre os quais um deles corresponderá ao padrão


solicitado, excetuando-se os nomes que iniciarem-se por um ponto (.). Podemos usar
entre os colchetes:
- define uma faixa inclusiva;
! causa a negação de uma classe definida.

* corresponde a zero ou mais caracteres, excetuando-se os nomes que iniciarem-se por um


ponto (.).

O recurso de geração de nomes de arquivo é bastante usado com comandos de manipulação de


arquivo (ls, cp, rm, mv e more). O comando echo é bastante útil para verificar se o shell
expandirá o padrão solicitado. Isso é bastante útil para fazer um teste antes de usar comandos
destrutivos, como o comando rm por exemplo. Lembre-se de que uma vez removido, o arquivo
não poderá mais ser recuperado.
A seguir veremos os detalhes de cada um dos caracteres usados para a expansão de nomes de
arquivos.

Os arquivo iniciados por ponto (.)


Arquivos iniciados por ponto são arquivos ocultos, isto é, não podem, por exemplo, ser vistos em
uma listagem de arquivos a não ser que seja usada, no caso do comando ls, as opções -a ou –
A, ou que seu nome completo seja informado para o comando que irá atuar no arquivo.
Esses arquivos também são ocultos dos caracteres geradores de nomes de arquivos. Nunca será
gerada, pelos caracteres geradores de nomes, uma saída que contenha nomes de arquivos
iniciados por ponto. O ponto deverá ser informado explicitamente para que a correspondência
possa ser encontrada.

104
Conceitos básicos do sistema operacional IBM-AIX

Gerando nomes de arquivos com o caractere interrogação - ?


O ponto de interrogação faz correspondência com qualquer caractere simples, exceto se o nome
do arquivo iniciar por um ponto. Veja na figura abaixo o uso do caractere interrogação, sendo
utilizado o comando echo. Note que quando não há correspondência de nomes de arquivos, o
comando echo irá mostrar o próprio caractere de expansão.

105
Conceitos básicos do sistema operacional IBM-AIX

Gerando nomes de arquivo com os caracteres colchetes - [ ]


Os colchetes são utilizados para especificar uma classe de caracteres. Uma classe corresponde a
um único caractere contido na lista que estiver contida dentro dos colchetes.
Um ponto de exclamação como primeiro caractere dentro dos colchetes (! lê-se não) nega a
classe, isto é, significa para não relacionar os caracteres listados dentro da classe.
Se um hífen (- lê-se de/até) for colocado entre dois caracteres dentro dos colchetes, a classe
será todos os caracteres na seqüência da tabela ASCII - veja ASCII(5) - do primeiro até o último,
inclusive. Portanto, as classes [!123456789] e [!1-9] significam para negar a faixa de
dígitos de 1 a 9. Lembre-se que o ponto não pode corresponder a uma classe de caracteres,
devendo ser informado explicitamente.
Veja a figura abaixo com exemplos de uso dos colchetes na geração de nomes de arquivos:

106
Conceitos básicos do sistema operacional IBM-AIX

Gerando nomes de arquivos com o caractere asterisco - *


Um asterisco corresponde a zero ou mais caracteres, excetuando-se o ponto inicial como no caso
dos outros caracteres geradores anteriores. Na figura abaixo é demonstrado o uso do asterisco na
geração de nomes de arquivos.

107
Conceitos básicos do sistema operacional IBM-AIX

Módulo 9 - Exercícios de fixação


1 - Use o comando ls sob seu diretório $HOME e explique o resultado.

2 - Estando sob o seu diretório $HOME, qual seria o comando para:


- listar todos os nomes de arquivos que terminem em .TXT
- listar todos os arquivos .TXT que iniciem por DAT
- listar todos os arquivos que contenham a string file no nome
- listar todos os arquivos que terminem em a, c, b e t

3 - Crie um diretório chamado backup sob seu diretório $HOME. Mova para ele todos os arquivos
existentes no seu diretório $HOME.

4 - Crie um diretório com o nome de financ1. Descreva o que acontece quando é digitado o
comando:
$ cd financ*

5 - Crie um diretório chamado financ11. Repita o comando do exercício anterior e descreva o


que acontece.

108
Conceitos básicos do sistema operacional IBM-AIX

Módulo 10 - Uso do quoting


Vários caracteres no Unix tem um significado especial. Por exemplo o espaço é um delimitador
de comandos e argumentos. O carriage-return dá ao shell o sinal de que a linha foi introduzida e,
dependendo do caso, o shell a executa ou muda de linha.
Há casos em que você deseja que esses caracteres especiais sejam exibidos como são, ignorando
seu significado especial. Para que isso seja possível o Unix oferece um sistema que permite que
um ou mais desses caracteres tenham seu significado especial anulado. Este sistema é conhecido
com Quoting.

Caracteres usados no mecanismo de quoting


Nos itens a seguir será detalhado o funcionamento de cada caractere utilizado no mecanismo de
quoting do Unix, porém vamos apresentá-los com uma breve descrição:
\ (barra invertida) anula o significado especial do caractere imediatamente
seguinte;
" " (aspas duplas) anula o significado especial de alguns caracteres que
estejam envolvidos por elas;
' ' (aspas simples) anula o significado especial de todos os caracteres que
estejam envolvidos por elas.

109
Conceitos básicos do sistema operacional IBM-AIX

O quoting barra invertida - \


A barra invertida anula o significado especial do caractere imediatamente posterior a ela, sem
exceções. Veja o exemplo na figura a seguir:

110
Conceitos básicos do sistema operacional IBM-AIX

O quoting aspas duplas - " "


As aspas duplas anulam o significado especial de quaisquer caracteres que sejam envolvidos por
elas, exceto o caractere $, {variável} e $(comando). Veja os exemplos na ilustração a
seguir:

O quoting \ pode ser mostrado literalmente se for usado entre aspas duplas. Para conseguir tal
resultado, proceda o caractere \ por um espaço em branco.

111
Conceitos básicos do sistema operacional IBM-AIX

O quoting aspas simples - ' '


As aspas simples removem o significado especial de qualquer caractere que for colocado entre
elas, embora o caractere \ comporte-se de maneira estranha entre elas. Não há exceções. Veja os
exemplos na figura a seguir:

112
Conceitos básicos do sistema operacional IBM-AIX

Módulo 10 - Exercícios de fixação


1 - Utilizando o comando echo e o Quoting \ que produza a seguinte saída:
$1 hundred million dollars...and that´s wasn´t a good business!

2 - Atribua a string do exercício anterior à variável LONG_STRING.

3 - O que acontece quando é digitado banner good morning e banner "good


morning"?
Quantos argumentos foram passados aos comandos?

4 - O que acontece quando se digita echo '$IBM_BRAZIL' e echo "$IBM_BRAZIL"?

5 - Armazene na variável ASPA_DUPLA o caractere ". Verifique se ocorreu corretamente a


atribuição.

6 – Exiba as seguintes mensagens de maneira a obter-se a saída a seguir:


Este caractere anula o significado do caractere seguinte: \
Este par anula o significado de todos por ele envolvidos: ' '
E este aqui anula de todos, exceto \, $, $(comando) e {}: " "

113
Conceitos básicos do sistema operacional IBM-AIX

Módulo 11 - Introdução ao redirecionamento de entrada e saída


O shell possui a capacidade de redirecionar a entrada e a saída de um comando. A maior parte
dos comandos envia sua saída para a tela do terminal, como por exemplo os comandos date,
mail, banner, ls, etc. Outros comandos obtém a entrada a partir do teclado do terminal como
no caso dos comandos write, cat, mailx.
Para o Unix tudo é um arquivo, incluindo teclado e tela do terminal. A capacidade de
redirecionamento de entrada e saída permite que seja usado outro arquivo para gravar a saída, ou
ler a entrada, que não seja a tela do terminal ou o teclado.
Este módulo apresentará o funcionamento do redirecionamento de entrada e saída, além de
alguns programas-filtro do Unix, e o uso da capacidade de canalizar a saída de um comando para
outro.

114
Conceitos básicos do sistema operacional IBM-AIX

Entrada padrão, saída padrão e saída de erro padrão

Todas as vezes que um shell, ou qualquer outro processo é iniciado, são abertos automaticamente
três arquivos, com os nomes mostrados na figura acima.
O arquivo stdin é usado pelo shell para ler a entrada padrão. Ele é representado pelo descritor
0 da linguagem C e está associado ao teclado do terminal.
Os comandos que obtém sua entrada a partir da entrada padrão são mail, write e cat. Para
concluir a entrada deve ser pressionada a tecla f ou bD.
O arquivo stdin é usado pelo shell para gravar sua saída normal. Ele é representado pelo
descritos 1 da linguagem C e está associado à tela do terminal.
A maior parte dos comandos do Unix gera saída padrão, como por exemplo ls, date, cat,
banner, who, entre outros.
O arquivo stderr é usado pelo shell para a gravação das mensagens de erro. Ele está associado
ao descritor de arquivo 2 da linguagem C. Assim como o stdin, está associado à tela do
terminal. A maioria dos comandos Unix gerará uma saída de erro, geralmente em caso de erro de
sintaxe ou argumentos insuficientes, como os comandos cp, mv e rm, pois estes comandos
necessitam de nomes de arquivos para trabalharem corretamente. Caso não sejam informados os
argumentos mínimos necessários, os comandos retornam mensagens de erro específicas que
serão gravadas em stderr.

115
Conceitos básicos do sistema operacional IBM-AIX

Redirecionamento da entrada padrão - <


O caractere < é usado para redirecionar a entrada padrão de um comando usando um arquivo
como entrada. O fato de redirecionar a entrada de um comando não causa a alteração no arquivo
de entrada.
Comandos que usam a entrada padrão são caracterizados pela digitação do comando no prompt
do shell e o pressionamento da tecla f. O comando entra em estado de espera aguardando a
digitação das informações seguidas do pressionamento da tecla f. Ao término da digitação
deve-se pressionar f e em seguida bD para concluir a entrada padrão e o comando
processar as informações digitadas.
Muitos comandos que aceitam a entrada padrão também aceitam arquivos como argumentos. Um
exemplo, como na figura a seguir, é o comando cat que não somente opera com nomes de
arquivos como argumentos, mas também pode usar um arquivo com o redirecionamento da
entrada padrão. O comando mail também permite essa funcionalidade, pois no caso de ser
necessário enviar por correio eletrônico um arquivo texto muito grande, pode-se redirecionar a
entrada do comando mail usando o arquivo desejado como entrada.

116
Conceitos básicos do sistema operacional IBM-AIX

Redirecionamento da saída padrão - > e >>


Os comando que produzem a saída em tela podem ter sua saída redirecionada para um arquivo
através dos caracteres > e >>.
Se uma linha de comando terminar com o caractere > seguido de um nome de arquivo, a saída
gerada será gravada nesse arquivo. Se o arquivo não existir, será criado. Caso exista terá seu
conteúdo sobregravado, isto é, a saída gerada irá substituir completamente o conteúdo do arquivo
anterior.
Se houver a necessidade de acrescentar dados a um arquivo, deve ser usado os caracteres >>
(sem espaço entre os caracteres). Isso também criará um arquivo caso ele ainda não exista, mas
se existir o conteúdo da nova saída será acrescentado ao final do arquivo informado após os
caracteres de redirecionamento.
O shell não pode abrir um arquivo para redirecionamento de entrada e saída ao mesmo tempo.
Portanto, o arquivo de entrada e o arquivo de saída DEVEM ter nomes diferentes, pois o arquivo
será truncado no momento da gravação da saída, pois o arquivo é criado antes mesmo de
começar a receber dados para gravação. Isso fará com que o redirecionamento de saída também
falhe.
Veja na figura a seguir exemplos de redirecionamento de saída:

117
Conceitos básicos do sistema operacional IBM-AIX

Redirecionamento da saída de erro padrão - 2> e 2>>


Se um comando for digitado incorretamente, este gerará uma mensagem de erro.
Para que as mensagens de erro possam ser redirecionadas para um arquivo, usa-se o
redirecionamento de erro padrão, que são os caracteres 2> e 2>>.
Não deve haver espaço entre os caracteres. De modo semelhante ao redirecionamento de saída, o
arquivo pode ser criado caso não exista (2> e 2>>), pode ter seu conteúdo sobregravado (2>) ou
pode ser acrescentado ao final de um arquivo existente (2>>).
O redirecionamento de erro é muito útil do ponto de vista administrativo dos sistemas Unix, pois
pode-se gravar as mensagens de erro geradas por programas e aplicativos para posterior análise
dos problemas.
Veja na ilustração a seguir o uso do redirecionamento de erro padrão com alguns comandos do
Unix:

118
Conceitos básicos do sistema operacional IBM-AIX

Filtros e pipelines
Um filtro é um comando que lê a entrada padrão e produz uma saída padrão. O comando filtra o
conteúdo do arquivo, sem alterar o arquivo original, e gera a saída padrão. Se for usado
juntamente com o redirecionamento de saída pode-se processar a saída de outros comandos.
O sistema Unix mostra sua capacidade de filtrar o conteúdo de arquivos. Com os pipelines é
possível filtrar o resultado de um comando.
Os pipelines permitem a transferência de resultado de um comando diretamente como a entrada
de outro, eliminando a criação de um arquivo intermediário, pois esse arquivo intermediário
deverá ser eliminado quando o processamento terminar.
O caractere usado no pipeline é o | (lê-se pipe). Ele é utilizado para efetuar a ligação entre dois
comandos. A saída do comando à esquerda do pipe será usada como entrada para o comando à
direita do mesmo. Se um comando aparecer no meio de um pipeline, este deve estar apto a
receber a entrada padrão e gerar a saída padrão.

O comando more

O comando more é usado para exibir o conteúdo de um arquivo uma tela por vez. Este comando
é capaz de ler uma entrada padrão. Se ele aparecer à direita de um pipe, irá controlar a saída de
qualquer comando que gere uma padrão. Isto será útil quando tivermos pipelines que excedam a
capacidade da tela com saídas muito longas.
Veja abaixo o uso do comando more em um pipeline com o comando ls -l:

119
Conceitos básicos do sistema operacional IBM-AIX

O comando wc
O comando wc é usado para contar linhas, palavras e caracteres advindos da entrada padrão ou
de um arquivo. Sintaxe:
$ wc [-lwc] [arquivo1 arquivo2 ... arquivoN]

-l conta somente linhas


-w conta somente palavras
-c conta somente caracteres

Abaixo é ilustrado o uso do comando wc em redirecionamentos e pipelines:

120
Conceitos básicos do sistema operacional IBM-AIX

O comando sort

O comando sort é usado para classificar linhas de um arquivo, em ordem alfabética ou


numérica. Um campo específico de um arquivo pode ser usado como chave de classificação.
Sem nenhuma opção a classificação é feita com base na tabela ASCII.
Como é um filtro, ele também aceita entradas a partir da entrada padrão. A sintaxe do comando
sort é mostrada a seguir com algumas opções mais usadas. Recorra manual on-line para mais
detalhes e outras opções:
$ sort [-ndu] [-t delimitador] [-k #] [arquivo1 arquivo2 ... arquivoN]

-d ignora os caracteres que não sejam números, letras ou espaço


-n classificação numérica
-u classificação única. Oculta linhas repetidas
-t delimitador no caso de arquivos com delimitadores de campo, é usada para especificar
o caractere usado como separador de campo no arquivo sendo classificado
-k # onde # é o número campo que será usado na classificação

O shell não pode abrir o mesmo arquivo para entrada e saída. Entretanto o comando sort pode
ser usado com a seguinte sintaxe, para que o arquivo não classificado seja criado classificado
com o mesmo nome:
$ sort -o arquivo1 -n arquivo1

O comando acima fará com que arquivo1 seja classificado em ordem numérica e gravado com
o mesmo nome. Veja abaixo exemplos de saída do comando sort:

121
Conceitos básicos do sistema operacional IBM-AIX

O comando grep

O comando grep é usado para pesquisar padrões de texto dentro de um arquivo, exibindo os
resultados na saída padrão. Segue a sintaxe do comando grep com as opções mais usadas:
$ grep [-inv] [-E "padrão1|...|padrãoN"] arquivo1 arquivo2 ... arquivoN

-i ignora a diferença entre maiúsculas e minúsculas


-n numera cada linha exibida
-v não exibe o padrão informado
-E "padrão1|...|padrãoN" procura por qualquer um dos padrões separados pelo
caractere |

O comando grep é capaz de pesquisas complexas usando expressões regulares usando


caracteres especiais como os mostrados a seguir:
^ procura pelo padrão correspondente no início da linha
$ procura pelo padrão correspondente no final da linha
. procura por qualquer caractere isolado
* procura por zero ou mais ocorrências do padrão
[ ] especifica uma classe de caracteres

Para evitar problemas na interpretação de caracteres especiais através do shell, coloque a


expressão regular entre aspas.

122
Conceitos básicos do sistema operacional IBM-AIX

O comando cut

O comando cut é usado para extrair campos ou colunas de uma entrada padrão ou de um
arquivo. Sua sintaxe:

$ cut [-ccolunas|-ddelimitador -fcampos] arquivo1 arquivo2 ... arquivoN


-ccolunas
-ddelimitador
-fcampos

A figura a seguir ilustra os diversos modos de uso do comando cut:

123
Conceitos básicos do sistema operacional IBM-AIX

O comando tr

O comando tr possui a capacidade de transformar caracteres de um arquivo ou de um pipe,


gerando o resultado na saída padrão. Uma das maiores utilizações deste comando é a
transformação de letras maiúsculas em minúsculas e vice-versa, além da capacidade de remover
o excesso de espaços de uma expressão caractere.
Para a remoção de excesso de espaço nas linhas de um arquivo, a sintaxe é:
$ tr -s " " < arquivo

Para a transformação de caracteres maiúsculos em minúsculos, use:


$ tr '[A-Z]' '[a-z]' < arquivo

Veja, nos exemplos da figura a seguir, algumas saídas do comando tr (para mais detalhes,
consulte o manual on-line através do comando man tr):

124
Conceitos básicos do sistema operacional IBM-AIX

O comando tee
Quando usamos um pipeline, já sabemos que a saída de um comando é usada como entrada para
outro. Porém, às vezes há a necessidade de se gravar a saída do comando anterior antes que ela
seja submetida ao comando seguinte. O comando tee permite que a saída de um comando
usado em um pipeline seja desviado para um arquivo, antes que ele seja processado pelo
próximo comando.
Isto pode ser bastante útil em caso de processamentos que produzam os resultados em tela, mas
posteriormente poderíamos precisar destes resultados para análise.
Como comando tee (T em inglês) pode-se desviar a saída de um pipeline, anterior ao comando
tee, para um arquivo em disco. Depois a saída é enviada como entrada para o comando
seguinte, posterior ao comando tee. Outro comando tee pode ser encadeado no pipeline, e
assim por diante. Veja na figura a seguir o esquema de funcionamento do comando tee:

Veja a sintaxe do comando tee :


$ comando1|...|comandoN|tee [-a] arquivo1|comando3|...|comandoN

Se a opção –a não for especificada e o arquivo existir, ele será sobrescrito pelo novo conteúdo.
Caso esta opção seja especificada e o arquivo não existir, este será criado. Caso o arquivo exista,
o novo conteúdo será adicionado ao seu final (append).
A figura seguinte mostra o funcionamento do comando tee:

125
Conceitos básicos do sistema operacional IBM-AIX

Módulo 11 - Exercícios de fixação

1 - Redirecione a saída do comando date +%T para um arquivo chamado data.de.hoje.

2 - Adicione a saída do comando ls -logtF /etc/*d ao arquivo criado no exercício


anterior.

3 - Crie dois arquivos arq01 e arq02. Crie o arquivo arq.todos, que será a junção dos dois
arquivos criados.

4 - Anexe ao arquivo arq.todos a saída do comando rm sem qualquer argumento.

5 - Mostre o conteúdo do arquivo /etc/passwd por ordem numérica de identificação de


usuário. Exiba somente os campos nome do usuário e diretório $HOME.

6 - Usando redirecionamento e filtros, execute as seguintes tarefas:


- quantidade de usuários logados no sistema;
- classifique o arquivo /etc/group por nome de grupo em ordem inversa;
- execute novamente o item anterior, porém grave a saída não classificada no arquivo
grupos.fora.de.ordem;
- transforme todos os caracteres alfabéticos do arquivo criado no item anterior em
maiúsculas.

126
Conceitos básicos do sistema operacional IBM-AIX

Módulo 12 – Efetuando backup de arquivos


Uma parte importante no sistema operacional Unix e que nunca deve ser esquecida é a
necessidade de possuir cópias de segurança de arquivos, sejam eles arquivos pertencentes ao
sistema operacional ou sejam eles arquivos de dados diversos.
Os comandos a seguir serão usados para efetuar backup de arquivos, geralmente armazenados
em fita magnética, e que poderão ser recuperados em caso de necessidade ou de uma
emergência.
No caso de dispositivos de fita, os nomes podem variar de acordo com a implementação do Unix
adotada. Portanto, consulte o administrador do sistema para maiores detalhes.
Os comandos apresentados a seguir (tar e cpio) permitem que sejam feitos backups de
arquivos de até 2 GB de tamanho máximo (largefile). No caso do comando tar, em
algumas implementações Unix, esse tamanho pode ser de até 8 GB. Verifique com o
administrador do sistema, ou no manual on-line, para maiores detalhes sobre o suporte a largefile
dos comandos cpio, tar.

127
Conceitos básicos do sistema operacional IBM-AIX

O comando tar
O comando tar pode ser usado tanto para efetuar backups de arquivos em fita magnética como
pode ser usado para empacotar vários arquivos em um único (geralmente usando o sufixo .TAR
ou .tar). Existem outras opções para trabalhar com o comando tar, porém neste curso serão
apresentadas as mais utilizados (consulte o manual on-line para mais detalhes através do
comando man tar).
Sintaxe:
$ tar -c|t|x –f ArchiveFile/dispositivo arquivos
-c efetua a gravação no ArchiveFile ou dispositivo
-t efetua a leitura do ArchiveFile ou dispositivo
-x efetua a extração do ArchiveFile ou dispositivo
-f ArchiveFile/dispositivo especifica um nome de arquivo ou dispositivo onde
os arquivos serão armazenados ou de onde serão
lidos/restaurados. No caso de um nome de arquivo o
sufixo pode ser qualquer um, mas costuma-se usar
.TAR por convenção. No caso de o destino ser o
nome de um dispositivo de fita magnética, o nome
pode variar de acordo com a implementação Unix,
porém estes se encontram no diretório /dev.
Exemplos:
- para criar um arquivo chamado bkpetc_3107.TAR contendo todo o conteúdo do diretório
/etc digite:
$ tar -cvf bkpetc_3107.TAR /etc

Criar um backup dos arquivos de hoje em um arquivo de backup com timestamp:


tar -cvf backup.$(date +"%Y%m%d.%H%M%S").tar $(ls -la|\
grep -v ^d|grep "$(date +"%b %e")"|awk '{print $9}')

- supondo que exista em sua implementação Unix um dispositivo chamado /dev/rmt2h, o


comando acima ficaria:
$ tar -cvf /dev/rmt0 /etc

- para restaurar o conteúdo do arquivo bkpetc_3107.TAR digite:


$ tar -xvf bkpetc_3107.TAR

- para visualizar o conteúdo da fita /dev/rmt0 digite:


$ tar -tvf /dev/rmt0

128
Conceitos básicos do sistema operacional IBM-AIX

O comando cpio

O comando cpio usa a entrada padrão e o redirecionamento de entrada/saída para a execução de


backups e restores. Geralmente é usado em conjunto com o comando find, que gera a lista de
arquivos e a passa para o comando cpio para que seja feito o backup em fita.
Para executar um backup do diretório /usr na fita /dev/rmt2 use a seguinte sintaxe:

$ find /usr -print|cpio -ocvdum >/dev/rmt2

Para executar visualizar o conteúdo da fita onde o backup foi armazenado use:

$ cpio -icvtdum </dev/rmt2

Para restaurar os arquivos /usr/bin/ls e /usr/bin/mv, use a sintaxe:

$ cpio -icvdum "/usr/bin/ls" "/usr/bin/mv" </dev/rmt2

Os nomes de arquivos a serem restaurados devem ser colocados entre aspas, senão o restore não
ocorrerá.

Segue a descrição das opções usadas pelo comando cpio:


-o causa a gravação dos arquivos em fita (backup)
-i causa a leitura dos arquivos da fita (restore)

As demais opções que seguem -o ou -i efetuam as seguintes operações para o comando cpio:
c grava a informação de cabeçalho do backup em formato ASCII, para fins de portabilidade
v permite que seja visualizado quais arquivos já foram copiados para a fita (verbose)
d cria diretórios quando necessário
u efetua a cópia incondicionalmente. Utilizada com a opção -i, permite que todos os
arquivos que são restaurados sobreponham os arquivos existentes. Se não for especificada
esta opção, os arquivos mais novos não são substituídos pelos arquivos mais antigos.
m permite que as datas e horas de criação dos arquivos sejam mantidas. Esta opção não
afeta diretórios.

O comando cpio pode ser usado também para efetuar uma cópia completa de uma árvore de
diretórios. Para isso usa-se a opção -p. Por exemplo, para copiar o todo o conteúdo do diretório
/oracle/tablespace para o diretório /oracle/backup (o diretório de destino deve
estar previamente criado), mantendo os caminhos relativos da origem, use:

129
Conceitos básicos do sistema operacional IBM-AIX

$ find /oracle/tablespace -print |cpio -pdvu /oracle/backup

O comando acima fará a cópia em modo verbose (-v), criando os caminhos de diretórios (-d) e
efetuando uma cópia incondicional (-u), isto é, se existirem arquivos com o mesmo nome, serão
sobrescritos.

130
Conceitos básicos do sistema operacional IBM-AIX

O comando mt

O comando mt é usado para a manipulação da mídia magnética da unidade de fita, isto é, este
comando é usado para fazer a movimentação da fita existente na unidade. Usa-se este comando
para rebobinar, avançar, voltar, ejetar e mostrar o status do dispositivo.
A sintaxe do comando mt é:

$ mt [-t device] comando valor

-t device indica dispositivo que será manipulado. Se não for especificado, assumirá o nome
armazenado na variável de ambiente TAPE. Se esta não existir, assumirá
/dev/rmt12. Os nomes de dispositivos podem variar de acordo com a
implementação Unix que estiver sendo utilizada. Um exemplos é o caso do
Compaq Tru64 que a primeira unidade de fita, usando compressão de hardware, é
identificada como /dev/rmt0h. No IBM AIX esta mesma unidade denomina-se
/dev/rmt0. No HP-UX, a primeira unidade de fita, também com compressão de
hardware ativada, pode ser denominada /dev/rmt/0m ou
/dev/rmt/c0t0d0BEST. Verifique com o administrador qual a denominação
do dispositivo de fita a ser usado em seu sistema.
Em algumas implementações Unix, a opção -f é substituída pelo opção -t.

comando ação a ser efetuada na mídia inserida na unidade. Os seguintes comandos são
válidos:
eof grava uma marca de final de arquivo na posição atual da mídia;
fsf avança a quantidade de volumes especificada em valor;
bsf volta a quantidade de volumes especificada em valor;
rewind rebobina a fita ignorando a quantidade especificada em valor;
offline rebobina a fita e a ejeta da unidade;
status mostra informação sobre o status da unidade

Exemplos de uso do comando mt para efetuar backup e restore de arquivos:


O comandos a seguir efetuam o backup dos arquivos /etc, /usr e /software usando o
comando cpio. Assume-se a unidade /dev/rmt0, desativando o auto-rewind e que esteja
ativada a compressão por hardware (caso não esteja ativada, deve-se criar um arquivo de backup,
compactar e enviar este arquivo para a fita pelo comando cpio):

$ find /etc | cpio -ocvdum >/dev/rmt0.1


$ find /usr | cpio -ocvdum >/dev/rmt0.1
$ find /software | cpio -ocvdum >/dev/rmt0.1

131
Conceitos básicos do sistema operacional IBM-AIX

Supondo que seja necessário efetuar o restore dos arquivo /usr/bin/vi e /usr/bin/ls
em seus diretório de origem, seriam necessários os seguintes comandos:
$ mt -t /dev/rmt0.1 fsf 1
$ cd /
$ cpio -icvdum "/usr/bin/vi" "/usr/bin/ls" </dev/rmt0.1

Para ejetar a fita após o término do backup, ou restore, use o comando a seguir:
$ mt -t /dev/rmt0 offline

Para obter informações sobre a unidade de fita e da mídia nela inserida, digite:
$ mt -t /dev/rmt0 status

As informações de saída do comando mt status podem variar de acordo com a


implementação Unix utilizada.

132
Conceitos básicos do sistema operacional IBM-AIX

Apêndice A - Referência rápida de comandos do Unix


awk linguagem de programação para tratamento de padrões de texto e
expressões regulares
banner exibe textos em letras grandes.
bg envia um job para segundo plano.
cat exibe o conteúdo do arquivo especificado.
cd muda de diretório ou vai para o diretório $HOME.
chgrp altera o acesso de um grupo a um determinado arquivo.
chmod alteras as permissões de acesso de um arquivo.
chown permite que seja alterada o proprietário de um arquivo e, opcionalmente
seu grupo.
clear limpa a tela do terminal.
cksum Verifica o CRC (Cyclical Redundance Check) de arquivos
compress permite que arquivos sejam compactados, ocupando menos espaço em
disco, ou para ocupar menos espaço em mídia de backup. Algumas
implementações Unix possuem os comandos gzip, bzip2, zip e pack,
que possuem função semelhante.
cp copia arquivos.
cpio permite que sejam executados backups de árvores de diretórios ou que
sejam feitas cópias de diretórios para outros subdiretórios.
crontab agendamento de tarefas do usuário.
cut recorta colunas ou campos de uma linha de texto.
date exibe a data e hora do sistema.
df mostra o número de blocos de disco e i-nodes livres.
du mostra um resumo de utilização de disco.
echo usado para exibir textos ou variáveis.
exit encerra a sessão de terminal (logout).
fg traz um job para primeiro plano.
file mostra o tipo de arquivo (binário, texto, etc.).
find permite que seja localizado um arquivo em um determinado diretório.
ftp permite fazer a transferência de arquivos entre computadores.
grep procura de expressões regulares em um arquivo.
head exibe as linhas do início de um arquivo.
id exibe a identificação do usuários corrente e os grupos a que ele está
associado.
jobs mostra os jobs que estão sendo executados na sessão corrente.

133
Conceitos básicos do sistema operacional IBM-AIX

kill usado para enviar sinais para processos e, opcionalmente, para cancelá-los.
ln cria um novo nome apontando para um arquivo existente (link).
logname mostra o nome que o usuário usou para se logar. Não é afetado pelo
comando su.
ls exibe uma listagem de arquivos. De acordo com as opções, a listagem é
mostrada em diferentes formatos.
mail / mailx permite que se envie mensagens eletrônicas off-line, ou que sejam lidas as
que foram recebidas.
man exibe a página o manual on-line para um comando.
mesg mostra o status para recebimento de mensagens ou o altera.
mkdir cria diretórios.
more exibe o conteúdo do arquivo uma tela por vez.
mv move arquivos entre diretórios ou renomeia-os.
newgrp altera a identificação de grupo.
nice executa um processo em prioridade mais baixa.
nohup permite a execução de processos sem que sejam interrompidos, mesmo
que a sessão de terminal seja encerrada.
passwd altera a senha do usuário correntemente logado.
ps mostra processos em execução.
pwd exibe o diretório corrente.
rm apaga arquivos e, opcionalmente, uma árvore de diretórios.
rmdir remove diretórios.
sed editor de fluxo não interativo.
sleep suspende a execução por uma determinada quantidade de segundos.
sort classifica arquivos em ordem alfabética ou numérica.
stty exibe a configuração do terminal atual e o mapeamento do teclado.
su altera a identificação de usuário.
tail exibe as linhas do final de um arquivo.
tar permite fazer backup de arquivos agrupando-os em um archive-file ou,
opcionalmente, para uma unidade de fita.
tee desvia o fluxo de um pipeline para um arquivo.
touch cria um arquivo vazio ou atualiza o registro de tempo de um arquivo
existente.
tr transformação de caracteres.
tty informa qual o arquivo de terminal usado pela sessão corrente.

134
Conceitos básicos do sistema operacional IBM-AIX

umask altera a máscara padrão de geração de permissões para novos arquivos ou


mostra a máscara atual.
uncompress permite que arquivos que foram compactados anteriormente com o
comando compress sejam descompactados, retornando ao seu tamanho
original. Algumas implementações Unix possuem os comandos gunzip,
unzip e unpack, que possuem função semelhante.
uniq mostras as linhas que estão repetidas em um arquivo.
vi editor de texto.
wait aguarda que um processo em background termine antes de continuar.
wc mostra quantidade de linhas, palavras e caracteres de um arquivo.
who exibe uma listagem de usuários logados no sistema.
write envia uma mensagem para um usuário, permitindo comunicação on-line e
interativa.
xargs constrói uma lista de argumentos e executa o comando.

135
Conceitos básicos do sistema operacional IBM-AIX

Apêndice B - Endereços da Internet referentes a Unix

Manual do IBM-AIX 5.3


http://publib.boulder.ibm.com/infocenter/pseries/index.jsp?topic=/com.ibm.aix
.doc/infocenter/base/aix53.htm

Manual da linguagem AWK


www.cs.ruu.nl/docs/vakken/st/nawk/nawk_toc.html

Unix - Perguntas e respostas sobre programação shell-Script


www.klingon.com.br/unix/unix.html#Shell

Unix - Perguntas e respostas sobre análise de performance


www.klingon.com.br/unix/unix.html#Anali

Unix - Perguntas e respostas sobre comunicação


www.klingon.com.br/unix/unix.html#Comun

Dicas diversas sobre Unix


www.dicas-l.unicamp.br

136