logo titulo
anterior indice proximo

Comandos Básicos



Quando damos partida a um sistema com Linux instalado, normalmente um programa chamado LILO (LInux Loader) entra em ação. Ele permite selecionar qual partição será usada para a carga do sistema, possibilitando assim a escolha de múltiplos sistemas operacionais, ou mesmo versões diferentes do kernel ou configurações dos discos.  Nos PCs compatíveis com o IBM (isto é, os X86, mais populares hoje em dia), o BIOS [5]  executa o código encontrado no primeiro setor do disco, seja ele um disco rígido ou um disquete [6] .  O LILO está contido neste setor, e é ele que decide aonde se encontra o kernel do sistema e o carrega em seguida.  Posteriormente veremos como personalizar o LILO de acordo com as nossas necessidades.
Uma vez carregado o kernel, este cria o primeiro processo do sistema o init. Todos os outros processos são criados como filhos (child) deste e são monitorados por init. Este é por sinal, o único processo que não pode ser destruido mesmo que estejamos como o usuário mais privilegiado (superuser). O processo init então procura pelo arquivo /etc/inittab, que define a configuração dos terminais e processos que serão executados logo após a carga inicial do sistema.  Normalmente encontraremos aí invocações do getty, que são programas transitórios destinados a programar a linha serial (quando é o caso) aonde se encontram ligados os terminais, enviar uma mensagem de benvindo e aguardar a entrada do login do usuário.  Isso se reflete na mensagem:

Benvindo ao sistema Linux 2.0.35
login:

Evidentemente, esta mensagem pode ser diferente, pois tudo no Linux é configurável. Esta mensagem se encontra no arquivo /etc/issue.  Após introduzido o nome do usuário e em seguida a senha (password), o programa login testa se os dados introduzidos são corretos e o shell [7]  destinado a este usuário é carregado.  Normalmente o shell é o bash, mas pode ser modificado em /etc/passwd. Toda a sessão deste usuário consiste neste processo shell e os sub-processos criados a partir deste.  O usuário pode trocar este shell executando o comand chsh.  Por exemplo, suponha que o usuário ricardo quer trocar seu shell default (bash) por csh. Ele executaria o seguinte comando:

chsh ricardo -s /bin/csh

e no próximo login o seu shell seria o csh.  Para trocar sua senha (password) ele executaria o comando passwd.
O superusuário (usuário de nome root) pode fazer o mesmo com todos os usuários, e opcionalmente pode editar o arquivo /etc/passwd, que contém somente texto para realizar a mesma tarefa.  O superusuário pode também desativar temporariamente a conta de um usuário trocando o seu shell por um simples script como este:

#!/usr/bin/tail +2
Esta conta está temporariamente inativa devido a problemas de segurança.
Queira contactar o administrador deste sistema para maiores esclarecimentos.

utilizando-se do programa chsh mostrado acima.

Navegando no sistema


A forma mais rápida de explorarmos o sistema é utilizando um programa browser como o Midnight Commander (mc). Alternativas são o dired, ytree ou uma coleção imensa de programas similares rodando no modo texto ou como clientes X: tkdesk, xfilemanager, xfm, XFiles, linux explorer,xnc, etc. Entretanto, os programas mais rápidos são os que, como mc, usam curses[8] ou slang, e assim podem ser usados tanto na console ou terminal texto, ou num xterm[9] ou outro emulador de terminais em X.

ytree

ytree

O ytree é um programa semelhante ao xtree, usado no MsDos, exceto pelos comandos de manipulação de atributos de arquivos, que necessariamente segue o padrão Unix. Aqui vemos o ytree rodando num xterm.

ytree

midnight commander

Este é provavelmente o mais popular dos file managers no Linux e em outros unices. Ele permite mover rapidamente arquivos entre diretórios, criar links, modificar atributos de arquivos, possui bookmarks, além de suportar diretamente arquivos compactados (diretórios virtuais), ou até mesmo diretórios ftp, isto é, em servidores remotos, transparentemente. Existe uma versão do mc com interface visual (GUI) em tcl/tk, mas realmente a versão curses/slang é a mais popular.

tkdesk

Um programa também popular no ambiente X é tkdesk, um file manager escrito em tcl/tk, com recursos como associação de tipos de arquivos com programas de edição ou visualização, altamente configurável, além de possuir uma barra de comands para a execução de programas diversos (também configurável) ou configuração do próprio tkdesk.

barra do tkdesk

tkdesk

Mostraremos então como modificar atributos, copiar arquivos, criar ou expandir arquivos compactados e realizar a maioria das tarefas do dia-a-dia com o mc, traçando um paralelo aos programas mais básicos para realizar as mesmas tarefas. Dessa forma, rapidamente poderemos nos acostumar com o novo sistema sem o aprendizado imediato de algumas centenas de comandos e opções. Escolhemos o midnight commander devido à sua universalidade, ou seja, não necessita do X rodando.

