Apostila LINUX

Apostila LINUX

(Parte 1 de 7)

Sumario

1.1 Linux1
1.2 A historia do Linux2
1.3 Caracterısticas2

1 Introducao ao sistema operacional Linux 1

2.1 Ligando seu computador com o Linux5
2.2 Conta de usuario5
2.3 Conectando-se ao sistema6
2.4 Primeiros passos7
2.4.1 Quem sou eu? Onde estou?7
2.4.2 Mudanca de Senha8
2.5 Exercıcios8

2 Como e o Linux 5

3.1 Arquivos9
3.2 Diretorios10
3.3 Sintaxes1
3.4 Manipulando diretorios1
3.4.1 Criando e removendo diretorios13
3.4.2 A arvore de diretorios do Linux14
3.5 Manipulando arquivos17
3.5.1 Criando arquivos17
3.5.2 Arquivos ocultos18
3.5.3 Copiando arquivos18
3.5.4 Mudando o nome e o lugar de arquivos e diretorios19
3.5.5 Removendo arquivos19
3.5.6 Verificando o tipo de arquivos19
3.5.7 Vendo o conteudo de arquivos texto20
3.6 Permissoes20
3.6.1 Os tipos de permissoes de acesso20
3.6.2 Alterando permissoes21
3.6.3 Usando valores octais2
3.6.4 Estabelecendo as permissoes padrao23
3.7 Links23
3.8 Montando um sistema de arquivos24
3.8.1 mount24
3.8.2 umount24
3.9 Exercıcios26

3 Conceitos basicos 9

4.1 O Projeto de Documentacao do Linux27
4.1.1 HOWTOs e mini-HOWTOs27
4.1.2 Os livros LDP28
4.1.3 As paginas de manual28

4 Para saber mais 27 i

4.2 Encontrando programas para o Linux28
4.3 Bookmarks28

i SUMARIO

5.1 Expansao31
5.1.1 Metacaracteres31
5.1.2 Edicao32
5.2 Aliases34
5.3 Variaveis de ambiente34
5.3.1 Variaveis de Prompt35
5.3.2 Outras variaveis37
5.4 Arquivos .bash profile, .bash logout e .bashrc38
5.5 Redirecionando entradas e saıdas38
5.5.1 Redirecionamentos destrutivo e nao-destrutivo40
5.5.2 Usando Pipes40
5.6 Exercıcios41
6.1 Filtros43
6.1.1 diff43
6.1.2 grep43
6.2 Manipulacao da fila de impressao4
6.2.1 lpr4
6.2.2 lpq4
6.2.3 lprm45
6.3 Gerencia de processos45
6.3.1 ps45
6.3.2 kill46
6.3.3 Foreground e Background46
6.4 Compactacao47
6.4.1 gzip47
6.4.2 zcat e gunzip47
6.4.3 tar48
6.5 Comandos uteis49
6.5.1 split49
6.5.2 df49
6.5.3 du49
6.6 Comandos de Busca50
6.6.1 find50
6.6.2 locate50
6.6.3 which50
6.7 Exercıcios50

6 Comandos avancados 43

7.1 Conceitos53
7.2 Inıcio do vi54
7.3 Insercao de texto54
7.4 Apagando textos5
7.5 Alterando textos56
7.6 Comandos de movimentacao56
7.7 Salvando arquivos e saindo do vi56
7.8 Editando outro arquivo57
7.9 Incluindo outros arquivos57
7.10 Mudando de janela dentro do VI57
7.1 Executando comandos shell58

SUMARIO i

8.1 Buffers61
8.2 Layout da tela61
8.3 Linha de modo61
8.4 Linha de eco62
8.5 Comandos62
9.1 Introducao65
9.2 O servidor X-Window6

iv SUMARIO iv SUMARIO

Introducao ao sistema operacional Linux

