COMO FAZER DOS/Windows ao Linux
  De Guido Gonzato, guido@ibogfs.cineca.it - Traduzido para o
  português por Rafael Rodrigues Obelheiro
  obelix@biquinho.furg.br e Rafael Caetano dos Santos
  rcaetano@linux.ime.usp.br.
  v1.3.0, 15 de abril de 1998

  Este COMO FAZER é dedicado a todos os usuários de DOS e Windows que
  decidiram migrar para o Linux, o clone livre do Unix.  O propósito
  deste documento é ajudar o leitor a transportar seu conhecimento de
  DOS e Windows para o ambiente Linux, assim como dar dicas sobre o
  intercâmbio de arquivos e recursos entre os dois sistemas
  operacionais.
  ______________________________________________________________________

  Índice geral


















































  1. Introdução

     1.1 O Linux é Adequado a Você?
     1.2 É sim. Diga mais.
        1.2.1 Conceitos Introdutórios
        1.2.2 Conseguindo Ajuda
     1.3 Convenções

  2. Para os Impacientes

  3. Arquivos e Programas

     3.1 Arquivos: Noções Preliminares
     3.2 Ligações Simbólicos
     3.3 Permissões e Propriedade
     3.4 Arquivos: Traduzindo Comandos
        3.4.1 Exemplos
     3.5 Executando Programas: Multitarefa e Sessões
     3.6 Executando Programas em Computadores Remotos

  4. Usando Diretórios

     4.1 Diretórios: Noções Preliminares
     4.2 Permissões de Diretórios
     4.3 Diretórios: Traduzindo Comandos
        4.3.1 Exemplos

  5. Disquetes, Discos Rígidos, etc

     5.1 Gerenciando Dispositivos à Maneira do DOS
     5.2 Gerenciando Dispositivos à Maneira UNIX
     5.3 Fazendo uma Cópia de Segurança

  6. E o Windows?

  7. Personalizando o Sistema

     7.1 Arquivos de Inicialização do Sistema
     7.2 Arquivos de Inicialização de Programas

  8. Um pouco de programação

     8.1 Roteiros para Shell: Arquivos .BAT com Esteróides
     8.2 C

  9. O 1% Restante

     9.1 Usando tar & gzip
     9.2 Instalando Aplicativos
     9.3 Dicas Indispensáveis
     9.4 Onde Encontrar Aplicativos
     9.5 Algumas Coisas que Você não Conseguia Fazer
     9.6 Extensões Comuns e Programas Relacionados
     9.7 Convertendo Arquivos

  10. Fim da História, por Enquanto

     10.1 Direitos Autorais
     10.2 Nota do Autor


  ______________________________________________________________________




  11..  IInnttrroodduuççããoo



  11..11..  OO LLiinnuuxx éé AAddeeqquuaaddoo aa VVooccêê??


  Você quer mudar do DOS para o Linux? Boa idéia: o Linux é tecnicamente
  superior ao DOS, Windows 95 e mesmo ao Windows NT.  Mas tome cuidado:
  ele pode não ser útil para você, se você não for o tipo adequado de
  usuário.  De fato, DOS e Windows são mais usados para jogos e
  produtividade de escritório, ao passo que o Linux dá seu melhor em
  trabalho em rede, desenvolvimento e computação científica.  O Linux é
  incrivelmente poderoso, mas aprender como aproveitar esse poder leva
  tempo.  Assim, se você precisa principalmente de programas comerciais,
  ou se você não está disposto a aprender novos comandos e conceitos, é
  melhor procurar outra coisa.

  Tornar o Linux mais fácil de usar é um trabalho em andamento, mas _n_ã_o
  _e_s_p_e_r_e _t_o_r_n_a_r_-_s_e _p_r_o_f_i_c_i_e_n_t_e _s_e_m _l_e_r _m_u_i_t_a _d_o_c_u_m_e_n_t_a_ç_ã_o _e _u_s_á_-_l_o _p_o_r
  _p_e_l_o _m_e_n_o_s _u_m _m_ê_s.  O Linux não lhe dará resultados instantâneos.
  Apesar destes avisos, eu tenho 100% de confiança de que, se você se
  encaixa no perfil adequado de usuário, encontrará no Linux o nirvana
  para seu computador, e nunca mais vai querer usar DOS ou Windows
  novamente.  A propósito, Linux + DOS/Win podem co-existir na mesma
  máquina sem problemas.

  Pré-requisitos para este COMO FAZER:


  ·  conhecer os comandos e conceitos básicos do DOS;

  ·  ter o Linux, possivelmente com o X Window System, corretamente
     instalado no seu PC;

  ·  ter como interpretador de comandos -- o equivalente ao
     COMMAND.COM--- o bash.

  A menos que especificado o contrário, todas as informações desta obra
  visam o mau e velho DOS.  Há informações sobre o Windows aqui e ali,
  mas tenha em mente que o Windows e o Linux são totalmente diferentes,
  ao passo que o DOS é uma espécie de parente pobre do UNIX.



  11..22..  ÉÉ ssiimm.. DDiiggaa mmaaiiss..


  Você instalou o Linux e os programas de que precisava no seu PC.  Você
  criou uma conta para você mesmo (se não, digite adduser _a_g_o_r_a_!) e o
  Linux está rodando.  Você digitou seu nome e sua senha, e agora está
  olhando para a tela pensando: "E agora?"

  Não se desespere.  Você está quase pronto para fazer as mesmas coisas
  que costumava fazer com DOS/Win, e muito mais.  Se você estivesse
  rodando DOS/Win ao invés de Linux, estaria fazendo alguma das
  seguintes tarefas:


  ·  executando programas e criando, copiando, visualizando, apagando,
     imprimindo e renomeando arquivos;

  ·  mudando, criando e apagando seus diretórios, e listando seu
     conteúdo (com CD, MD, RD, DIR);


  ·  formatando disquetes e copiando arquivos de/para eles;

  ·  personalizando o sistema;

  ·  escrevendo arquivos .BAT e programas na sua linguagem favorito;

  ·  o 1% restante.

  Você ficará feliz em saber que estas tarefas podem ser realizadas no
  Linux de uma maneira similar ao DOS.  No DOS, o usuário médio utiliza
  muito pouco dos mais de 100 comandos disponíveis: o mesmo, até certo
  ponto, vale também para o Linux.



  11..22..11..  CCoonncceeiittooss IInnttrroodduuttóórriiooss


  A melhor maneira de aprender algo novo é praticando.  Você é
  fortemente estimulado a experimentar e brincar com o Linux: você não
  danificará seu sistema assim.  Alguns pontos:

  ·  primeiro, como sair do Linux com segurança.  Se você estiver numa
     tela de modo texto, pressione <CTRL-ALT-DEL>, espere o sistema
     reinicializar e desligue o PC.  Se você estiver trabalhando sob o X
     Window System, pressione <CTRL-ALT-BACKSPACE> primeiro, e depois
     <CTRL-ALT-DEL>. _N_u_n_c_a desligue nem reinicialize o PC diretamente:
     isto pode danificar o sistema de arquivos;

  ·  diferentemente do DOS, o Linux tem mecanismos embutidos de
     segurança.  Arquivos e diretórios têm permissões associadas a si;
     conseqüentemente, alguns deles não podem ser acessados pelo usuário
     normal; (veja a Seção ``Permissões e Propriedade'').  O DOS, ao
     contrário, permite que você apague todo o conteúdo de seu disco
     rígido;

  ·  há um usuário especial chamado "root": o administrador do sistema,
     com poder total de vida e morte sobre a máquina.  Se você trabalha
     no seu próprio PC, você será root também.  Trabalhar como root é
     _p_e_r_i_g_o_s_o: qualquer erro pode danificar seriamente ou mesmo destruir
     o sistema, como no DOS/Win.  Não trabalhe como root a menos que
     absolutamente necessário;

  ·  grande parte da complexidade do Linux deve-se a sua extrema
     configurabilidade: virtualmente todo recurso e todo aplicativo pode
     ser personalizado através de um ou mais arquivos de configuração.
     Complexidade é o preço a pagar pelo poder;

  ·  redirecionamento e canalização são recursos adicionais no DOS, mas
     muito importantes e muito mais poderosos no Linux.  Comandos
     simples podem ser juntados para realizar tarefas complexas.  Eu
     sugiro fortemente que você aprenda a usá-los.



  11..22..22..  CCoonnsseegguuiinnddoo AAjjuuddaa


  Há várias maneiras de se conseguir ajuda no Linux.  As mais
  importantes são:


  ·  _l_e_r _a _d_o_c_u_m_e_n_t_a_ç_ã_o---falo sério.  Embora o COMO FAZER que você está
     lendo sirva como uma introdução ao Linux, há vários livros que você
     realmente deve ler: "Linux Installation and Getting Started" (
     <http://sunsite.unc.edu/mdw/LDP/gs/gs.html>), de Matt Welsh, "Linux
     User Guide", de Larry Greenfield, (
     <ftp://sunsite.unc.edu/pub/Linux/docs/linux-doc-project/users-
     guide>), e o Linux FAQ ( <http://sunsite.unc.edu/mdw/FAQ/Linux-
     FAQ.html>).  Sinta-se com a consciência pesada até que você tenha
     lido pelo menos um deles;

  ·  a documentação dos pacotes instalados na máquina é normalmente
     encontrada nos subdiretórios sob /usr/doc/;

  ·  para obter ajuda sobre os "comandos internos" do shell, digite help
     ou, ainda melhor, man bash ou info bash;

  ·  para obter ajuda sobre um comando, digite man comando, que chamará
     a página de manual ("man") pertinente ao comando.
     Alternativamente, digite info comando, que chamará (se houver) a
     página info pertinente ao comando.  Info é um sistema de
     documentação em hipertexto, talvez não muito intuitivo de início.
     Finalmente, você pode tentar apropos comando ou whatis comando.
     Com todos esses comandos, pressione `q' para sair.



  11..33..  CCoonnvveennççõõeess


  Ao longo desta obra, os exemplos normalmente seguirão o seguinte
  formato: <...> é um argumento obrigatório, ao passo que [...] é um
  argumento opcional.  Exemplo:



       $ tar -tf <arquivo.tar> [> arquivo_redir]




  arquivo.tar deve ser indicado, mas o redirecionamento para
  arquivo_redir é opcional.

  "LPM" significa "por favor Leia as Páginas de Manual para mais
  informações".

  Quando o prompt de um exemplo de comando for `#', o comando pode ser
  executado apenas pelo root.



  22..  PPaarraa ooss IImmppaacciieenntteess


  Quer começar?  Dê uma olhada nesta tabela:















  DOS                     Linux                   Observações
  ------------------------------------------------------------------------------

  ATTRIB (+-)atrib file   chmod <modo> arquivo    completamente diferente
  BACKUP                          tar -Mcvf device dir/   idem
  CD nomedir\                            cd nomedir/                             quase a mesma sintaxe
  COPY arq1 arq2                  cp arq1 arq2            idem
  DEL arq                 rm arq                  cuidado - não há undelete
  DELTREE nomedir                 rm -R nomedir/                  idem
  DIR                             ls                              sintaxe um pouco diferente
  DIR arq /S              find . -name arq        completamente diferente
  EDIT arq                vi arq                  acho que você não vai gostar
                          jstar arq               parecido com o EDIT do DOS
  FORMAT                          fdformat,
                                                  mount, umount                   sintaxe bem diferente
  HELP comando            man comando             mesma filosofia
                                                  info comando
  MD nomedir                              mkdir nomedir/                  quase a mesma sintaxe
  MOVE arq1 arq2                  mv arq1 arq2                    idem
  NUL                             /dev/null                       idem
  PRINT arq                       lpr arq                 idem
  PRN                             /dev/lp0,
                                                  /dev/lp1                        idem
  RD nomedir                              rmdir nomedir/                  quase a mesma sintaxe
  REN arq1 arq2                   mv arq1 arq2            não funciona para múltiplos
                                                  arquivos
  RESTORE                                 tar -Mxpvf device       sintaxe diferente
  TYPE arq                less arq                        muito melhor
  WIN                                             startx                                  da água para o vinho




  Se uma tabela de comandos não é suficiente para você, consulte as
  seções seguintes.



  33..  AArrqquuiivvooss ee PPrrooggrraammaass




  33..11..  AArrqquuiivvooss:: NNooççõõeess PPrreelliimmiinnaarreess


  O Linux tem uma estrutura de diretórios e arquivos similar à do
  DOS/Win.  Arquivos têm nomes-de-arquivo que obedecem a regras
  especiais, são gravados em diretórios, alguns são executáveis, e a
  maioria destes tem opções de linha de comando.  Além disso, você pode
  usar caracteres coringa, redirecionamento e canalização.  Há apenas
  algumas pequenas diferenças:


  ·  Sob o DOS, os nomes-de-arquivo tem o formato chamado 8.3; p.ex.,
     INSUFICI.TXT.  No Linux, podemos fazer de um jeito melhor.  Se você
     instalou o Linux usando um sistema de arquivos como o ext2 ou
     umsdos, você pode usar nomes-de-arquivo mais longos (até 255
     caracteres), e com mais de um ponto: por exemplo,
     Este_eh.um.nome_de_arquivo.MUITO.longo.  Observe que eu usei tanto
     caracteres maiúsculos como minúsculos: de fato...

  ·  letras maiúsculas e minúsculas em nomes-de-arquivo e comandos são
     diferentes.  Portanto, NOMEARQ.tar.gz e nomearq.tar.gz são dois
     arquivos diferentes.  ls é um comando, LS é um erro;

  ·  usuários de Windows 95: cuidado ao usar nomes-de-arquivo longos no
     Linux.  Se um nome-de-arquivo contiver espaços (não recomendado,
     mas possível), você deve incluir o nome-de-arquivo entre aspas
     duplas sempre que fizer referência a ele.  Por exemplo:



       $ # o seguinte comando cria um diretório chamado "Meus arquivos antigos"
       $ mkdir "Meus arquivos antigos"
       $ ls
       Meus arquivos antigos    bin     tmp





  Além disso, certos caracteres não devem ser usados: alguns deles são
  !*$&.

  ·  não há extensões obrigatórias, como .COM e .EXE para programas, ou
     .BAT para arquivos de lote.  Arquivos executáveis são marcados com
     um asterisco `*' ao final do nome quando você executa o comando ls
     -F comando.  Por exemplo:



       $ ls -F
       Eu_sou_um_dir/   cindy.jpg    cjpg*   letter_to_Joe    meu_script*  old~





  Os arquivos cjpg* e meu_script* são executáveis, isto é, "programas".
  No DOS, nomes de arquivos de backup terminam em .BAK, enquanto no
  Linux terminam com um til.  Além disso, um arquivo cujo nome comece
  com um ponto é considerado oculto.  Exemplo: o arquivo
  .Eu.sou.um.arquivo.oculto não aparece na saída de um comando ls;

  ·  opções de programas são obtidas através de /opção no DOS; no Linux
     se usa -opção ou --opção.  Exemplo: dir /s vira ls -R.  Observe que
     muitos programas DOS, como PKZIP e ARJ, usam opções ao estilo UNIX.

  Agora você pode pular para a Seção ``Traduzindo Comandos do DOS para o
  Linux'', mas, se eu fosse você, continuaria lendo.


  33..22..  LLiiggaaççõõeess SSiimmbbóólliiccooss

  O Unix tem um tipo de arquivo que não existe no DOS: a ligação
  simbólica.  Isto pode ser considerado como um ponteiro para um arquivo
  ou diretório, e pode ser usado ao invés do arquivo para o qual aponta;
  é similar aos atalhos do Windows 95.  Exemplos de ligações simbólicas
  são /usr/X11, que aponta para /usr/X11R6; /dev/modem, que aponta para
  /dev/cua0 or /dev/cua1.

  Para fazer uma ligação simbólica:



       $ ln -s <arq_ou_dir> <nomedaligação>





  Exemplo:



       $ ln -s /usr/doc/g77/DOC g77manual.txt




  Agora você pode se referir a g77manual.txt ao invés de
  /usr/doc/g77/DOC.  As ligações simbólicas aparecem assim em listagens
  de diretório:



       $ ls -F
       g77manual.txt@
       $ ls -l
       (várias coisas...)           g77manual.txt -> /usr/doc/g77/DOC






  33..33..  PPeerrmmiissssõõeess ee PPrroopprriieeddaaddee


  No DOS, arquivos e diretórios têm os seguintes atributos: A (arquivo),
  H (oculto), R (somente-para-leitura), e S (sistema).  Somente H e R
  fazem sentido no Linux: arquivos ocultos começam com um ponto, e
  quanto ao atributo R, siga em frente.

  No Unix, cada arquivo tem "permissões" e um dono, que por sua vez
  pertence a um "grupo".  Veja este exemplo:



       $ ls -l /bin/ls
       -rwxr-xr-x  1  root  bin  27281 Aug 15 1995 /bin/ls*




  O primeiro campo contém as permissões do arquivo /bin/ls, que pertence
  ao root, grupo bin.  Deixando as informações restantes de lado,
  lembre-se que -rwxr-xr-x significa, da esquerda para a direita:

  - é o tipo de arquivo (- = arquivo normal, d = diretório, l = ligação,
  etc); rwx são as permissões para o dono do arquivo ("read, write,
  execute", i.e., "leitura, gravação, execução"); r-x são as permissões
  para o grupo do dono do arquivo (leitura, execução); (eu não
  explicarei o conceito de grupo, você pode sobreviver sem isso enquanto
  for um iniciante ;-) r-x são as permissões para todos os outros
  usuários (leitura, execução).

  O diretório /bin tem permissões também: veja a Seção ``Permissões de
  Diretórios'' para mais detalhes.  É por isso que você não pode apagar
  o arquivo /bin/ls, a menos que seja o superusuário (root): você não
  tem permissão para isso.  Para mudar as permissões de um arquivo, o
  comando é:



       $ chmod <quemXperm> <arquivo>

  onde quem é u (usuário, i.e., dono), g (grupo), o (outros), X é ou +
  ou -, perm é r (leitura), w (gravação), ou x (execução).  Alguns
  exemplos do uso de chmod:



       $ chmod +x arquivo




  isto define a permissão de execução do arquivo.



       $ chmod go-rw arquivo




  isto remove as permissões de leitura e gravação para todos, exceto o
  dono.



       $ chmod ugo+rwx arquivo




  isto dá permissão de leitura, gravação e execução para todos.



       # chmod +s arquivo




  isso faz um arquivo chamado "setuid" ou "suid"---um arquivo que todos
  podem executar com os privilégios do dono.  Normalmente, você
  encontrará arquivos setuid root; freqüentemente, são programas
  importantes do sistema, como o servidor X.

  Uma maneira mais curta de se referir a permissões é com dígitos: rwxr-
  xr-x pode ser expresso como 755 (cada letra corresponde a um bit: ---
  é 0, --x é 1, -w- é 2, -wx é 3...).  Parece difícil, mas com um pouco
  de prática você entenderá a idéia.

  Sendo o superusuário, pode-se mudar as permissões de qualquer arquivo.
  LPM.



  33..44..  AArrqquuiivvooss:: TTrraadduuzziinnddoo CCoommaannddooss


  À esquerda, os comandos do DOS; à direita, sua contrapartida no Linux.








  ATTRIB:         chmod
  COPY:           cp
  DEL:            rm
  MOVE:           mv
  REN:            mv
  TYPE:           more, less, cat




  Operadores de redirecionamento e canalização:  < > >> |

  Coringas: * ?

  nul:        /dev/null

  prn, lpt1:  /dev/lp0 ou /dev/lp1; lpr


  33..44..11..  EExxeemmppllooss




       DOS                                     Linux
       ---------------------------------------------------------------------

       C:\GUIDO>ATTRIB +R ARQUIVO.TXT          $ chmod 400 arquivo.txt
       C:\GUIDO>COPY JOE.TXT JOE.DOC           $ cp joe.txt joe.doc
       C:\GUIDO>COPY *.* TOTAL                 $ cat * > total
       C:\GUIDO>COPY FRACTALS.DOC PRN          $ lpr fractals.doc
       C:\GUIDO>DEL TEMP                       $ rm temp
       C:\GUIDO>DEL *.BAK                      $ rm *~
       C:\GUIDO>MOVE PAPER.TXT TMP\            $ mv paper.txt tmp/
       C:\GUIDO>REN PAPER.TXT PAPER.ASC        $ mv paper.txt paper.asc
       C:\GUIDO>PRINT LETTER.TXT               $ lpr letter.txt
       C:\GUIDO>TYPE LETTER.TXT                $ more letter.txt
       C:\GUIDO>TYPE LETTER.TXT                $ less letter.txt
       C:\GUIDO>TYPE LETTER.TXT > NUL          $ cat letter.txt > /dev/null
               n/a                             $ more *.txt *.asc
               n/a                             $ cat section*.txt | less




  Observações:


  ·  * é mais inteligente no Linux: * corresponde a todos os arquivos,
     exceto os ocultos; .* corresponde a todos os arquivos ocultos (mas
     também ao diretório atual `.' e ao diretório pai `..': cuidado!);
     *.* corresponde apenas aos arquivos que tenham um '.' no meio ou
     terminem com um ponto; p*r corresponde tanto a `peter' como a
     `piper'; *c* corresponde a `picked' e `peck';

  ·  quando usar more, pressione <SPACE> para ler o arquivo; `q' para
     sair. less é mais intuitivo, e permite que você use as teclas de
     seta;

  ·  não há UNDELETE, então _p_e_n_s_e _d_u_a_s _v_e_z_e_s antes de apagar algo;

  ·  além de < > >>, o Linux tem 2> para redirecionar mensagens de erro
     (stderr); além disso, 2>&1 redireciona stderr para stdout (saída
     padrão), enquanto 1>&2 redireciona stdout para stderr;


  ·  o Linux tem outro coringa: []. Uso: [abc]* corresponde a arquivos
     que comecem com a, b, c; *[I-N1-3] corresponde a arquivos que
     terminem com I, J, K, L, M, N, 1, 2, 3;

  ·  lpr <arquivo> imprime um arquivo em segundo plano.  Para verificar
     o estado da fila de impressão, use lpq; para remover um arquivo da
     fila de impressão, use lprm;

  ·  não há RENAME como no DOS; isto é, mv *.xxx *.yyy não funciona.
     Você pode tentar este simples script; consulte a Seção ``Roteiros
     para Shell: Arquivos .BAT com Esteróides'' para mais detalhes.


     ___________________________________________________________________
     #!/bin/sh
     # ren: renomeia múltiplos arquivos de acordo com várias regras

     if [ $# -lt 3 ] ; then
       echo "uso: ren \"padrão\" \"substituição\" arq..."
       exit 1
     fi

     VELHO=$1 ; NOVO=$2 ; shift ; shift

     for arquivo in $*
     do
       novo=`echo ${arquivo} | sed s/${VELHO}/${NOVO}/g`
       mv ${arquivo} $novo
     done
     ___________________________________________________________________



  Cuidado: este roteiro não se comporta como o REN do DOS, pois usa
  "expressões regulares", que você provavelmente ainda não conhece.
  Resumidamente, se você quiser simplesmente mudar extensões de
  arquivos, faça como: ren "htm$" "html" *htm.  Não se esqueça do $.

  ·  use cp -i e mv -i para ser avisado antes que um arquivo seja
     sobrescrito.



  33..55..  EExxeeccuuttaannddoo PPrrooggrraammaass:: MMuullttiittaarreeffaa ee SSeessssõõeess


  Para executar um programa, digite seu nome, como faria no DOS.  Se o
  diretório (Seção ``Usando Diretórios'') onde o programa está
  armazenado estiver incluso no PATH (Seção ``Arquivos de Inicialização
  do Sistema''), o programa será iniciado.  Exceção: diferentemente do
  DOS, no Linux um programa localizado no diretório atual não é
  executado a menos que seu diretório seja incluído no PATH.  Contorno:
  sendo prog o seu programa, digite ./prog.

  A linha de comando típica é parecida com essa:



       $ comando [-s1 [-s2] ... [-sn]] [par1 [par2] ... [parn]] [< entrada] [> saída]




  onde -s1, ..., -sn são as opções do programa, par1, ..., parn são os
  parâmetros do programa.  Você pode dar vários comandos na mesma linha
  de comando:
       $ comando_1 ; comando_2 ; ... ; comando_n




  Isto é tudo que há sobre executar programas, mas é fácil ir um passo a
  frente.  Um dos principais motivos para usar Linux é que é um sistema
  operacional multitarefa---pode executar vários programas (daqui em
  diante, processos) ao mesmo tempo.  Você pode lançar processos em
  segundo plano e continuar trabalhando tranqüilamente.  Além disso, o
  Linux permite que você abra várias sessões: é como ter vários
  computadores para trabalhar ao mesmo tempo.


  ·  Para alternar entre as sessões 1..6 nos consoles virtuais,
     pressione <ALT-F1> ... <ALT-F6>

  ·  Para iniciar uma nova sessão no mesmo console virtual sem fechar a
     atual, digite su - <nomedelogin>. Exemplo: su - root. Isto é útil,
     por exemplo, quando você precisa fazer algo que só o superusuário
     pode fazer.

  ·  Para terminar uma sessão, digite exit.  Se houver trabalhos
     interrompidos (veja abaixo), você será avisado.

  ·  Para lançar um processo em segundo plano, adicione um '&' ao fim da
     linha de comando:



       $ nomeprog [-opções] [parâmetros] [< entrada] [> saída] &
       [1] 123





  o interpretador de comandos identifica o processo por um número de
  trabalho (p.ex. [1]; veja abaixo), e a um PID (Process Identification
  Number, ou Número de Identificação de Processo; 123 no nosso exemplo).

  ·  Para ver quantos processos existem atualmente, digite ps -ax.  A
     saída será uma lista dos processos sendo executados.

  ·  Para matar um processo, digite kill <PID>.  Você pode precisar
     matar um processo quando você não souber como terminá-lo da maneira
     correta... A menos que você seja o superusuário, você não pode
     matar processos de outros usuários.  Às vezes, um processo somente
     pode ser matado através de kill -SIGKILL <PID>.

     Além disso, o shell permite que você termine ou suspenda
     temporariamente um processo, envie um processo ao segundo plano, e
     traga um processo do segundo para o primeiro plano.  Nesse
     contexto, processos são chamados "jobs" ou trabalhos.

  ·  Para ver quantos trabalhos existem, digite jobs.  Aqui os trabalhos
     são identificados pelos seus números de trabalho, e não pelos seus
     PIDs.

  ·  Para terminar um processo executando em primeiro plano, pressione
     <CTRL-C> (não é sempre que funciona).

  ·  Para suspender um processo executando em primeiro plano, pressione
     <CTRL-Z> (idem).


  ·  Para mandar um processo suspenso para o segundo plano, digite bg
     <job> (ele se torna um trabalho).

  ·  Para trazer um trabalho ao primeiro plano, digite fg <job>.  Para
     trazer o último trabalho que foi enviado ao segundo plano, digite
     simplesmente fg.

  ·  Para matar um trabalho, digite kill <%job> onde <job> pode ser 1,
     2, 3,...

  Usando esses comandos você pode formatar um disco, zipar um conjunto
  de arquivos, compilar um programa e descompactar um arquivo, tudo ao
  mesmo tempo, e ainda ter a linha de comando à sua disposição.  Tente
  isso no DOS! E tente no Windows, apenas para ver a diferença de
  desempenho (se não travar, é claro).




  33..66..  EExxeeccuuttaannddoo PPrrooggrraammaass eemm CCoommppuuttaaddoorreess RReemmoottooss


  Para executar um programa em uma máquina remota cujo endereço IP seja
  maquina.remota.edu, digite:



       $ telnet maquina.remota.edu




  Depois de entrar no sistema, inicie seu programa favorito.
  Desnecessário dizer que você deve ter uma conta na máquina remota.

  Se você tiver o X11, você pode até mesmo executar uma aplicativo X no
  computador remoto, exibindo-o na tela do seu X.  Seja
  maquina.remota.edu o computador remoto e local.linux.box sua máquina
  Linux.  Para executar a partir de local.linux.box um programa X que
  resida em remote.machine.edu, faça o seguinte:


  ·  execute o X11, inicie um xterm ou um emulador de terminal
     equivalente, e digite:



       $ xhost +maquina.remota.edu
       $ telnet maquina.remota.edu





  ·  depois de entrar no sistema, digite:



       remote:$ DISPLAY=local.linux.box:0.0
       remote:$ nomeprog &





  (ao invés de DISPLAY..., pode ser que você tenha que digitar: setenv
  DISPLAY local.linux.box:0.0.  Depende do seu interpretador de comandos
  remoto.)

  E voila!  Agora nomeprog rodará em maquina.remota.edu e será exibido
  na sua máquina.  Entretanto, não tente isto usando um modem, pois será
  lento demais para ser usável.



  44..  UUssaannddoo DDiirreettóórriiooss



  44..11..  DDiirreettóórriiooss:: NNooççõõeess PPrreelliimmiinnaarreess


  Nós vimos as diferenças entre arquivos no DOS e no Linux.  Quanto aos
  diretórios, no DOS o raiz é \, e no Linux é /.  Analogamente,
  diretórios aninhados são separados por \ no DOS, e por / no Linux.
  Exemplos de caminhos (paths):



       DOS:    C:\PAPERS\GEOLOGY\MID_EOC.TEX
       Linux:  /home/guido/papers/geology/middle_eocene.tex




  Como de costume, .. é o diretório pai e . é o diretório atual.
  Lembre-se que o sistema não permite que você faça cd, rd, ou md para
  onde quiser.  Cada usuário começa no seu diretório, chamado "home",
  dado pelo administrador do sistema; por exemplo, no meu PC, meu
  diretório home é /home/guido.



  44..22..  PPeerrmmiissssõõeess ddee DDiirreettóórriiooss


  Diretórios também têm permissões.  O que nós vimos na Seção
  ``Permissões e Propriedade'' também se aplica a diretórios (usuário,
  grupo, e outros).  Para um diretório, rx significa que você pode dar
  cd para esse diretório, e w significa que você pode apagar um arquivo
  nesse diretório (de acordo com as permissões do arquivo, é claro), ou
  o próprio diretório.

  Por exemplo, para evitar que outros usuários mexam em
  /home/guido/text:



       $ chmod o-rwx /home/guido/text






  44..33..  DDiirreettóórriiooss:: TTrraadduuzziinnddoo CCoommaannddooss






  DIR:            ls, find, du
  CD:             cd, pwd
  MD:             mkdir
  RD:             rmdir
  DELTREE:        rm -R
  MOVE:           mv





  44..33..11..  EExxeemmppllooss




       DOS                                     Linux
       ---------------------------------------------------------------------

       C:\GUIDO>DIR                            $ ls
       C:\GUIDO>DIR ARQUIVO.TXT                $ ls arquivo.txt
       C:\GUIDO>DIR *.H *.C                    $ ls *.h *.c
       C:\GUIDO>DIR/P                          $ ls | more
       C:\GUIDO>DIR/A                          $ ls -l
       C:\GUIDO>DIR *.TMP /S                   $ find / -name "*.tmp"
       C:\GUIDO>CD                             $ pwd
               n/a - veja observação           $ cd
               idem                            $ cd ~
               idem                            $ cd ~/temp
       C:\GUIDO>CD \OUTRO                      $ cd /outro
       C:\GUIDO>CD ..\TEMP\LIXO                $ cd ../temp/lixo
       C:\GUIDO>MD NEWPROGS                    $ mkdir newprogs
       C:\GUIDO>MOVE PROG ..                   $ mv prog ..
       C:\GUIDO>MD \PROGS\TURBO                $ mkdir /progs/turbo
       C:\GUIDO>DELTREE TEMP\LIXO              $ rm -R temp/lixo
       C:\GUIDO>RD NEWPROGS                    $ rmdir newprogs
       C:\GUIDO>RD \PROGS\TURBO                $ rmdir /progs/turbo




  Observações:


  1. para usar rmdir, o diretório a ser removido deve estar vazio.  Para
     apagar um diretório e todo o seu conteúdo, use rm -R (por sua
     própria conta e risco).

  2. o caractere '~' é um atalho para o nome do seu diretório.  Os
     comandos cd ou cd ~ mudam para o seu diretório home; o comando cd
     ~/tmp muda o diretório para /home/seu_home/tmp.

  3. cd - "desfaz" o último cd.



  55..  DDiissqquueetteess,, DDiissccooss RRííggiiddooss,, eettcc


  Há duas maneiras de se gerenciar dispositivos no Linux: a maneira do
  DOS e a do UNIX.





  55..11..  GGeerreenncciiaannddoo DDiissppoossiittiivvooss àà MMaanneeiirraa ddoo DDOOSS


  A maioria das distribuições do Linux inclui o pacote Mtools, um
  conjunto de comandos que são equivalentes às suas contrapartidas do
  DOS, mas começam com `m': i.e., mformat, mdir, mdel, mmd, e assim por
  diante.  Eles até preservam nomes-de-arquivos longos, mas não as
  permissões de arquivos. Se você configurar o Mtools, editando um
  arquivo chamado /etc/mtools.conf (um exemplo é fornecido com o
  pacote), poderá também acessar a partição DOS/Win, o CD-ROM e o
  unidade ZIP.  Entretanto, o comando mformat não funciona para formatar
  um disquete novo (nunca formatado).  Antes, você terá que rodar o
  seguinte comando, como superusuário:



       # fdformat /dev/fd0H1440




  Observação: você não pode acessar arquivos no disquete com um comando
  como, digamos, less a:arquivo.txt! Esta é a desvantagem da maneira DOS
  de montar disquetes.


  55..22..  GGeerreenncciiaannddoo DDiissppoossiittiivvooss àà MMaanneeiirraa UUNNIIXX


  O UNIX lida com dispositivos de uma forma diferente do DOS/Win.  Não
  há volumes separados como A: ou C:; um disco, seja um disquete ou o
  que quer que seja, se torna parte do sistema de arquivos local através
  de uma operação chamada "montagem".  Quando você terminar de usar o
  disco, você precisa "desmontá-lo" antes de ejetá-lo.

  Formatar um disco fisicamente é uma coisa, fazer um sistema de
  arquivos nele é outra.  O comando FORMAT A: do DOS faz ambas as
  coisas, mas no Linux há comandos separados.  Para formatar um
  disquete, veja acima; para criar um sistema de arquivos:



       # mkfs -t ext2 -c /dev/fd0H1440




  Você pode usar minix, vfat, dos ou outros formatos ao invés de ext2.
  Uma vez que o disquete esteja preparado, monte-o com o comando:



       # mount -t ext2 /dev/fd0 /mnt




  especificando o sistema de arquivos correto se você não for usar ext2.
  Agora você pode se referir aos arquivos do disquete.  Tudo o que você
  usava com A: ou B: agora é feito usando /mnt.  Exemplos:






  DOS                                     Linux
  ---------------------------------------------------------------------

  C:\GUIDO>DIR A:                         $ ls /mnt
  C:\GUIDO>COPY A:*.*                     $ cp /mnt/* .
  C:\GUIDO>COPY *.ZIP A:                  $ cp *.zip /mnt
  C:\GUIDO>EDIT A:FILE.TXT                $ jstar /mnt/file.txt
  C:\GUIDO>A:                             $ cd /mnt
  A:>_                                    /mnt/$ _




  Quando você tiver terminado, antes de ejetar o disquete você _d_e_v_e
  desmontá-lo com o comando



       # umount /mnt




  Obviamente, você precisa executar fdformat e mkfs somente em discos
  ainda não formatados.  Se você quiser usar o drive B: use /fd1H1440/ e
  fd1 ao invés de fd0H1440 e fd0 nos exemplos acima.

  Evidentemente, o que se aplica a disquetes se aplica a outros
  dispositivos; por exemplo, você pode querer montar outro disco rígido
  ou drive de CD-ROM.  Eis como montar o CD-ROM:



       # mount -t iso9660 /dev/cdrom /mnt




  Esta é a maneira "oficial" de montar seus discos, mas há um truque.
  Já que é um pouco aborrecedor ter que ser superusuário para montar um
  disquete ou CD-ROM, você pode permitir que todo usuário os monte
  assim:


  ·  como superusuário, faça o seguinte:



       # mkdir /mnt/a: ; mkdir /mnt/a ; mkdir /mnt/cdrom
       # chmod 777 /mnt/a* /mnt/cd*
       # # assegura que o dispositivo de CD-ROM está correto
       # chmod 666 /dev/hdb ; chmod 666 /dev/fd*





  ·  adicione as seguintes linhas em /etc/fstab:



       /dev/cdrom      /mnt/cdrom  iso9660 ro,user,noauto          0       0
       /dev/fd0        /mnt/a:     msdos   user,noauto             0       0
       /dev/fd0        /mnt/a      ext2    user,noauto             0       0


  Agora, para montar um disquete do DOS, um disquete com sistema de
  arquivos ext2, e um CD-ROM:



       $ mount /mnt/a:
       $ mount /mnt/a
       $ mount /mnt/cdrom




  Agora, /mnt/a, /mnt/a:, e /mnt/cdrom podem ser acessados por todos os
  usuários.  Lembre-se que permitir que todos montem discos dessa
  maneira é um furo de segurança, se você se importa.

  Dois comandos úteis são df, que dá informação sobre os sistemas de
  arquivos montados, e du nomedir, que relata o espaço em disco ocupado
  pelo diretório.



  55..33..  FFaazzeennddoo uummaa CCóóppiiaa ddee SSeegguurraannççaa


  Há vários pacotes para lhe ajudar, mas o mínimo que você pode fazer
  para cópia de segurança multi-volume é (como superusuário):



       # tar -M -cvf /dev/fd0H1440 dir_to_backup/




  Assegure-se de ter um disquete formatado no unidade, e vários outros
  prontos.  Para restaurar suas coisas, insira o primeiro disquete na
  unidade e faça:



       # tar -M -xpvf /dev/fd0H1440






  66..  EE oo WWiinnddoowwss??


  O "equivalente" ao Windows é o sistema gráfico X Window System, ou X11
  para encurtar.  Ao contrário do Windows e Mac, o X11 não foi projetado
  para ser fácil de usar ou ter boa aparência, e sim para fornecer
  recursos gráficos para estações de trabalho UNIX.  Estas são as
  principais diferenças:


  ·  enquanto o Windows tem a mesma aparência ("look and feel") no mundo
     inteiro, o X11 não: é muito mais configurável.  A aparência geral
     do X11 é dada por um componente chave chamado "gerenciador de
     janelas" ("window manager"), para o qual você tem uma grande
     variedade de escolha: fvwm, básico mas bonitinho e eficiente quanto
     a memória, fvwm2-95, Afterstep, e muitos mais.  O gerenciador de
     janelas normalmente é chamado por um arquivo chamado .xinitrc;

  ·  seu gerenciador de janelas pode ser configurado de modo que uma
     janela se comporte como no Windows: você clica em cima da janela e
     ela vem para o primeiro plano.  Outra possibilidade é a janela vir
     para o primeiro plano quando o mouse passar sobre ela ("foco").
     Ainda, a colocação das janelas na tela pode ser automática ou
     interativa: se um quadro estranho aparece ao invés do seu programa,
     clique onde você quer que ele apareça.

  ·  a maioria das ações pode ser personalizada editando-se um ou mais
     arquivos de configuração.  Leia a documentação do seu gerenciador
     de janelas; o arquivo de configuração pode ser .fvwmrc, .fvwm2rc95,
     .steprc, etc. Um arquivo de exemplo de configuração é normalmente
     encontrado em /etc/X11/nome-do-gerenciador/system.nome-do-
     gerenciador;

  ·  aplicativos do X11 são escritos usando-se bibliotecas especiais
     ("widget sets"); como existem várias, os aplicativos têm aparência
     diferente.  Os mais básicos são os que usam os pequenos objetos do
     tipo Athena (aparência 2--D; xdvi, xman, xcalc); outros usam Motif
     (netscape), outros usam Tcl/Tk, XForms, Qt, Gtk, e o que tiver.
     Algumas---não --> --todas---destas bibliotecas fornecem
     aproximadamente o mesmo "look and --> --feel" do Windows;

  ·  bem, nem tanto.  O "feel", infelizmente, pode ser incoerente.  Por
     exemplo, se você seleciona uma linha de texto usando o mouse e
     pressiona <BACKSPACE>, você espera que a linha desapareça, certo?
     Isto não funciona com aplicativos baseados no Athena, mas funciona
     com Motif, Qt, Gtk, e Tcl/Tk;

  ·  o funcionamento das barras de rolagem e do redimensionamento
     depende do gerenciador de janelas e do conjunto de pequenos
     objetos.  Dica: se você percebe que as barras de rolagem não
     funcionam como esperado, tente usar o botão do meio ou os dois
     botões juntos para movê-las;

  ·  os aplicativos não têm ícones por default, mas podem ter vários.  A
     maioria dos gerenciadores de janela tem um menu que você chama
     clicando na área de trabalho ("root window", ou "janela
     principal"); o menu pode ser personalizado, claro.  Para mudar a
     aparência da janela principal, use xsetroot ou xloadimage;

  ·  o clipboard ("área de transferência") só pode conter texto, e tem
     um comportamento estranho.  Uma vez que você tenha selecionado uma
     porção de texto, ele já está copiado no clipboard: vá para outro
     lugar e pressione o botão do meio para colar.  Há um aplicativo,
     xclipboard, que permite múltiplos buffers de clipboard;

  ·  drag and drop ("arrastar e soltar") é opcional, e só funcionará se
     você usar aplicativos X11 que tenham suporte a isso.

  Para economizar memória, você deve usar aplicativos que usem as mesmas
  bibliotecas, mas na prática isso é difícil.

  O projeto K Desktop Environment (KDE) pretende fazem com que o X11
  tenha aparência e comportamento consistentes, como no Windows;
  atualmente está na fase beta mas, acredite, é impressionante.  Veja
  <http://www.kde.org>.



  77..  PPeerrssoonnaalliizzaannddoo oo SSiisstteemmaa





  77..11..  AArrqquuiivvooss ddee IInniicciiaalliizzaaççããoo ddoo SSiisstteemmaa


  Dois arquivos importantes no DOS são AUTOEXEC.BAT e CONFIG.SYS, que
  são usados para inicializar o sistema, definir algumas variáveis de
  ambiente como PATH e FILES, e possivelmente rodar um programa ou
  arquivo de lote.  No Linux há vários arquivos de inicialização, alguns
  dos quais seria melhor você não mexer até que você saiba exatamente o
  que está fazendo.  De qualquer maneira, eu lhe digo que os mais
  importantes são:



       ARQUIVOS                                OBSERVAÇÕES

       /etc/inittab                            não mexa por enquanto!
       /etc/rc.d/*                             idem




  Se tudo o que você precisa é definir o $PATH e outras variáveis de
  ambiente, ou você quer mudar as mensagens de entrada no sistema, ou
  rodar um programa automaticamente após a entrada no sistema, dê uma
  olhada nos seguintes arquivos:



       ARQUIVOS                                OBSERVAÇÕES

       /etc/issue                              define a mensagem pré-entrada no sistema
       /etc/motd                               define a mensagem pós-entrada no sistema
       /etc/profile                            define $PATH e outras variáveis, etc.
       /etc/bashrc                             define apelidos e funções, etc.
       /home/your_home/.bashrc                 define os seus apelidos e funções
       /home/your_home/.bash_profile   ou
       /home/your_home/.profile                define ambiente e inicia seus programas




  Se o último arquivo listado existir (observe que é um arquivo oculto),
  será lido depois da entrada no sistema e os comandos contidos nele
  serão executados.

  Exemplo---veja este .bash_profile:




















  ______________________________________________________________________
  # Isto é um comentário
  echo Ambiente:
  printenv | less   # equivalente ao comando SET do DOS
  alias d='ls -l'   # é fácil entender o que é um apelido
  alias up='cd ..'
  echo "Lembre-se que o path é "$PATH
  echo "Hoje é `date`"  # usa a saída do comando 'date'
  echo "Tenha um bom dia, "$LOGNAME
  # O que segue é uma "função de shell"
  ctgz() # Lista o conteúdo de um arquivo .tar.gz
  {
    for file in $*
    do
      gzip -dc ${file} | tar tf -
    done
  }
  # fim de .profile
  ______________________________________________________________________



  $PATH e $LOGNAME, são variáveis de ambiente.  Há muitas outras que
  podem ser alteradas; por exemplo, para programas como less ou bash,
  LPM.



  77..22..  AArrqquuiivvooss ddee IInniicciiaalliizzaaççããoo ddee PPrrooggrraammaass


  Sob o Linux, virtualmente tudo pode ser personalizado de acordo com
  suas necessidades.  A maioria dos programas tem um ou mais arquivos de
  inicialização nos quais você pode mexer, normalmente chamados
  .nomedoprogramarc e localizados no seu diretório home.  Os primeiros
  que você vai querer modificar são:


  ·   .inputrc: usado por bash para definir associações de teclas;

  ·   .xinitrc: usado por startx para inicializar o X Window System;

  ·   .fvwmrc: usado pelo gerenciador de janelas fvwm.

  ·   .joerc: usado pelo editor joe;

  ·   .jedrc: usado pelo editor jed;

  ·   .pinerc: usado pelo leitor de mail pine;

  ·   .Xdefault: usado por vários programas X.

  Para todos esses, e os outros que você encontrará uma hora ou outra,
  LPM.  Como uma observação final, eu sugiro que você veja o COMO FAZER
  Configuração em
    <http://sunsite.unc.edu/mdw/HOWTO/Config-HOWTO.html> .



  88..  UUmm ppoouuccoo ddee pprrooggrraammaaççããoo






  88..11..  RRootteeiirrooss ppaarraa SShheellll:: AArrqquuiivvooss ..BBAATT ccoomm EEsstteerróóiiddeess

  Se você usava arquivos .BAT para criar atalhos para longas linhas de
  comando (eu usei muito), pode fazer isso inserindo linhas de apelido
  apropriadas (veja exemplo acima) em profile ou .profile.  Mas, se seus
  .BATs eram mais complicados, você vai adorar a linguagem de roteiros
  do interpretador de comandos: é tão poderosa quanto QBasic, se não for
  mais.  Tem variáveis, estruturas como while, for, case, if... then...
  else, e vários outros recursos: pode ser uma boa alternativa a uma
  linguagem de programação "de verdade".

  Para escrever um roteiro---o equivalente a um arquivo .BAT no
  DOS---tudo o --> --que você tem a fazer é escrever um arquivo ASCII
  contendo as instruções, --> --gravá-lo, e torná-lo executável com o
  comando chmod +x --> --<scriptfile>. Para executá-lo, digite o nome do
  arquivo.

  Um aviso: o editor do sistema chama-se vi, e na minha experiência a
  maioria dos novos usuários acha-o muito difícil de usar.  Eu não vou
  explicar como usá-lo, porque eu não gosto do vi e não o uso.  Aqui
  basta dizer que:


  ·  para inserir texto, digite `i' e depois o seu texto;

  ·  para apagar caracteres, digite <ESC> e depois `x';

  ·  para sair do vi sem salvar, digite <ESC> e depois :q!

  ·  para salvar e sair, digite <ESC> e depois :wq.

  Um bom editor para iniciantes é o joe: executando-o como jstar, você
  obterá as mesmas associações de teclas que o editor do DOS. jed no
  modo WordStar ou IDE é melhor ainda.  Consulte a Seção ``Onde
  Encontrar Aplicativos'' para saber onde pegar esses editores.

  Escrever roteiros do bash é um assunto tão vasto que preencheria um
  livro, e eu não me aprofundarei mais nesse tópico.  Eu só darei um
  exemplo de script de shell, do qual você poderá extrair algumas regras
  básicas:


























  ______________________________________________________________________
  #!/bin/sh
  # sample.sh
  # Isto é um comentário
  # não mude a primeira linha, ela precisa estar lá
  echo "O sistema é: `uname -a`" # usa a saída do comando
  echo "Meu nome é $0" # variáveis embutidas
  echo "Você me deu os seguintes $# parâmetros: "$*
  echo "O primeiro parâmetro: "$1
  echo -n "Como você se chama? " ; read seu_nome
  echo note a diferença: "oi $your_name" # quotando com "
  echo note a diferença: 'oi $your_name' # quotando com '
  DIRS=0 ; ARQS=0
  for arquivo in `ls .` ; do
    if [ -d ${arquivo} ] ; then  # se arquivo for um diretório
      DIRS=`expr $DIRS + 1`  # DIRS = DIRS + 1
    elif [ -f ${arquivo} ] ; then
      ARQS=`expr $ARQS + 1`
    fi
    case ${arquivo} in
      *.gif|*jpg) echo "${arquivo}: arquivo gráfico" ;;
      *.txt|*.tex) echo "${arquivo}: arquivo texto" ;;
      *.c|*.f|*.for) echo "${arquivo}: arquivo fonte" ;;
      *) echo "${arquivo}: arquivo genérico" ;;
    esac
  done
  echo "há ${DIRS} diretórios e ${ARQS} arquivos"
  ls | grep "ZxY--!!!WKW"
  if [ $? != 0 ] ; then # código de saída do último comando
    echo "ZxY--!!!WKW não encontrado"
  fi
  echo "pront... digite 'man bash' se você quiser mais informações."
  ______________________________________________________________________





  88..22..  CC

  No UNIX, a linguagem do sistema é C, quer queira, quer não.  Muitas
  outras linguagens (Java, FORTRAN, Pascal, Lisp, Basic, Perl, awk...)
  também estão disponíveis.

  Pressupondo que você conhece C, aqui estão algumas diretrizes para
  vocês que foram "estragados" pelo Turbo C++ ou algum outro do DOS.  O
  compilador C do Linux se chama gcc, e não tem todas aquelas
  "frescuras" que normalmente acompanham suas contrapartidas do DOS: não
  há IDE (ambiente integrado de desenvolvimento), ajuda on-line,
  depurador integrado, etc.  É apenas um seco compilador de linha de
  comando, muito poderoso e eficiente.  Para compilar seu hello.c
  padrão, você deve digitar:


       $ gcc hello.c




  que criará um arquivo executável chamado a.out.  Para dar um nome
  diferente ao executável, faça



       $ gcc -o hola hello.c

  Para vincular uma biblioteca ao programa, adicione a opção
  -l<libname>. Por exemplo, para vincular a biblioteca matemática:



       $ gcc -o progmat progmat.c -lm




  (A opção -l<libname> força o gcc a vincular a biblioteca
  /usr/lib/lib<libname>.a; então -lm vincula /usr/lib/libm.a).

  Até aqui, tudo bem.  Mas, se seu programa for composto de vários
  arquivos fontes, você terá que usar o utilitário make.  Suponha que
  você tenha escrito um analisador de expressões: seu arquivo fonte se
  chama parser.c e #inclui dois arquivos header, parser.h e xy.h.
  Depois você quer usar rotinas de parser.c em um programa, digamos,
  calc.c, que por sua vez #inclui parser.h.  Que bagunça!  O que você
  tem que fazer para compilar calc.c?

  Você terá que escrever um arquivo chamado makefile, que diz ao
  compilador quais as dependências entre os arquivos fontes e objetos.
  No nosso exemplo:


  ______________________________________________________________________
  # Isto é um makefile, usado para compilar calc.c
  # Pressione a tecla <TAB> onde indicado!

  calc: calc.o parser.o
  <TAB>gcc -o calc calc.o parser.o -lm
  # calc depende de dois arquivos objeto: calc.o e parser.o

  calc.o: calc.c parser.h
  <TAB>gcc -c calc.c
  # calc.o depende de dois arquivos fonte

  parser.o:  parser.c parser.h xy.h
  <TAB>gcc -c parser.c
  # parser.o depende de três arquivos fonte

  # fim do makefile.
  ______________________________________________________________________



  Salve este arquivo como Makefile e digite make para compilar seu
  programa; ou salve como calc.mak, digite make -f calc.mak e, é claro,
  LPM.  Você pode conseguir ajuda sobre funções C, que são cobertas pela
  seção 3 das páginas de manual; por exemplo,



       $ man 3 printf




  Para depurar seus programas, use gdb. info gdb para aprender a usá-lo.

  Há várias bibliotecas disponíveis; entre as primeiras que você vai
  querer usar estão ncurses, para lidar com modo texto, e svgalib, para
  modo gráfico.  Se você se sentir-se corajoso o suficiente para abordar
  programação em X11, há bibliotecas como XForms, Qt, Gtk e muitas
  outras, que tornam a programação em X11 uma moleza.  Dê uma olhada em
  <http://www.xnet.com/~blatura/linapp6.html> .

  Muitos editores podem funcionar como um IDE; emacs e jed, por exemplo,
  também permitem coloração por sintaxe, identação automática e assim
  por diante.  Alternativamente, pegue o pacote rhide de
  <ftp://sunsite.unc.edu:/pub/Linux/devel/debuggers/>.  É um clone do
  IDE Borland, e é provável que você goste.



  99..  OO 11%% RReessttaannttee


  Mais que 1%, na verdade...



  99..11..  UUssaannddoo ttaarr && ggzziipp

  No Unix há alguns programas amplamente usados para arquivar e
  compactar arquivos.  tar é usado para fazer "pacotes" ---é como PKZIP
  mas ele não compacta, apenas empacota.  Para fazer um novo pacote:



       $ tar -cvf <nome_do_pacote.tar> <file> [file...]




  Para extrair arquivos de um pacote:



       $ tar -xpvf <nome_do_pacote.tar> [file...]




  Para listar o conteúdo de um pacote:



       $ tar -tf <nome_do_pacote.tar> | less




  Você pode compactar arquivos usando compress, que é obsoleto e não
  deve ser mais usado, ou gzip:



       $ compress <file>
       $ gzip <file>




  que cria um arquivo compactado com extensão (compress) ou .gz (gzip).
  Esses programas compactam apenas um arquivo de cada vez.  Para
  descompactar, use:




  $ compress -d <file.Z>
  $ gzip -d <file.gz>




  LPM.

  Também há os utilitários unarj, zip e unzip (compatível com PK??ZIP).
  Arquivos com extensão .tar.gz ou .tgz (empacotado com tar, depois
  compactados com gzip) são tão comuns no mundo Unix como arquivos .ZIP
  no DOS.  Aqui está como listar o conteúdo de um archive  .tar.gz:



       $ tar -ztf <arquivo.tar.gz> | less






  99..22..  IInnssttaallaannddoo AApplliiccaattiivvooss


  Primeiro: instalar pacotes é trabalho do superusuário.  A maioria dos
  aplicativos do Linux são distribuídos como um arquivo .tar.gz, que
  normalmente contém um diretório chamado /nomedopacote/ contendo
  arquivos e/ou subdiretórios.  Uma boa regra é instalar esses pacotes a
  partir do diretório /usr/local com o comando



       # tar -zxf <archive.tar.gz>




  e depois ler o arquivo README ou INSTALL.  Em muitos casos, o pacote é
  distribuído em fonte, que você terá que compilar para criar os
  binários; freqüentemente, bastará digitar make e depois make install.
  Obviamente, você precisará do compilador gcc ou g++.

  Outros pacotes devem ser descompactados a partir de /; é o caso dos
  arquivos .tgz do Slackware.  Outros arquivos contêm os arquivos, mas
  não um subdiretório.  Sempre liste o conteúdo do pacote antes de
  instalar.

  As distribuições Debian e Red Hat têm seu próprio formato de pacotes;
  respectivamente, .deb e .rpm.  Este está ganhando ampla aceitação;
  para instalar um pacote .rpm, digite



       # rpm -i pacote.rpm






  99..33..  DDiiccaass IInnddiissppeennssáávveeiiss


  CCoommpplleettaammeennttoo ddee ccoommaannddoo: pressionar <TAB> quando da emissão de um
  comando completará a linha para você.  Exemplo: se você quer executar
  gcc este_e_um_nome_longo.c;, basta digitar gcc est<TAB> (se você tiver
  outros arquivos que comecem com os mesmos caracteres, forneça
  caracteres suficientes para resolver qualquer ambiguidade).

  RRoollaaggeemm ddee tteellaa: pressionar <SHIFT + PAG UP> (a tecla cinza) lhe
  permite rolar a tela algumas páginas para trás, dependendo de quanta
  memória de vídeo você tiver.

  IInniicciiaalliizzaannddoo aa tteellaa: se acontecer de você executar more ou cat em um
  arquivo binário, sua tela pode ficar cheia de lixo.  Para consertar,
  digite reset, ou esta seqüência de caracteres: echo CTRL-V ESC c
  RETURN.

  CCoollaannddoo tteexxttoo: no console, veja abaixo; no X, clique e arraste para
  selecionar o texto um janela xterm, e depois clique o botão do meio
  (ou os dois botões juntos se você tiver um mouse de 2 botões) para
  colar.  Há também o xclipboard (aliás, somente para texto); não se
  confunda pela demora da resposta.

  UUssaannddoo oo mmoouussee: se você instalou o gpm, um driver de mouse para o
  console, você pode clicar e arrastar para selecionar texto, e depois
  clicar para colar o texto selecionado.  Funciona de um CV ("console
  virtual") para outro.

  MMeennssaaggeennss ddoo kkeerrnneell: dê uma olhada em /var/adm/messages ou
  /var/log/messages como superusuário para ver o que o kernel tem a lhe
  dizer, incluindo mensagens de inicialização.  O comando dmesg também é
  útil.



  99..44..  OOnnddee EEnnccoonnttrraarr AApplliiccaattiivvooss


  Se você está pensando se existem aplicativos para substituir os seus
  antigos do DOS/Win, eu sugiro que você consulte os principais
  repositórios de software para Linux:
    <ftp://sunsite.unc.edu/pub/Linux> ,
   <ftp://tsx-11.mit.edu/pub/linux> , e
   <ftp://ftp.funet.fi/pub/Linux> .  Outro excelente lugar é a "Linux
  Applications and Utilities Page" em
    <http://www.xnet.com/~blatura/linapps.shtml> .



  99..55..  AAllgguummaass CCooiissaass qquuee VVooccêê nnããoo CCoonnsseegguuiiaa FFaazzeerr


  O Linux pode fazer um monte de coisas que eram chatas, difíceis ou
  impossíveis de se fazer no DOS/Win.  Aqui está uma pequena lista que
  pode aguçar seu apetite:


  ·  at permite rodar programas em uma hora determinada;

  ·  awk é uma linguagem, simples mas poderosa, para manipular arquivos
     de dados (e mais).  Por exemplo, sendo data.dat seu arquivo de
     dados multi-campos,



       $ awk '$2 ~ "abc" {print $1, "\t", $4}' data.dat




  imprime os campos 1 e 4 de cada linha de data.dat cujo segundo campo
  contenha "abc".

  ·  cron é útil para fazer tarefas periodicamente, em determinadas
     datas e horas.  Digite man 5 crontab.

  ·  file <arquivo> diz o que é o arquivo (texto ASCII, executável,
     pacote, etc.);

  ·  find (veja também a Seção ``Diretórios: Traduzindo Comandos'') é um
     dos comandos mais poderosos e mais úteis.  É usado para encontrar
     arquivos que correspondam a várias características dadas, e para
     desempenhar ações sobre esses arquivos.  O uso geral de find é:



       $ find <diretório> <expressão>





  onde <expressão> inclui critérios de busca e ações.  Exemplos:



       $ find . -type l -exec ls -l {} \;





  encontra todos os arquivos que sejam ligações simbólicas e mostra para
  o que cada um aponta.



       $ find / -name "*.old" -ok rm {} \;





  encontra todos os arquivos que correspondam ao padrão e os apaga,
  pedindo sua confirmação antes.



       $ find . -perm +111





  encontra todos os arquivos cujas permissões correspondam a 111
  (executável).



       $ find . -user root





  encontra todos os arquivos que pertençam ao superusuário.  Há várias
  possibilidades aqui---LPM.

  ·  grep encontra padrões de texto em arquivos.  Por exemplo,



       $ grep -l "geologia" *.tex





  lista os arquivos *.tex que contenham a palavra "geologia".  A
  variante zgrep funciona em arquivos gzipados. LPM;

  ·  eexxpprreessssõõeess rreegguullaarreess são uma maneira complexa mas muito poderosa de
     fazer busca em texto.  Por exemplo, ^a[^a-m]X{4,}txt$ corresponde a
     uma linha que começa com `a', seguida por qualquer caractere exceto
     os que estão no intervalo a-m, seguido por 4 ou mais `X', e termina
     com `txt'.  Expressões regulares são usadas em editores avançados,
     less, e muitos outros programas.  Digite man grep para uma
     introdução.

  ·  script <arquivo_script> copia o conteúdo da tela em arquivo_script
     até que você digite o comando exit.  Útil para depuração;

  ·  sudo permite que os usuários façam algumas das tarefas do
     superusuário (p.ex., formatar e montar discos; LPM);

  ·  uname -a dá informações sobre o seu sistema;

  ·  Os seguintes comandos freqüentemente são úteis: bc, cal, chsh, cmp,
     cut, fmt, head, hexdump, nl, passwd, printf, sort, split, strings,
     tac, tail, tee, touch, uniq, w, wall, wc, whereis, write, xargs,
     znew. LPM.



  99..66..  EExxtteennssõõeess CCoommuunnss ee PPrrooggrraammaass RReellaacciioonnaaddooss


  Você pode se deparar com várias extensões de arquivos.  Excluindo as
  mais exóticas (i.e. fontes, etc.), aqui está uma lista de quem é o
  que:


  ·  1 ... 8: man pages.  No caso improvável de você ainda não ter,
     pegue o man.

  ·  arj: pacote feito com o arj.

  ·  dvi: arquivo de saída produzido pelo TeX (veja abaixo).  xdvi para
     visualizá-lo;  dvips para transformá-lo em arquivo PostScript .ps.

  ·  gz: pacote feito com gzip.

  ·  info: arquivo info (tipo de alternativa às páginas de manual).
     Pegue o info.

  ·  lsm: arquivo do Linux Software Map.  É um arquivo ASCII contendo a
     descrição de um pacote.

  ·  ps: arquivo PostScript.  Para visualizá-lo ou imprimi-lo pegue gs
     e, opcionalmente, ghostview ou gv.


  ·  rpm: pacote Red Hat.  Você pode instalá-lo em qualquer sistema
     usando o gerenciador de pacotes rpm.

  ·  taz, tar.Z: pacote feito com o tar e compactado com compress.

  ·  tgz, tar.gz: pacote feito com o tar e compactado com gzip.

  ·  tex: arquivo texto a ser submetido ao TeX, um poderoso sistema de
     composição.  Pegue o pacote tex, disponível em várias
     distribuições; mas cuidado com o NTeX, que tem fontes corrompidas e
     é incluído em algumas versões do Slackware.

  ·  texi: arquivo texinfo, que pode produzir tanto arquivos TeX como
     info (qv. info).  Pegue o texinfo.

  ·  xbm, xpm, xwd: arquivo gráfico.  Pegue o xpaint.

  ·  Z: pacote feito com compress.



  99..77..  CCoonnvveerrtteennddoo AArrqquuiivvooss


  Se você precisar intercambiar arquivos texto entre DOS/Win e Linux,
  cuidado com o problema do "fim de linha".  No DOS, cada linha termina
  com CR/LF ("carriage return" e "line feed"), enquanto no Linux termina
  com LF.  Se você tentar editar um arquivo texto do DOS no Linux, cada
  linha provavelmente terminará com um estranho caractere `M'; um texto
  do Linux sob o DOS aparecerá como uma única e quilométrica linha, sem
  parágrafos.  Há um par de ferramentas, dos2unix e unix2dos, para
  converter os arquivos. [NT: Há também o todos, e o utilitário tr]

  Se seus arquivos contiverem caracteres acentuados, assegure-se de que
  eles tenham sido feitos no Windows (com o Write ou Notepad, digamos) e
  não sob o DOS; caso contrário, todos os caracteres acentuados ficarão
  bagunçados.

  Para converter arquivos Word ou WordPerfect para texto puro, a solução
  é um pouco mais difícil, mas possível.  Você precisará de uma das
  ferramentas que podem ser encontradas nos sites CTAN; uma delas é
    <ftp://ftp.tex.ac.uk> .  Pegue o pacote word2x do diretório
  /pub/tex/tools/', ou tente um dos pacotes disponíveis no diretório
  /pub/tex/support/. Eu só experimentei word2x, e funciona muito bem.



  1100..  FFiimm ddaa HHiissttóórriiaa,, ppoorr EEnnqquuaannttoo


  Parabéns! Você aprendeu um pouquinho de UNIX e está pronto para
  começar a trabalhar.  Lembre-se que seu conhecimento do sistema ainda
  é limitado, e que espera-se que você pratique mais com o Linux para
  usá-lo confortavelmente.  Mas se tudo o que você precisa fazer é pegar
  uma porção de aplicativos e começar a trabalhar neles, o que eu incluí
  aqui é suficiente.

  Tenho certeza de que você gostará de usar o Linux e continuará
  aprendendo mais sobre ele---com todo mundo é assim.  Eu aposto também
  que você nunca voltará ao DOS/Win! Eu espero ter me feito entender, e
  que tenha feito um bom serviço aos meus 3 ou 4 leitores.





  1100..11..  DDiirreeiittooss AAuuttoorraaiiss


  Documentos COMO FAZER do Linux são amparados pelos direitos autorais
  dos seus respectivos autores. Eles podem ser reproduzidos e
  distribuidos completos ou em partes, através de qualquer meio físico
  ou eletrônico, desde que esta notificação de direitos autorais seja
  mantida em todas as cópias. A redistribuição comercial é permitida e
  encorajada; todavia, o autor gostaria de ser notificado de qualquer
  uma destas distribuições.

  Todas as traduções, trabalhos derivados ou agregados incorporando
  qualquer documento COMO FAZER do Linux deve ser amparado por esta
  notificação de direitos autorais. Isto é, você não pode produzir um
  trabalho derivado de um COMO FAZER e impor restrições adicionais a sua
  distribuição. Exceções a estas regras podem ser feitas sob certas
  condições; por favor contacte o cordenador do COMO FAZER do Linux no
  endereço dado abaixo.

  Rapidamente falando, queremos promover a disseminação desta informação
  através de quantos canais for possível. Todavia, desejamos manter os
  direitos autorais nos documentos COMO FAZER, e gostaríamos de ser
  notificados de qualquer plano para redistribuir os COMO FAZER.

  Se você tiver qualquer dúvida, por favor contacte Tim Bynum,
  cordenador do COMO FAZER do Linux, em linux-howto@sunsite.unc.edu
  através do correio eletrônico.



  1100..22..  NNoottaa ddoo AAuuttoorr


  "From DOS to Linux HOWTO" foi escrito por Guido Gonzato,
  guido@ibogfs.cineca.it.  Muito obrigado a Matt Welsh, autor de "Linux
  Installation and Getting Started", a Ian Jackson, autor de "Linux
  frequently asked questions with answers", a Giuseppe Zanetti, autor de
  "Linux", a todos aqueles que me enviaram sugestões, e especialmente a
  Linus Torvalds e GNU, que nos deram o Linux.

  Este documento é fornecido sem garantias.  Eu me esforcei para
  escrevê-lo com o máximo de exatidão, mas se você usar a informação
  nele contida, estará o fazendo por sua própria conta e risco.  Em
  nenhuma hipótese eu serei responsável por quaisquer danos resultantes
  do uso desta obra.

  Seu retorno é bem-vindo.  Para quaisquer pedidos, sugestões, flames,
  etc., sinta-se à vontade para entrar em contato comigo. [NT: sugestões
  e críticas (construtivas) a respeito da tradução devem ser enviadas
  para o mantenedor atual].

  Curta o Linux e a vida,

  Guido   =8-)