A tela do mc tem 4 regiões: barra de menu, dois paineis de diretório e uma linha (ou múltiplas, configurável) de comando, aonde podemos executar comandos via um shell. Normalmente o cursor (linha em vídeo reverso) repousa sobre o painel da esquerda, mas com tab ou Ctrl-i mudamos para o outro painel. Abaixo da(s) linha(s) do shell, uma linha de status nos mostr0

as teclas de função ativas e as ações atribuidas a estas. Quando digitamos return ou enter sobre um arquivo, visualizamos este, ou caso seja um diretório, tornamos este diretório visível no painel corrente. Para nos dirigirmos ao diretório hierarquicamente superior (diretório "pai") escolhemos o diretório de nome "..". Como esperado, as teclas com setas para cima e para baixo, nos permitem escolher o arquivo com o cursor. A maioria das operações se processam sobre o arquivo com o cursor, mas às vezes desejamos marcar vários arquivos e realizar um operação única com estes. Existem duas formas de se fazer isso: a primeira, marcando os arquivo com a tecla insert ou Ctrl-t, que inverte o estado de seleção do arquivo corrente; a segunda com "+" que nos permite selecionar arquivos por um wildcard. Os usuários do MsDos podem estranhar a ausência do nome do disco (A:, C:, etc), mas no unix não existem tais nomes, pois todos os discos são montados em subdiretórios de uma única estrutura de disco, a partir da raíz "/", que é definida na carga do sistema.[10]. Quando escolhemos copiar um ou múltiplos arquivos, o destino será o outro painel de diretório do mc.

Alguns comandos são escolhidos pelo usuário na configuração do programa, como mostra a figura, quando digitamos F2 (user menu). Os comandos do menu pulldown (a partir da tecla F9) permitem ao usuário escolher váêias formas de apresentação dos arquivos e modos de listagem. Por exemplo, escolhendo-se Left->Quick View, teremos a visualização das primeiras linhas de cada arquivo no qual posicionemos o cursor no outro painel (use tab para ir ao outro painel). Escolhendo Left->Tree, veremos no painel esquerdo uma árvore dos diretórios (subdiretórios) e no lado direito os arquivos no diretório aonde o cursor esteja posicionado (após digitar enter), possibilitando assim uma navegação mais rápida. Os comandos View e Edit (direto com as teclas F3 ou F4) nos farão visualizar totalmente ou editar o arquivo com o cursor, mas tenha cuidado: o editor default é o vi, extremamente não-amigável para usuários de MsDos. Portanto, antes de fazer isso, saia do mc e digite:

export EDITOR=joe

e voce terá um editor semelhante ao WordStar (ou às interfaces visuais da Borland), com comandos bem mais familiares e help na tela (com Ctrl-KH como no WordStar). Outra possibilidade, se voce não tem medo de mexer no sistema, é editar o arquivo /etc/profile e colocar esta linha dada acima neste arquivo, para execução na carga do seu shell. Entretanto, esta modificação só estará ativada quando voce der um novo login.

mc user menu

Aqui podemos ver alguns comandos que podem ser configurados editando um arquivo: ~/.mc/mc.menu [11]

Usualmente o principiante não deverá mexer nesse arquivo até conhecer melhor como escrever comandos (programas) com o shell. Entretanto os comandos mais usuais estão aí, e no menu principal a grande maioria das operações com arquivos podem ser realizadas a um toque de tecla, mesmo sem conhecer profundamente a estrutura do sistema operacional.

mc user menu

O Midnight Commander tem um comando (evocado pelo Ctrl-o) que deixa toda sua interface visual escondida e habilita o usuário a executar comandos diretamente para o shell. O mesmo comando retorna ao modo visual. Assim, caso o usuário esteja em dúvida com relação a algum comando, poderá executá-lo diretamente na linha de comando, sem ter que sair do programa. Por outro lado, uma opção de configuração (Options->Configuration->Pause after run->always) que faz com que o programa pause no final da execução de cada comando, permitindo o usuário visualizar a saida na tela do comando executado e bater uma tecla qualquer para retornar à interface visual do mc.

Uma relação completa dos comandos do mc pode ser encontrada no seu manpage, ou com o help online (a partir do comando F1).

À medida que voce for visitando vários diretórios com o mc, lembre-se de salvar os lugares mais interessantes criando bookmarks, com o comando Ctrl-\. Voce pode inclusive criar folders com os vários diretórios relacionados a uma mesma tarefa e assim se organizar melhor. O mesmo comando permite ir rapidamente (no painel corrente) para um diretório salvo anteriormente.