Um Sistema Operacional (SO) e, basicamente, um conjunto de programas cuja funcao e gerenciar todos os recursos disponibilizados por um ou mais computadores. Assim, os programas (aplicativos) interagem com os usuarios utilizando-se destes recursos. Entre as tarefas realizadas por um SO podemos citar:

• Controlar os varios dispositivos eletronicos ligados ao computador, tais como discos, impressoras, memoria, etc.

• Compartilhar o uso de tais dispositivos e demais servicos entre varios usuarios ou programas como por exemplo arquivos ou impressoras em uma rede.

• Fornecer controle de acesso e seguranca aos recursos do sistema.

Os primeiros computadores desenvolvidos eram maquinas muito simples e por isto nao possuıam um SO. Devido a esse fato, as tarefas que hoje sao feitas pelos SO’s eram deixadas a cargo do programador, o que mostrava-se muito desconfortavel. Atualmente, uma maquina sem um SO e inconcebıvel. Entre os mais utilizados hoje em dia, podemos citar: MS-DOS, Windows (95, 98, NT), Unix, Mac-OS e, claro, o Linux.

O que quer dizer Linux? Uma definicao tecnica seria: Linux e um kernel de sistema operacional de livre distribuicao, gratuito, semelhante ao Unix.

O kernel, ou nucleo, e a parte do SO responsavel pelos servicos basicos e essenciais dos quais as ferramentas de sistema e os aplicativos se utilizam. Entretanto, a maioria das pessoas usa o termo Linux para se referir a um SO completo, baseado no kernel Linux. Assim chegamos a uma outra definicao:

Linux e um sistema operacional de livre distribuicao, semelhante ao Unix, constituıdo por um kernel, ferramentas de sistema, aplicativos e um completo ambiente de desenvolvimento.

Outro termo muito empregado e distribuicao, que consiste em um kernel Linux e uma colecao de aplicativos e ferramentas de sistema. Existem varias distribuicoes do Sistema Operacional Linux e a diferenca entre cada uma delas encontra-se no conjunto de aplicativos e ferramentas de sistema, no programa de instalacao, na documentacao e, por fim, na versao do kernel Linux. Dentre as principais distribuicoes Linux, podemos citar Red Hat, Debian, Slackware, Caldera e Conectiva, sendo esta ultima uma distribuicao brasileira1 que possui todos os modulos de instalacao e toda a documentacao em portugues.

O Linux e o resultado do trabalho de milhares de colaboradores, universidades, empresas de software e distribuidores ao redor do mundo. Aliado a isso, o fato de ser um sistema aberto, de livre distribuicao, vem

1http://w.conectiva.com.br

2 CAPITULO 1. INTRODUC AO AO SISTEMA OPERACIONAL LINUX proporcionando ao Linux um rapido desenvolvimento e uma agil atualizacao de softwares. A maior parte do seu desenvolvimento e feita sob o projeto GNU2 da Free Software Foundation, o que torna obrigatorio a distribuicao de todo o seu codigo fonte. Assim, qualquer pessoa pode fazer as modificacoes que lhe forem convenientes, alem de acrescentar melhorias aos softwares que seguem essa linha de desenvolvimento. A unica exigencia e que o codigo alterado permaneca de domınio publico.

Antes de iniciarmos o nosso estudo sobre o Linux, e necessario conhecer um pouco mais sobre sua origem.

1.2 A historia do Linux

O kernel do Linux foi originalmente escrito por Linus Torvalds, do Departamento de Ciencia da Computacao da Universidade de Helsinki, Finlandia, com a ajuda de varios programadores voluntarios atraves da Internet.

Linus Torvalds iniciou o kernel como um projeto particular, inspirado em seu interesse no Minix, um pequeno sistema Unix desenvolvido por Andy Tannenbaum. Ele se limitou a criar, em suas proprias palavras, “a better Minix than Minix”3. Apos trabalhar sozinho por algum tempo em seu projeto, ele enviou a seguinte mensagem para o newsgroup comp.os.minix:

Voce esta ansioso por melhores dias do Minix 1.1, quando homens serao homens e escreverao seus proprios “drivers” de dispositivo? Voce esta sem um bom projeto e ansioso para comecar a trabalhar em um S.O. o qual voce possa modificar de acordo com suas necessidades? Voce fica frustrado quando tudo funciona em Minix? Chega de atravessar noites para obter programas que executam corretamente? Entao esta mensagem pode ser exatamente para voce.

disposto a colocar os fontes para ampla distribuicao. Ele esta na versao 0.02contudo obtive

Como eu mencionei ha um mes atras, estou trabalhando em uma versao independente de um S.O. similar ao Minix para computadores AT386. Ele esta, finalmente, proximo do estagio em que podera ser utilizado (embora possa nao ser o que voce esteja esperando), e eu estou sucesso executando bash, gcc, gnu-make, gnu-sed, compressao, etc. nele.

No dia 5 de outubro de 1991 Linus Torvalds anunciou a primeira versao “oficial” do Linux, que recebeu versao do kernel 0.02. Desde entao muitos programadores tem respondido ao seu chamado, e tem ajudado a fazer do Linux o sistema operacional que e hoje.

O Linux e um sistema operacional livre, gratuito e possui todas as caracterısticas presentes nos sistemas operacionais modernos. Eis algumas destas:

Multiplataforma: O Linux opera em computadores das famılias Intel (386, 486, Pentium, etc) e compatıveis (Cyrix e AMD), Motorola M680xx (Atari, Amiga e Macintosh), Alpha (DEC), Sparc (Sun), MIPS (Silicon Graphics) e Power PC. Novas arquiteturas estao sendo incorporadas com o seu desenvolvimento.

Multiprocessado: Possui suporte a computadores com mais de um processador. Multitarefa: Varios programas podem ser executados ao mesmo tempo. Multiusuario: Varios usuarios podem operar a maquina ao mesmo tempo.

Alem destas, o Linux apresenta ainda memoria virtual, bibliotecas compartilhadas (de ligacao dinamica), carregamento de drivers (modulos) sob demanda, suporte nativo a redes TCP/IP, facil integracao com outros sistemas operacionais e padroes de rede, nomes longos de arquivos, protecao de acesso a recursos compartilhados, suporte a varios idiomas e conformidade com padroes internacionais. Existem ainda varios ambientes graficos que se utilizam do mouse, ıcones e janelas (semelhantemente ao Windows) ao inves das famigeradas linhas de comando.

2http://w.gnu.org 3“Um Minix melhor que o Minix.”

O Linux e um sistema operacional bastante atrativo nao apenas por ser gratuito mas por outros motivos tambem. O fato de ser baseado nos sistemas operacionais Unix – sistemas considerados maduros, com mais de duas decadas de desenvolvimento – contribuiu muito para a sua estabilidade e confiabilidade. Isto e, um Linux configurado corretamente nao “trava”. Chegamos entao a outro fator muito importante em favor do sistema: o fato de poder ser configurado e adaptado segundo a necessidade de cada um (apesar de, muitas vezes, isso nao ser uma tarefa simples). Muitos ja devem ter ouvido alguem dizer: “O meu Linux e melhor que o seu!”

Alem disso, pode-se instalar num computador o Linux juntamente com outro sistema operacional. Por exemplo, pode-se instalar Linux em uma maquina que ja contenha Windows e utilizar os dois sistemas, sem que nenhum dado seja perdido. Ou seja, o Linux consegue acessar todos os arquivos usados no Windows.

4 CAPITULO 1. INTRODUC AO AO SISTEMA OPERACIONAL LINUX 4 CAPITULO 1. INTRODUC AO AO SISTEMA OPERACIONAL LINUX

Capıtulo 2 Como e o Linux

2.1 Ligando seu computador com o Linux