Discutiremos a seguir o formato das listagens de arquivos. O Linux (assim como os outros Unices), possuem nomes de arquivos com caracteres praticamente arbitrários, excetuando o "/", que é usado como separador de diretórios. É aconselhavel todavia usarmos caracteres visíveis e normais, evitando por exemplo, espaços no nome de um arquivo.[13] São armazenadas 3 datas/horários associados a cada arquivo: a data/hora de criação, de modificação (edição por exemplo), e do último acesso ao arquivo. Diretórios são tratados exatamente como arquivos. O comando do menu (Left->Info ou Right->Info) mostra estas propriedades, juntamente com outras como o modo, o sistema de arquivo (filesystem), o dono e o grupo ao qual este arquivo pertence, e o número de links desse arquivo. A figura a seguir mostra os dados do painel do mc quando este comando é executado.

file info

file information

O Midnight Commander pode mostrar várias propriedades do arquivo que consta no outro painel de diretório, escolhendo o menu Left->Info (ou Right->Info conforme o caso) e posicionando o cursor sobre o arquivo desejado no outro painel. O dispositivo (/dev/hdc3 neste exemplo) mostra como o Linux trata dispositivos de maneira geral, como arquivos especiais. O campo "type" (no caso ext2) é o tipo de filesystem com o qual este dispositivo foi formatado. Além do tipo ext2, o mais comum e de melhor performance, temos minix, msdos, vfat (usado com o windows98), ntfs (do windows NT), hpfs, e uma dúzia mais de sistemas de arquivos suportados. O mc suporta também sistemas de arquivos virtuais, como ftp (acesso remoto via o protocolo ftp), tar (arquivos armazenados em bibliotecas), zip, arj, etc.

A linha mode acima mostra-nos uma porção de caracteres aparentemente sem sentido. Vejamos devagar o que significam estes. Cada letra representa um flag referente a uma permissão de acesso, exceto pelo primeiro da esquerda e agrupados de 3 em 3. Um arquivo totalmente desprotegido mostraria:

-rwxrwxrwx

onde os 3 primeiros "rwx" são referentes ao acesso pelo dono do arquivo (veja o Owner acima), os seguintes aos usuários que pertençam ao mesmo grupo, e os tres últimos a outros usuários quiasquer. Quando o caracter (r, w ou x) está presente, o flag está ativo e a permissão para leitura (r), escrita (w) ou execução(x) está habilitada. O número (0644) mostra exatamente a mesma coisa codificada em octal, mas no lugar de aprender chmod por enquanto, voce pode brincar um pouco com os comandos do mc que permitem alterar esses flags de modo muito mais simples.

Para tentar isso com o mc, posicione o cursor sobre um arquivo e digite F9 (para ir ao menu), e escolha File->Chmod e modifique cada flag individualmente com a barra de espaço. Selecione Set (botão abaixo na caixa de diálogo) para sair ou Cancel.

atributos

Manipulando arquivos compactados


Voce provavelmente já teve que transportar uma coleção de arquivos entre dois computadores. É bastante desinteressante sair copiando de um em um arquivo para um disquete (ou vários disquetes!) e recolocá-los no mesmo lugar (isto é nos mesmos diretórios) da outra máquina. Se voce faz isso com frequência, deve usar algum compactador/arquivador como o zip ou arj. No Linux o formato compactado mais comum é o .tar.gz, apesar de ser possível usar quaisquer outro destes mencionados. A vantagem do .tar.gz é que ele também transporta links[12], pipes, devices, e outros "arquivos" que não são realmente dados. O nome .tar.gz vem de dois programas independentes: o tar, que é um utilitário para armazenamento de vários arquivos em um só, com informações de diretórios, e o gzip (daí a extensão gz) que é um compactador bastante popular. Outros compactadores são mais eficientes como o bzip2 (extensão bz2), mas não invalida o que estamos discutindo aqui, inclusive são igualmente suportados pelo Midnight Commander. A distribuição RedHat do Linux usa um compactador próprio (que é também GPL, isto é software aberto) chamado rpm.

Com o mc, podemos criar facilmente um .tar.gz colocando-nos no diretório aonde estão os arquivos a armazenar e digitando F2 3, insto é a tecla F2 (user menu) seguido a tecla 3, comando "Make a release...". Isto criará o arquivo compactado no diretório imediatamente superior ao corrente, exceto se entrarmos outro path. Para descompactar um arquivo assim criado, ou já existente nos CDRoms ou obtidos via ftp/http da internet, o procedimento ainda é mais simples. Simplesmente "entre" no arquivo (digitando enter), como voce o faria com um subdiretório e aí voce verá um sistema de arquivos virtual, podendo visualizar (o README por exemplo) antes de decidir instalar o software obtido. Entretanto, você não poderá editar arquivos nesse sistema de arquivos virtual. Para copiar parte ou todo o conteúdo, proceda exatamente como o faria com arquivos e diretórios normais, selecionando no outro painel o destino dos seus arquivos.


rpragana
Tue Dec 29 18:53:04 EDT 1998