Quando voce liga seu computador, este realiza alguns testes e entao comeca a executar o sistema operacional. No Linux, a primeira parte do sistema a ser carregada na memoria e executada e o kernel. Este, entao, detecta e configura os dispositivos eletronicos conectados ao computador. Apos isso, alguns programas de sistema que prestam servicos basicos, como acesso a rede, sao tambem inicializados. Ao longo deste processo, o qual recebe o nome de boot do sistema, ou simplesmente boot, varias mensagens sao arquivadas e mostradas na tela para informar ao administrador do sistema do sucesso ou falha nesta operacao. Apos o boot, uma mensagem de saudacao1 seguida da palavra login aparece no vıdeo:

Bem-vindo ao sistema Linux 2.2.10 login: Chegando a esse estagio, o sistema aguarda a conexao (login) de um usuario previamente cadastrado.

2.2 Conta de usuario

Para realizar o seu login, e necessario que o usuario possua uma conta valida na maquina em questao (para obter uma conta, procure o administrador do sistema). Uma conta nada mais e que um cadastro eletronico que indica quem sao as pessoas aptas a utilizar o sistema. Esse cadastro contem as seguintes informacoes:

Numero de identificacao: Numero inteiro unico para cada usuario do sistema, tal como um RG ou

CPF. Tambem denominado user id ou UID (user identification), serve para identificar cada um dos usuarios;

Nome de usuario: Tambem unico para cada usuario, e formado por apenas uma palavra, sem espacos em branco, e possui a mesma utilidade que o UID. A diferenca esta no fato de que enquanto a maquina trabalha melhor com numeros (UIDs), nos humanos – e tambem o administrador do sistema – nos saımos melhor com nomes. Este campo tambem recebe a denominacao de username ou login;

Identificacao de grupo: Um grupo agrega usuarios que realizam tarefas semelhantes ou que possuem permissoes de acesso semelhantes. O group id (GID) e o numero inteiro que identifica o grupo ao qual o usuario pertence2;

Senha: Constitui o mecanismo de seguranca de acesso a conta do usuario;

Nome completo: Nome completo do usuario ou descricao da finalidade da conta;

1Esta mensagem pode ser alterada, pois muito do Linux e configuravel. 2Cada usuario pode fazer parte de varios grupos.

Diretorio pessoal: Tambem denominado diretorio home, e o diretorio pessoal do usuario e reservado para que este armazene os seus arquivos;

A ultima informacao contida neste cadastro e o nome do programa executado quando o usuario se conecta ao sistema. Geralmente e o nome de um tipo interpretador de comandos.

Um programa interpretador de comandos (shell) fornece uma interface (meio de comunicacao) simples entre o usuario e o computador. Como um interprete que fica entre duas pessoas que falam lınguas diferentes, o shell situa-se entre o usuario e o kernel. Ele “diz” ao kernel para fazer o trabalho que o usuario solicitou, eliminando a necessidade deste ultimo ter que falar diretamente com o kernel em uma linguagem que ele entenda.

O shell tambem e uma linguagem de programacao completa. Possui variaveis, construcoes condicionais e interativas, e ambiente adaptavel ao usuario. Existem varios tipos de shells sendo que os mais conhecidos sao o Bourne Again Shell (bash) e o C Shell (csh). O shell preferido varia de usuario para usuario. Alguns preferem a sintaxe com caracterısticas mais avancadas do bash enquanto que outros preferem a sintaxe mais estruturada do csh3. No capıtulo 5 veremos mais detalhes do bash.

2.3 Conectando-se ao sistema

A partir do momento em que o usuario obtem uma conta, ele ja pode se conectar (“logar”) no sistema. O processo de “login” e simples. Na tela da mensagem de saudacao, apos a palavra “login”, o usuario deve digitar o seu nome de usuario (username ou login), fornecido pelo administrador, e pressionar a tecla ENTER (ou RETURN):

Bem-vindo ao sistema Linux 2.2.10 login: joao Password:

O sistema aguardara, entao, que o usuario digite a sua senha4 (password) e pressione ENTER. Enquanto o usuario digita a senha, os caracteres que constituem-na nao aparecem na tela por motivo de seguranca. Fornecida a senha, o sistema consultara o cadastro de usuarios procurando pelo nome de usuario fornecido para entao conferir a validade da senha digitada. Caso esta nao seja a mesma do cadastro ou o nome de usuario fornecido nao seja encontrado, uma mensagem de login invalido sera mostrada e o processo sera reiniciado:

Bem-vindo ao sistema Linux 2.2.10 login: joao Password: Login incorrect login:

Se o nome de usuario (login) e senha forem validos, o sistema inicilizara a execucao de um interpretador de comandos ou de um ambiente grafico e o usuario podera utilizar os aplicativos e os recursos computacionais disponibilizados pela maquina. O processo de login tera sido concluıdo com sucesso se o usuario estiver vendo na tela o prompt do shell, em geral um “$”5.

Quando o usuario terminar o seu trabalho, e muito importante que este realize o processo de desconexao. Por motivos de seguranca, nunca se deve abandonar a maquina com uma conta “aberta”. Para realizar o processo de desconexao basta digitar logout e pressionar ENTER.

$ logout

Bem-vindo ao sistema Linux 2.2.10 login:

3Entretanto, para o uso de comandos mais comuns o tipo de shell usado nao importa, pois a sintaxe e basicamente a mesma e as diferencas so comecam a aparecer em aplicacoes mais avancadas. 4A princıpio, o usuario recebe uma senha criada pelo administrador do sistema. Contudo, esta senha pode ser alterada pelo proprio usuario. 5Como quase tudo no Linux, o prompt pode ser configurado. Veremos como fazer isso na secao 5.3.1

2.4. PRIMEIROS PASSOS 7

Para realizar o processo de desconexao no modo grafico, clique com o botao direito do mouse sobre qualquer area e escolha a opcao Window Manager e em seguida Exit.

A mensagem de saudacao aparece novamente, deixando a sistema disponıvel para outro usuario. No proximo capıtulo, veremos o que podemos fazer uma vez “logados” no sistema.

2.4 Primeiros passos

Obtido sucesso no processo de login, o sistema executara o interpretador de comandos do usuario ou um ambiente grafico.

No modo grafico os comandos serao digitados em um emulador de terminal. Cada ambiente possui um processo para a abertura. No Window Maker basta apertar o botao direito do mouse sobre qualquer area da tela e escolher no menu a opcao XShells e em seguida XTerm.

No modo texto, na tela sera mostrando o prompt, indicando que o usuario ja pode digitar um comando:

O prompt pode ser constituıdo ainda de informacoes como nome de usuario, nome da maquina, diretorio que em o usuario esta trabalhando, etc...Na secao tian van Kaick vankaick@hotmail.com¿refvarprompt veremos como configura-lo. Por hora, adotaremos apenas o cifrao ($).

Ao se digitar um comando e teclar ENTER, o interpretador executara esse comando. A seguir veremos como descobrir quais informacoes o sistema contem sobre a conta do usuario e sobre a maquina.

2.4.1 Quem sou eu? Onde estou?

O comando whoami6 mostra o nome do usuario associado com a conta em uso. Por exemplo, caso o usuario joao execute esse comando, “joao” sera mostrado na tela seguido de um novo prompt:

$ whoami joao $

O comando hostname informa o nome da maquina que o usuario esta operando. No exemplo abaixo, a maquina chama-se “cerebro”:

$ hostname cerebro $

O comando groups e usado para mostrar os grupos de usuarios aos quais este usuario pertence. No exemplo abaixo, tais grupos sao “estudantes” e “projeto”.

$ groups estudantes projeto $

Para obter varias informacoes sobre a conta de um usuario qualquer – com excecao, evidentemente, da senha – usa-se o comando finger. Este comando requer como parametro o login de um usuario.

$ finger joao Login: joao Name: Jo~ao da Silva Directory: /home/joao Shell: /bin/bash Last login Wed Aug 25 17:05 on tty1 No mail. No Plan. $

(Parte 1 de 7)

Comentários