LINUX NEWBIE ADMINISTRATOR GUIDE
ver. 0.154 2001-09-02 by Stan, Peter and Marrei Klimas

A última versão deste guia está disponível em http://sunsite.dk/linux-newbie.
Copyright (c) <1999,2000,2001> by Peter and Stan Klimas. Sua resposta, comentários, correções, e melhorias são apreciados. Envie-os para linux_nag@canada.com Este material pode ser distribuído somente sob os termos e condições estabelecidas pela Open Publication License, v1.0, 8 ou posterior http://opencontent.org/openpub/ com as modificações estabelecidas em lnag_licence.html.





Parte 7: Aprendendo com Linux



Conteúdo :
7.1 Ferramentas Avançadas Linux de Processamento de Textos: emacs, vi, joe, diff, patch, grep, expressões regulares, sed, (g)awk, cvs, sort e ascii, gpg (pgp)
7.2 Programação simples sob Linux: perl, python, tcl/tk/wish, c/c++, kdevelop, glade
7.3 Ferramentas matemáticasdc, bc e "regular" calculator, scilab,geração de caracteres randômicos(random)na linha de comando
7.4 : Miscelânea:   wine, RAID ferramentas RAID de disco, controle de banda de rede(network traffic shaping). 



Intro: Esta página contem comandos que não são essenciais para novatos mas podem ser ótimos e/ou muito produtivos se você gastar seu tempo para aprende-los. Acima de tudo, eles podem ser bastante educacionais - - o Linux é uma grande plataforma para aprendizado.

7.1 Ferramentas avançadas Linux de Processamento de Textos

/usr/games/banner -w79 "Happy Birthday, Marie" > marie.txt
Cria um banner ascii com o comprimento de 79 caracteres. A saída é enviada para o arquivo marie.txt. Divertida, uma ferramenta a moda antiga.

script
Registra minha sessão corrente no terminal texto no arquivo texto typescript . O registro termina quando eu digito exit ou pressiono <Ctrl>d.

emacs
(no terminal X) O editor de textos emacs. Editor de textos avançado e sofisticado. Parece que é somente para guris: "emacs não é apenas um editor, é um modo de viver". Emacs certamente parece rico ou sem gosto, dependendo de seu ponto de vista. Há comumente 3 versões de emacs instaladas em seu sistema: (1) texto-somente: digite emacs em um terminal texto (não em X-windows) (Eu evito isto como fogo); (2) modo gráfico: digite emacs em um terminal X (facilmente usável mesmo por um novato se você gastar algum tempo para aprende-lo); e (3) modo X-windows: digite "xemacs" em um terminal X-windows.

vi
O famoso(notório?) editor de textos "vi"(definitivamente não recomendado para novatos). Para sair do "vi" (nenhuma alteração a ser salva) use estes cinco caracteres: <ESC>:q!<Enter> Eu uso o editor de textos pico e não preciso nunca de vi(bem, a menos que tenha que desmontar o subsistema /usr e modificar/editar alguns arquivos de configuração, então vi é o único editor disponível). Para ser agradável, as distribuições modernas Linux usam vim (="vi improved[vi melhorado]") no lugar de vi, e vim é de alguma forma melhor que o vi original costuma ser. A interface gráfica de vi está também disponível (digite gvim em um terminal X).

Os experts adoram vi, mas vi é definitivamente difícil a menos que você o use todos os dias. Eis uma opinião de um não-novato sobre vi (http://linuxtoday.com/stories/16620.html):
"Eu fui apresentado ao vi em 1988 e eu o odiei. Eu era novato no colégio. VI parecia arcaico,complicado e imperdoável. Passados 12 anos e eu amo vi, ele é quase o único editor que uso. Por que a mudança? Eu realmente aprendi a usar vi... Agora vejo vi para o que ele realmente é , um editor flexível, poderoso, e cheio de recursos..."

Uma curta introdução aos comandos e modos básicos vi podem ser vistos em http://www.thelinuxgurus.org/vitut.shtml.

Para sua diversão, você pode também experimentar o ainda mais antigo editor ed (simplesmente digite ed na linha de comando).

joe
Um bom e relativamente amigável editor de textos ascii. Aos meus olhos, joe deveria vir depois de pico se eu pudesse me lembrar das combinações de teclas do WordStar ou dos ambientes Borland-IDEs.

nano
Esta é uma substituição GNU nova em folha(March 2001) para o pico. Ele trabalha e se parece como o pico, mas é menor, melhor e licenciado e esperado com uma peça de software decente para Linux  Ainda não incluído com RH7.0 ou MDK7.2, mas é logo esperado.

khexedit
(no terminal X) Editor hexadecimal simples. Um outro editor hexadecimal é hexedit (baseado em texto, menos amigável).  Editores hexa são usados para edição binária de arquivos (não-ASCII).

diff arquivo1 arquivo2 > arquivo_de_diferenças
Compara o conteúdo de dois arquivos e lista quaisquer diferenças. Salva a saída no arquivo arquivo_de_diferenças.

sdiff file1 file2
Comparacao lado a lado de dois arquivos textos. A saída vai para a saída padrão a qual normalmente é a tela.

patch file_to_patch patchfile
Aplica o patch(um arquivo produzido pelo comando diff, o qual lista diferenças entre dois arquivos) chamado patchfile ao arquivo file_to_patch. Se o patch foi criado usando o comando anterior, eu usaria : patch file1 patchfile para transformar o arquivo file1 no arquivo file2.

grep filter
Pesquisa o conteúdo de arquivos textos por argumentos. Definitivamente produtivo, deve-se aprender pelo menos o básico deste comando.

Um simples exemplo. O comando:
cat * | grep my_word | more
pesquisará todos os arquivos do diretório corrente(exceto arquivos que se iniciam por um .(ponto)) e mostrará as linhas que contem o string "my_word".

Uma forma mais curta para se obter o mesmo resultado é:

grep my_word * |more

Os argumentos são especificados usando uma notação padrão e poderosa chamada de expressões regulares”.

Existe também uma versão recursiva do comando grep chamada de rgrep. O comando abaixo irá pesquisar todos os arquivos no diretório corrente e seus subdiretórios pelo string my_word e listará os nomes dos arquivos e as linhas onde o string for encontrado:

rgrep -r my_word . | more

Expressões regulares (regexpr)
As expressões regulares são usadas para pesquisas de strings, substituições, etc. Elas são frequentemente utilizadas com utilitários(por exemplo,, grep, sed) e linguagens de programação(por exemplo, perl). O comando dir, usa uma variante modificada de expressões regulares (as duas maiores diferenças são citadas abaixo). Estas breves notas incluem quase todas as características das expressões regulares padrões - - elas não são tão complicadas como parecem a primeira vista. Definitivamente é vantajoso olha-las mais de perto.

Nas expressões regulares, a maioria dos caracteres devem casar com eles mesmos. Assim, para pesquisar o string "peter", eu usaria um string de pesquisa "peter". As exceções são os assim chamados caracteres especiais(“metacaracteres, os quais tem significados especiais.
Os caracteres especiais das expressões regulares são :  "\" (backslash), "." (ponto), "*" (asterisco), "[" (abre-colchetes), "^" (negação, especial somente quando inicia um string), "$" (dólar, especial somente ao final de um string). Um caracter terminando um string de pesquisa é também especial para este string.
A barra invertida(backslash), "\"é usada com um caracter de escape, isto é, para indicar um caracter especial que a segue.
Dai, "\\" pesquisa por uma barra invertida, ("\." pesquisa por um ponto, "\*" pesquisa por um asterisco, "\[" pesquisa por um abre-colchetes, "\^" pesquisa pelo sinal de negação mesmo no inicio de um string, "\$" pesquisa pelo sinal de dólar mesmo no fim de um string.
Uma barra invertida seguida por um caracter comum (não especial) pode ganhar um significado especial. Dai, os símbolos \<  e  \>  pesquisam por um string vazio no inicio e fim de uma palavra, respectivamente. O símbolo \b  pesquisa por um string vazio no limite de uma palavra e \B pesquisa por um string vazio desde que ele não esteja no limite de uma palavra.
O ponto casa com qualquer caracter, [O comando dir usa "?" para isto.] Dai, "m.a" casa com "mpa" e "mea" mas não com "ma" ou "mppa".
Qualquer string é encontrado por ".*" (ponto e asterisco). [O comando dir usa "*" para isto]  Em geral, qualquer string para pesquisa seguido por "*" casa com zero ou mais ocorrências deste string. Dai que, "m*" casa com zero ou mais ocorrências de "m". Para pesquisar por um ou mais "m", eu posso usar "mm*".
O *é um operador de repetição. Outros operadores de repetição são usados menos frequentemente -- eis uma lista completa:
*       o item precedente deve ser casado zero ou mais vezes;
\+      o item precedente deve ser casado uma ou mais vezes;
\?      o item precedente é opcional e casado no máximo uma vez;
\{n}    o item precedente deve ser casado exatamente n vezes;
\{n,}   o item precedente deve ser casado n ou mais vezes;
\{n,m}  o item precedente deve ser casado no mínimo m vezes, mas não mais que n vezes.
O sinal de negação, "^", significa “o inicio da linha". Assim "^a" significa encontre uma linha que se inicie com um "a".
O sinal de dólar, "$", significa "o fim da linha". Assim "a$" significa “encontre uma linha terminando com um "a".
Exemplo. Este comando pesquisa no arquivo meuarquivo por linhas que se iniciam por um an "s" e terminam com "n", e as mostra na saída padrão(tela):
cat meuarquivo | grep '^s.*n$'
Qualquer caracter que termina o string de pesquisa é especial, preceda-o com uma barra ao contrário (backslash) se você quer usa-lo neste string.
O “abre colchetes” "["introduz um conjunto. Dai que [abD] significa : ou a ou b ou D. [a-zA-C] significa qualquer caracter de a a z ou de A a C.
Atenção com alguns caracteres dentro de conjuntos. Dentro de um conjunto, os únicos caracteres especiais são "[", "]", "-", e "^", e as combinações "[:", "[=", e "[.". A barra ao contrário(backslash) não é especial dentro de um conjunto.

Categorias úteis de caracteres são (tal como definido pelo padrão POSIX): [:upper:]  =letras maiúsculas, [:lower:] =letras minúsculas, [:alpha:]  =alfabético: (letras) significando maiúsculas e minúsculas, [:digit:] =0 a 9, [:alnum:] =alfanumérico: significando alfabético + dígitos, [:space:] =espaço em branco significando <Espaço>+<Tab>+<Newline> e similar, [:graph:] =caracteres graficamente exibiveis exceto espaço, [:print:] =caracteres exibiveis incluindo espaço, [:punct:] =caracteres de pontuação significando caracteres especiais excluindo caracteres alfabéticos e dígitos, [:cntrl:] =caracteres de controle significando caracteres não exibiveis, [:xdigit:] = caracteres que são dígitos hexadecimais.

Exemplo. Este comando pesquisa a saída do comando dir e mostra as linhas que contem uma letra maiúscula seguida por um digito:
dir -l | grep '[[:upper:]][[:digit:]]'

tr
(=tradução). Um filtro útil para substituir todas as ocorrências de caracteres em um arquivo texto ou juntar os espaços em brancos.

Exemplo :
cat meuarquivo | tr 1 2 > novoarquivo

Este comando pega o conteúdo do arquivo meuarquivo e direciona-o para o utilitário de tradução tr,  o utilitário tr substitui todas as ocorrências do caracter "1" com "2", a saída do processo é direcionada para o arquivo novoarquivo.

sed
(=editor de stream) Eu uso sed para para filtrar arquivos textos. O string a ser pesquisado é tipicamente incluído entre um para de barras e delimitado.

Por exemplo, para imprimir linhas contendo o string "1024", eu uso:
cat nomedoarquivo | sed -n '/1024/p'

Aqui o utilitário sed filtra a saída do comando cat. A opção "-n" diz ao se para bloquear todas as linhas de entrada exceto aquelas que contem a minha expressão. A ação do sed em caso de acha-la é "p"= print(mostrar).

Um outro exemplo, desta vez para deletar as linhas selecionadas:

cat nomedoarquivo | sed '/.*o$/d' > novoarquivo

Neste exemplo, as linhas terminado com um "o" serão deletadas. Eu usei uma expressão regular para casar com qualquer string seguido por um "o" e o fim da linha. A saída (isto é, todas as linhas exceto aquelas terminadas com "o") é direcionada para novoarquivo.

Um outro exemplo. Para procurar e substituir, eu uso a ação do sed a qual vem em frente de duas expressões:

cat nomedoarquivo | sed 's/antigo_string/novo_string/' > novoarquivo

Uma forma mais curta para o ultimo comando é:

sed 's/antigostring/novstring/' nomedoarquivo> novoarquivo

gawk
(=GNU awk. O comando awk é uma ferramenta tradicional UNIX)  Uma ferramenta para processamento de arquivos textos, de varias maneiras similar ao sed, mas muito mais poderosa. O Perl pode fazer tudo que o gawk faz, e muito mais, porisso eu não me preocupo muito com gawk Para tarefas simples, eu uso o sed, para tarefas mais complicadas, eu uso perl. Em alguns casos, no entanto, os scripts awk podem ser mais curtos, mais fáceis de entender e manter, e mais rápidos que o programa perl equivalente.

gawk é particularmente aconselhável para processamento de tabelas baseadas em textos. Uma tabela consiste de registros(cada linha é normalmente um registro). O registro contem campos separados por um delimitador. Os delimitadores frequentemente usados são, o espaço em branco, a virgula e o sinal de dois pontos. Toda expressão gawk tem um formato 
gawk 'argumento {ação}' meu_arquivo.  Você pode omitir o string ou a ação: o argumento default é “ ache qualquer coisa” e a ação default é “mostre a linha”. O gawk pode também ser usado como um filtro(para processar a saída de um outro comando, como mostrado em nossos exemplos).
Exemplo. Para mostra as linhas que contenham o string "1024", eu posso usar:
cat nomedoarquivo | gawk '/1024/ {print}'
O que torna o gawk mais poderoso que o sed são as operações sobre campos. $1 significa "o primeiro campo", $2 significa o "segundo campo", etc. $0 significa a "linha inteira". O próximo exemplo extrai os campos 3 e 2 das linhas que contem "1024" e os mostra com os títulos "Nome" and "ID" :
cat nomedoarquivo | gawk '/1024/ {print "Nome: " $3 "ID: " $2}' > novoarquivo
O terceiro exemplo procura e mostra linhas com o terceiro campo igual a "peter" ou que contenham o string "marie":
cat nomedoarquivo | gawk '$3 == "peter" || $3 ~ /marie/ '
Para entender o ultimo comando, eis aqui uma lista dos testes lógicos em gawk:  == igual,  != diferente,  < menor que,  > maior que ,  <= menor ou igual a,  >=  maior ou igual a,  ~ procurar por uma expressão regular,  !~  que sejam diferente de uma expressão regular,  ||  OU lógico,  &&  E lógico,  ! negação lógica.

cvs
Sistema de versões concorrentes. Experimente info cvs para obter mais informações. Útil para manter o código fonte repositório" quando diversos programadores estão trabalhando no mesmo programa de computador.

cervisia
(no terminal X). Uma interface gráfica para o sistema de versões cvs.

file -z nomedearquivo
Determina o tipo do arquivo nomedoarquivo. A opção -z faz com que o comando file procure dentro de arquivos compactados para determinar qual o tipo do arquivo ali compactado (ao invés de dizer que é um arquivo compactado).

Para determinar o tipo do arquivo, file procura dentro do arquivo por uma peça particular de conteúdo( números magico”) --ele não procura pela extensão do arquivo tal como faz o MS Windows. Os números mágicos" estão guardados no arquivo texto /usr/share/magic--um banco de dados realmente impressionante de tipos de arquivos.

strings nomedoarquivo | more
Mostra os strings contidos no arquivo binário chamado nomeoarquivo. "strings" pode, por exemplo, ser um útil primeiro passo para um exame mais próximo de um executável desconhecido.

  1. od
    (=dump em octal). Mostra o conteúdo como números octais. Isto pode ser útil quando a saída contem caracteres não exibiveis. Por exemplo, um nome de arquivo pode conter caracteres não exibiveis e ser algo realmente doloroso.

Exemplos:
dir | od | more
cat meu arquivo | od |more
od meuarquivo

wc
(=contador de palavras) Mostra o numero de linhas, palavras e bytes no arquivo.

Exemplos:
dir | wc
cat meuarquivo | wc
wc meuarquivo

cksum nomedearquivo
Calcula o CRC (="verificação de redundância cíclica") do arquivo nomedoarquivo para verificar a integridade do mesmo.

md5sum
Calcula o checksum md5(128-bit) do arquivo nomedoarquivo para verificar sua integridade.

mkpasswd -l 10
Gera um password difícil de se advinhar com um tamanho de 10 caracteres.

sort -f nomedoarquivo
Agrupa as linhas do arquivo de acordo com a ordem ascii. A opção -f diz ao comando sort para ignorar as diferenças entre letras maiúsculas e minúsculas. O conjunto de caracteres ascii é (veja man ascii):

Dec  Hex  Carac          Dec  Hex  Carac     Dec  Hex  Carac   Dec   Hex  Carac
---------------------------------------------------------------------------
 0    00   NUL '\0'     32   20   SPACE    65   41   A        97    61   a
 1    01   SOH          33   21   !        66   42   B        98    62   b
 2    02   STX          34   22   "        67   43   C        99    63   c
 3    03   ETX          35   23   #        68   44   D        100   64   d
 4    04   EOT          36   24   $        69   45   E        101   65   e
 5    05   ENQ          37   25   %        70   46   F        102   66   f
 6    06   ACK          38   26   &        71   47   G        103   67   g
 7    07   BEL '\a'     39   27   '        72   48   H        104   68   h
 8    08   BS  '\b'     40   28   (        73   49   I        105   69   i
 9    09   HT  '\t'     41   29   )        74   4A   J        106   6A   j
 10   0A   LF  '\n'     42   2A   *        75   4B   K        107   6B   k
 11   0B   VT  '\v'     43   2B   +        76   4C   L        108   6C   l
 12   0C   FF  '\f'     44   2C   ,        77   4D   M        109   6D   m
 13   0D   CR  '\r'     45   2D   -        78   4E   N        110   6E   n
 14   0E   SO           46   2E   .        79   4F   O        111   6F   o
 15   0F   SI           47   2F   /        80   50   P        112   70   p
 16   10   DLE          48   30   0        81   51   Q        113   71   q
 17   11   DC1          49   31   1        82   52   R        114   72   r
 18   12   DC2          50   32   2        83   53   S        115   73   s
 19   13   DC3          51   33   3        84   54   T        116   74   t
 20   14   DC4          52   34   4        85   55   U        117   75   u
 21   15   NAK          53   35   5        86   56   V        118   76   v
 22   16   SYN          54   36   6        87   57   W        119   77   w
 23   17   ETB          55   37   7        88   58   X        120   78   x
 24   18   CAN          56   38   8        89   59   Y        121   79   y
 25   19   EM           57   39   9        90   5A   Z        122   7A   z
 26   1A   SUB          58   3A   :        91   5B   [       123   7B   {
 27   1B   ESC          59   3B   ;        92   5C   \  '\\'  124   7C   |
 28   1C   FS           60   3C   <        93   5D   ]        125   7D   }
 29   1D   GS           61   3D   =        94   5E   ^        126   7E   ~
 30   1E   RS           62   3E   >        95   5F   _        127   7F   DEL
 31   1F   US           63   3F   ?        96   60   `
                        64   40   @

Se você pensou sobre os caracteres de controle, eis o significado ee alguns deles na console (Fonte: man console_codes). Cada linha abaixo dá o código mnemônico, seu número decimal ASCII, a combinação de teclas para produzir o código na console e uma curta descrição:
BEL (7, <Ctrl>G) bell (=bip de alarme).
BS  (8, <Ctrl>H) volta uma coluna (mas não passa do início da linha).
HT  (9, <Ctrl>I) tabulação horizontal, vai para o próximo ponto de tabulação ou para o fim da linha se não houver mais pontos de tabulação.
LF (10, <Ctrl>J), VT (11, <Ctrl>K) e FF (12, <Ctrl>L) todos os três geram um linefeed(avanço de linha).
CR (13, <Ctrl>M) gera um carriage return(retorno ao inicio da linha).
SO (14, <Ctrl>N) ativa o conjunto de caracteres G1, e se LF/NL (modo de nova linha) está definido para gerar também um carriage return(retorno ao inicio da linha).
SI (15, <Ctrl>O) ativa o conjunto de caracteres G0.
CAN (24, <Ctrl>X) e SUB (26, <Ctrl>Z)interrompe uma seqüência de escape.
ESC (27, <Ctrl>[) inicia uma seqüência de escape.
DEL (127) é ignorado.
CSI (155) introdutor de uma seqüência de controle.

uniq
(=único) Elimina linhas duplicadas em uma entrada classificada. Por exemplo: sort meuarquivo | uniq

fold -w 30 -s meuarquivotexto > novoarquivotexto
Quebra as linhas do arquivo texto meuarquivotexto de forma que haja 30 caracteres por linha. A linha é quebrada nos espaços. A saída vai para novoarquivotexto.

fmt -w 75 meuarquivotexto > novoarquivotexto
Formata as linhas no arquivo texto para a largura de de 75 caracteres.  Quebra linhas compridas e junta linhas curtas de acordo com o requerido mas não remove linhas vazias.

nl meuarquivo > meuarquivocomlinhasnumeradas
Numera as linhas no arquivo meuarquivo Coloca a saída no arquivo meuarquivocomlinhasnumeradas.

rev nomedoarquivo > nomedoarquivo1
Mostra o arquivo   nomedoarquivo, cada linha na ordem reversa. No exemplo acima, a saída é dirigida para nomedoarquivo1.

shred nomedearquivo
Repetidamente regrava o conteúdo do arquivo nomedearquivo com lixo, de forma que ninguém será capaz de ler o seu conteúdo original novamente.

paste arquivo1 arquivo2 > arquivo3
Combina dois ou mais arquivos textos em linhas usando o <Tab> como delimitador (use a opção “d=" para especificar seu próprio delimitador.

Exemplo. Se o conteúdo do arquivo1 era:
1
2
3
e o do arquivo2 era:
a
b
c
d
o arquivo resultante arquivo3 seria:
1    a
2    b
3    c
     d

join arquivo1 arquivo2 > arquivo3
Junta linhas de dois arquivos em um campo comum.  join é um paralelo com a operação de “join tables” de banco de dados, mas funciona em arquivos textos.  O padrão é juntar no primeiro campo da primeira tabela, e o delimitador default é o caracter espaço. Para ajustar os padrões, eu uso as opções que são descritas em man join).

Exemplo: Se o conteúdo de arquivo1 era
1 Barbara
2 Peter
3 Stan
4 Marie
e o do arquivo2 era:
2 Dog
4 Car
7 Cat
o arquivo resultante arquivo3 seria:
2 Peter Dog
4 Marie Car


des -e arquivo arquivo_criptografado
(="Padrão de criptografia de dados") Criptografa arquivo. Será solicitada você uma chave que o programa usará para a criptografia. A saída vai para arquivo_criptografado. Para descriptografar use
des -d arquivocriptografado arquivo_descriptografado.

gpg
"Guarda de privacidade Gnu"--um software livre equivalente ao PGP ("Pretty Good Privacy"). gpg é mais seguro que PGP e não usa nenhum algoritmo patenteado. gpg é usado na maioria das vezes para “assinar” mensagens de e-mail. Você pode usa-la também para criptografar/descriptografar mensagens. http://www.gnupg.org/ contém os detalhes,incluindo um material detalhado.

Para iniciar, eu precisei de um par de chaves: privada e pública. A chave privada é usada para assinar minhas mensagens. A pública eu a distribuo para que os outros possam usa-la para verificar minha assinatura. [Alguém pode também usar uma chave publica para criptografar uma mensagem de forma que ela possa somente ser lida usando minha chave privada] Eu gero meu par de chaves usando este comando:
gpg --gen-key
Minhas chaves são gravadas no diretório ~/.gnupg (criptografado usando uma frase chave Eu a supri durante a geração da chave). Para listar minha chave publica em arquivo texto, eu uso:
gpg --armor --export meu_endereço_de_email > chave_publica_de_stan.gpg

o qual cria um arquivo chave_publica_de_stan.gpg contendo algo como se segue:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.1 (GNU/Linux)
Comment: For info see http://www.gnupg.org
mQGiBDmnzEYRBACoN438rxANaMfCy5bfj6KWM0/TR6x6HZ0gpmhGeuouM/SOR2IU
/G30NdCuzHeFs93BhtY0IdzoEMtMyZHnvdhZC2bx/jhgaaMbEaSsXwRhVB0xVPYx
rHbsgSULHYzRFF34MS3/Lse3QWfWxzA7I0lbXB7nLwZKZqaNONRFRR42owCg60hV
TDPEB2N0llMyt12R4ZByFSsEAJ1tE7pb9b6TP7cw21vkIjc+BI2uSzn/B4vNlCWK
TTuZHVv0w0jFcbd8DB0/1tlZUOrIzLSqJyQDGiNn258+7LetQ+LKG/1YKbiAcosz
4QirBuLIeF2M9GuXYCwZypE3Dwv+4YupvybR31CgLTJ8p4sKqC5n0eSr2oSrtdHZ
yuJtA/9v2HcebOncfCNOK+cVRmcTB1Frl/Gh/vNCfeZyXaJxlqDfCU2vJHtBemiE
AtcfZHB/iHy0DM68LfRJSAIFAa5um9iWHh5/vWCGZLqtpwZ7kyMw+2D6CFkWATsy
wQA1g1VcGkNc14Crrd36qf60bI+b8pn2zDhwZtLsELsXyXkNhbQmU3RhbiBKIEts
aW1hcyA8U3RhbktsaW1hc0B3ZWJoYXJ0Lm5ldD6IVgQTEQIAFgUCOafMRgQLCgQD
AxUDAgMWAgECF4AACgkQt+ZBooH8bHd2kwCghAt9aKIk0mRJv+g7YcRPotVtrwkA
n1a4xEVEyaKgKoMaJnopf69K9+vouQENBDmnzH4QBADgFpLP+tWZPnVYg47cn+9b
XQRjdOtNsDE6BYH872/sR1oCrdH6k+gXFOiZxRZ3PElK2/olo59kh5xa9aBxNdEC
FuXJN0UelmhOFbDtqVksIqVWyYfXnLz+wtcXg0Q0L0q8vY4IuTzw2WkV6EkM+/x8
6UhA2XVaMJKBdRKFSVilbwADBQP+JCzLj5HDgpRvf+KM72nzSg7sp8Tki7nF9wNA
PODK0SeQgI3dwXYyF6AVenlETE/3xRWoYQN1bxVZsOex9vzqPrQC3dR0NBljd74r
kfXwUTl2fNQX4N9iuVCo2gCGbi5+gfEk1GhsWDsq0z40f+18k+XBdWmY8sCNiolT
tnvm1QeIRgQYEQIABgUCOafMfgAKCRC35kGigfxsd9SGAJ9/FWSkEfgbE/Yc46d8
Ef1gYg3I1ACff3oLeAMeGGO79gW6UGp9RJ6mRao=
=X1k2
-----END PGP PUBLIC KEY BLOCK-----
Agora, eu posso enviar por email minha chave pública para pessoas com quem eu quero conversar em segurança e privacidade. Eles podem armazena-la em seus sistemas pgp usando;
gpg --import chave_publica_de_stan.gpg
Melhor ainda, eu posso submeter minha chave pública para um servidor de chaves públicas. Para encontrar um servidor mais próximo, eu usei:
host -l pgp.net | grep wwwkeys
e para submeter a chave, eu fiz(pode levar alguns minutos):
gpg --keyserver wwwkeys.pgp.net --send-keys linux_nag@canada.com
O "wwwkeys.pgp.net" é o servidor de chaves que selecionei e "linux_nag@canada.com" é meu endereço de email que me identifica meu anel local de chave. Eu preciso submeter-me a somente um servidor publico de chaves(eles se sincronizam).
Agora, eu posso começar a usar o gpg. Para assinar manualmente um arquivo texto minha_mensagem, eu poderia usar:
gpg --clearsign minha_mensagem

Isto criou minha_mensagem.asc o qual contem alguma coisa como :

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello World!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.1 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQE5p9+3t+ZBooH8bHcRApn/AJ9kx9+pU3GJBuvJN9Bo3bW3ku/5PwCgquht
mfrPrt7PQtdmGox72jkY0lo=
=rtK0
-----END PGP SIGNATURE-----
Para verificar uma mensagem assinada eu uso :
gpg --verify minha_mensagem.asc

Se o conteúdo da seção assinada em minha_mensagem.asc for ligeiramente modificada a assinatura não será validada.

A assinatura manual pode ser trabalhosa. Mas, por exemplo, kmail pode lançar as assinaturas eletrônicas automaticamente para mim.


ferramentas de “docbook"
Docbook é o padrão emergente para repositório de documentos. As ferramentas de docbooks estão incluídas no RH6.2 (e posteriores) no pacote "jade" e incluem os seguintes conversores: db2ps, db2pdf, db2dvi, db2html, db2rtf os quais convertem arquivos para : postscript (*.ps), Adobe Portable Document Format (*.pdf), formato de arquivo independente do dispositivo(device independent file format) (*.dvi), HyperText Markup Language (*.html), e Rich Text Format (*.rtf), respectivamente.

"Repositório de documentos" significa que os documentos estão em um formato que podem ser automaticamente traduzidos em outros formatos úteis. Por exemplo, considere um documento(em desenvolvimento) o qual pode, no futuro, precisar ser publicado como um relatório, um jornal, um artigo de jornal, uma pagina web, talvez um livro, Eu (o autor) estou ainda incerto.  Formatando o documento usando uma codificação particular(fontes, tamanho de fontes, quebras de paginas, centralização de linhas) é um pouco mais que desperdício de tempo - - os estilos variam muito entre os tipos particulares de documentos e são dependentes de quem os está publicando.  A solução é formatar o documento usando elementos de layout lógicos os quais podem incluir o titulo do documento, títulos de capítulos, subcapitulos, estilos de ênfase, nomes de figuras, textos elucidativos, tabelas, etc. Para isto existe o "docbook" --ele é uma descrição de estilos(usando xml, um conjunto que contem o html, e bastante relativo de sgml)--uma assim chamada pagina de estilo(stylesheet). O layout lógico é montado em uma aparência física quando o documento está sendo publicado.

Esta seção será expandida no futuro a medida em que formos aprendendo sobre docbook.
 

7.2 Programação simples sob Linux

perl
Linguagem de script poderosa e amplamente utilizada, muito popular entre os gurus. Perl parece ser criptografado, ainda é trabalhoso se você precisa fazer tarefas simples. Imagine o perl como um canivete suíço para programação simples.  Eis como Eric Reymond (um famoso guru Linux) descreve perl: "Perl, naturalmente, é o gorila de 5 toneladas das linguagens de script modernas. Ela tem sido usada largamente para substituir o shell como a linguagem de script de escolha dos administradores de sistemas, graças parcialmente ao seu compreensivo conjunto de bibliotecas e chamadas de sistemas (system calls)UNIX, e parcialmente a grande coleção de módulos Perl criados por uma comunidade Perl muito ativa. A linguagem é comumente estimada como a linguagem CGI por trás de 85% do conteúdo vivo na Internet.. Larry Wall, seu criador, é corretamente um dos mais importantes lideres na comunidade Open Source community, e é frequentemente o terceiro no ranking após Linus Torvalds e Richard Stallman no panteão dos semideuses hackers."

Como escrever um simples script Perl?
Pode-se usar o pico (ou qualquer outro editor de texto, a sua escolha) para digitar um simples script perl:
pico exemplo_perl

O exemplo abaixo não faz nada útil, a não ser ilustrar algumas características de perl:

#!/usr/bin/perl -w
# um estúpido exemplo de programa perl
# as linhas que se iniciam por um # são comentários exceto a primeira linha
# nomes de variáveis escalares se iniciam por um $
$a=2;
$b=3;
# cada instrução termina com um ponto-e-virgula, como na linguagem C
print $a**$b,"\n";
$alo_mundo='Alô Mundo';
print $alo_mundo,"\n";
system "ls";
A primeira linha diz ao shell como executar meu arquivo texto. A opção "-w" faz com que perl mostre algumas advertências adicionais, etc, que podem ser úteis para depurar o seu script. As próximas três linhas (começando com #) são comentários. As linhas seguintes são quase auto-explicativas, atribuo alguns valores para duas variáveis($a e $b), elevo $a a potência $b e mostro o resultado.  O "\n" mostra uma nova linha, tal como na linguagem de programação C  A seguir defino uma outra variável para conter o string “Alô Mundo" e, na próxima linha, eu a mostro na tela. Finalmente, eu executo o comando “ls” no sistema operacional local o qual, no Linux, mostra a listagem do conteúdo do diretório corrente.  Um script realmente estúpido.
After saving the file, I make it executable:
chmod a+x exemplo_perl
Agora eu posso executar o script digitando:
./exemplo_perl

python
Um interpretador orientado a objeto moderno e muito elegante. Poderoso e (questionavelmente) mais legível que perl. Manuais muito bons (e grandes) escritos por G. van Rossum (o criador de Python) estão disponíveis na Internet em http://www.python.org/doc/ para navegação ou ftp://ftp.python.org para download).

Como escrever um programa simples Python?
Edite um arquivo texto que conterá o seu programa Python:
pico exemplo_python
Digite um código simples python para ver se ele funciona:
#!/usr/bin/env python
print 2+2
A primeira linha (iniciando com #) diz ao shell como executar este arquivo texto--ela deve estar ali(sempre a primeira linha) para o Linux saber que este arquivo texto particular é um script Python. A segunda linha é uma expressão simple Python.
Depois de salvar este arquivo eu o torno executável:
chmod a+x exemplo_python
após o que posso executa-lo digitando:
./exemplo_python
Python é uma linguagem moderna de programação excelente. Experimente-a se você gosta de programação orientada a objetos.
Eis aqui um código perl mais longo auto-explicativo:
#!/usr/bin/env python
# Todos os comentários se iniciam com um #
# Este programa converte “anos humanos” para “anos caninos”
# toma a idade original
idade = input("Informe a sua idade(em anos humanos): ")
print           # mostra uma linha em branco
# verifica se a idade é válida usando um if simples
if idade < 0:
        print "Uma idade negativa não é aceitável."
elif idade < 3 or idade > 110:
        print "Francamente, não acredito muito em você."
else:
        print "Isto é o mesmo que ", age/7, "anos caninos."

tcl
(Pronuncia-se "ticol".) Uma linguagem script popular.

Um simples programa tcl?
#!/usr/bin/tclsh
puts stdout {Alô Mundo!}

wish
(no terminal X) Uma interface para Tk uma extensão X-windows do tcl. Frequentemente usada para criar interfaces para um programa.

Como escrever um programa gráfico simples (usando Tk)?
Tk é uma interface gráfica da linguagem fácil e poderosa tcl..  Por exemplo, use o pico para criar um arquivo texto que conterá um simples programa tk:
pico exemplo_tk
e digite um exemplo simples de tk para ver se ele funciona:
#!/usr/bin/wish
button .meu_botao -text "Alô Mundo" -command exit
pack .meu_botao
A primeira linha (começando com "#!") diz ao shell qual utilitário usar para executar meu arquivo texto. As próximas duas linhas são um exemplo de programa tk simples. Primeiro, eu criei um botao chamado "meu_botao" e coloquei-o na raiz de minha hierarquia de classes(o ponto em frente do "meu_botao. Ao botao, eu amarrei o texto "Alô Mundo" e um comando que termina o programa (quando o botao é pressionado).  A última linha faz com que a janela de meu programa ajuste seu tamanho a um tamanho grande o suficiente para conter o botao).
Depois de salvar o arquivo, eu o torno executável:
chmod a+x exemplo_tk
após o que posso executa-lo digitando(no terminal X, por que ele requer X-windows para rodar):
./exemplo_tk
Tk é muito popular para se construir interfaces gráficas.

gcc nome_de_arquivo.c
Compilador GNU C. Manuais extensos estão disponíveis na Internet.

Como compilar um simple programa C?
Com o seu editor de textos favorito digite o seu programa fonte:
pico hello.c
a seguir, digite a introdução Kerningham e Richie (os criadores de "c") de um programa C:
#include <stdio.h>
void main(void) {
printf("alô mundo \n");
}
Salve o arquivo e chame o compilador C para compilar o arquivo "hello.c":
gcc hello.c
O compilador c produz um executável binário "a.out", o qual posso executar:
./a.out

g++ nome_de_arquivo.C
Compilador GNU C++. A letra maiúscula "C" é frequentemente usada para fontes C++.  Se você precisa de um “ambiente de desenvolvimento integrado" (IDE), kdevelop é algo que você realmente irá gostar.

kdevelop
(digite em um terminal X) Ambiente de desenvolvimento integrado do KDE. Vale realmente a pena baixa-lo(se ele não veio com sua distribuição).

glade
(no terminal X) Um criador gráfico de interfaces para o usuário.

 "Glade é um criador de interfaces desenvolvido por Damon Chaplin. Ele permite a construção gráfica e interativa de interfaces gráficas de usuários Gnome/Gtk. A partir do Glade, a interface gráfica pode ser salva em um arquivo xml ou diretamente exportada para código C a ser incluído em uma arvore fonte. O Glade também permite definir o nome de manipuladores - - funções -- a serem ativadas nos vários eventos da interface. Por exemplo, a função (name) a ser chamada quando um item especifico de um menu for pressionado." (A partir de: http://linuxtoday.com/news_story.php3?ltsn=2000-07-16-013-04-PS-GN)

Quais funções C estão disponíveis para programação sob Linux?
Muitas para um novato como eu. Eu comecei por estudar os arquivos headers(*.h) no diretório/usr/include e todos os seus subdiretórios. Para encontrar um arquivo header que contem um protótipo para uma dada função(por exemplo, cosh) eu poderia fazer algo como :

cd /usr/include
grep -H "cosh" *.h

guile
Uma implementação da linguagem de programação "Scheme".  Scheme é um dialeto moderno de LISP.

Exemplos bobos de guile:
(+ 1 1)
(system "ls")
(display "hello\n")
(define a 7)
(exit)

g77
GNU FORTRAN. Se você usar FORTRAN, você pode ir até: http://studbolt.physast.uga.edu/templon/fortran.html para obter um compilador FORTRAN que se adeque a suas necessidades particulares em Linux.

expect
Linguagem script para diálogos programados. Veja man expect.

kylix
Este é uma oferta comercial nova em folha(Fev.2001) da Borland (melhor dizendo Inprise). Para resumir, ele é o porte Linux do famoso Pascal orientado a objeto ("Delphi").  kylix não é comum no CD de sua distribuição Linux, você deve pagar por ele, mas se você quer a melhor plataforma de desenvolvimento rápido de aplicações(RAD) com uma portabilidade de código entre Linux e MS Windows, grande numero de componentes pré-construídos, etc., kylix é o melhor. Em minha opinião, Delphi é significativamente melhor que MS Visual Basic.

make
Rode o utilitário "make"para construir (compilar, linkar,etc) um projeto descrito no arquivo Makefile encontrado no diretório corrente.

yes
Gera um string ininterruptamente (ele termina quando se tecla <Ctrl><c>).  Parece ser um utilitário bobo, mas ele pode ser usado para escrever simples programas na linha de comando. Por exemplo, o seguinte exemplo determina a freqüência de dígitos em 100000 números randômicos( o comando inteiro é uma única linha):
yes | sed '100000q' | awk 'BEGIN{srand();u=6*log(10)}{printf"%e\n",rand()*exp(rand()*u)}'| cut -c1 | sort | uniq -c
Espero que este exemplo não assuste muito você - - ele seguramente mostra que a velha linha de comando UNIX pode ser tão complicada (e poderosa) o quanto você queira torna-la. Se você está interessado em como a freqüência de dígitos varia, veja o local de onde tomei emprestado o exemplo: http://www.newscientist.com/ns/19990731/letters4.html

7.3 Ferramentas matemáticas

dc
Uma calculadora de precisão arbitraria que usa a notação polonesa reversa(RPN), como uma calculadora HP. .

dc é baseada no conceito de stack, o qual é central para as operações de um computador digital moderno. Um stack de um computador não é diferente de uma pilha de pratos de uma cozinha, o último a ficar no topo na pilha, é o primeiro a sair (isto é também conhecido como LIFO="last-in, first-out"). Isto contrasta com uma fila(um outro conceito importante) onde o primeiro a entrar é o primeiro a sair(FIFO).

Você pode executar operações somente com o(s0 numero(s) que estão no topo do stack. As duas operações básicas são push e pop (por no topo do stack, e retirar do topo do stack). Operações unárias retiram um valor do stackl(unário significa que requer um operando"). Operações binarias retiram dois valores do stack("binarias" significa que requerem dois operandos"). Operações ternárias pegam três valores do stack("ternárias" significa que requerem três operandos). Em todos os casos, o resultado é sempre colocado no topo do stack.

Calculadoras RPN são muito populares entre pessoas técnicas e em academias. A notação RPN nunca requer parênteses.

Historia. A lógica livre de parênteses foi desenvolvida por matemáticos poloneses Jan Lukasiewicz (1878-1956) antes da segunda grande Guerra. Originalmente, o operador precedia os valores. Para aplicações de computadores, ela foi modificada de forma que que o operador viesse após os valores, dai a palavra reversa em notação polonesa reversa”.

Para exercitar algumas operações no stack, experimente isto:
dc [executa a calculadora RPN de precisão arbitraria]
1 [coloca "1" no stack]
2 [coloca um outro número no stack]
3 [coloca ainda um outro número no stack]
4 [coloca mais um outro número no stack]
f [mostra o stack inteiro, você deverá ver 1 2 3 4]
p [mostra o numero no topo do stack sem afetar o stack, você deverá ver 4]
+ [executa a adição (operação binaria), portanto toma os dois últimos valores do stack (4,3), e coloca o resultado (7) no stack]
p [mostra o número no topo do stack, i.e. O resultado da última adição(7).].
p [mostra novamente o número no topo do stack, para ver que que o stack não foi afetado pela exibição anterior(7)]
* [executa multiplicação(operação binaria), portanto pega os dois últimos valores, e coloca o resultado no topo do stack (14)]
p [mostra o resultado da multiplicação (14)]
P [retira o último número do stack (14)]
p [mostra o número no topo do stack]
2000 [coloca um grande valor inteiro no stackl
k [define a precisão para o valor para que está no topo do stack, i.e. 2000]
1 [coloca um outro número no stack]
f [mostra o conteúdo do stack inteiro]
701 [coloca um outro número no stack]
/ [divide os últimos dois números do stack, i.e. "1/701" com 2000 casas de precisão]
p [mostra o resultado da última divisão]
q [fecha a calculadora]
Observe que utilizando a notação polonesa reversa você nunca precisa de parênteses. Experimente man dc para ler a respeito de outras capacidades de dc.

bc
Uma calculadora de precisão arbitraria. Digite quit para sair de bc. Digite "scale=20" antes de executar divisões de ponto flutuante ou você terá o quociente ao invés do resultado em ponto flutuante da divisão.

kcalc
xcalc
(no terminal X) Calculadora gráfica padrão.

e  '2*3/4+sin(pi/2)'
O avaliador de expressão "e" não veio com meu CD RH7.x. Ainda é o meu favorito de todas as calculadoras que trabalham em linha de comando. Experimente http://www.softnet.tuc.gr/~apdim/projects/e/ para baixa-la.

expr 1 + 1 / 3
Avalia uma expressão inteira. O "expr" não é uma calculadora, é mais usado para o controle de fluxo em script shells. O exemplo acima retornará o resultado "1", que é correto por que 1/3 é 0 considerando-se que a divisão é inteira.

scilab
(no terminal X) Um sistema grande e sofisticado para computação numérica, de alguma forma lembrando "matlab". Não o experimente a não ser que você tenha necessidades matemáticas um pouco mais sofisticadas, caso contrario você não o apreciará. Ele está incluído no CD "powertools" do RH7.0

Um exemplo bobo mostrando álgebra matricial. O que eu informo está em negrito.
-->a=[1 1 1;2 3 4]
 a  =
!   1.    1.    1. !
!   2.    3.    4. !
-->b=[1 1; 2 2;3 3]
 b  =
!   1.    1. !
!   2.    2. !
!   3.    3. !
-->c=a*b
 c  =
!   6.     6.  !
!   20.    20. !
-->d=inv(c)
 d  =
   1.0E+14 *
!   11.258999  - 3.3776997 !
! - 11.258999    3.3776997 !
-->


head -c 8 /dev/random
cat /dev/random | od
cat /dev/urandom | memencode
(3 comandos.)  Exemplos de como gerar caracteres randômicos na linha de comando Linux lendo o dispositivo "random" ou "urandom". O primeiro comando produz aproximadamente 8 caracteres pela leitura do dispositivo "random", o qual gera números randômicos de alta qualidade (difíceis de prever). Ele se tornará lento uma vez que a "entropia" em seu computador esteja exaurida(e.g., ao produzir um punhado de caracteres randômicos). A solução então é esperar ou digitar alguma coisa no teclado, mover seu mouse, alterar o terminal, fazer com que seu disco leia ou grave etc.,  para gerar mais ruído randômico ("entropia").  O segundo comando se mantém produzindo caracteres randômicos, mas os mostra como números octais (usando o "dump octal", filtro od). Ele tem que ser interrompido com <Ctrl><c>. O terceiro comando usa o dispositivo "urandom", o qual é mais rápido que "random" ao gerar um punhado de caracteres randômicos. Mas quando a entropia do sistema é baixa, a randomicidade da saída de "urandom" pode ser comprometida, é ainda bom para a maioria das necessidades das aplicações. A saída é filtrada para o formato mime(o padrão de codificação orientado para correio Internet de 7 bits) e assim é toda exibível. A descrição detalhada da teoria e implementação do algoritmo Linux para geração de números randômicos pode ser encontrada no código fonte file://usr/src/linux/drivers/char/random.c em seu sistema Linux.

factor 10533858466222239345
Encontra todos os divisores primos de um número inteiro. Por exemplo, os fatores de 6 são 1, 2, 3, e 6.

R
Um ambiente/linguagem de programação para computação estatística avançada. Digite "quit()" para sair.

gnuplot
Utilitário para criar gráficos e plotar. Muito bom para trabalho não interativo(em lote) mas não é muito simples para uso interativo. Uma boa introdução para gnuplot pode ser encontrada em http://www.duke.edu/~hpgavin/gnuplot.html.
 

7.4 Miscelânea

Como rodar um aplicação MS Windows(usando "wine")?

Você não vai instalar Linux para rodar aplicações MS Windows. Mesmo assim, a biblioteca “wine” baseada em Linux permite-me executar alguns binários MS Window embora a custa de penalidade na performance.

Em meu sistema (com o wine instalado), eu posso executar o Solitaire Windows digitando no terminal X:

wine /mnt/dos_hda1/windows/sol.exe

O /mnt/dos_hda1 é o ponto de montagem da partição de hardware que contem o MS Windows, e está montada no momento.

Se você não tem wine instalado, coloque o seu cd Mandrake no cdrom, monte-o, e então faca algo parecido com isto(como root):
cd /mnt/cdrom/Mandrake/RPMS/
rpm -ihv wine-991212-1mdk.i586.rpm

Os pacotes Mandrake são compatíveis com RedHat, assim você pode usar o CD Mandrake para instalar softwares que estejam faltando no RedHat.
 

Posso ter um RAID se meu computador tem dois ou mais discos IDE(ou outro) instalados?

RAID = "redundant array of inexpensive drives[seqüência redundante de discos baratos]". O RAID pode ser usado para espelhamento on the fly(imediato, a medida que acontece)] de um disco para outro para proteger seus dados e manter seu sistema funcionando em caso de uma falha em disco. O Linux vem um conjunto de ferramentas RAID que permite você customizar e projetar um sistema RAID para se adequar a suas necessidades particulares. Os pedaços do RAID em Linux são:
mkraid    - inicializa/faz upgrade de arrays de dispositivos RAID
raid0run  - inicia antigos arrays (sem superbloco) RAID0/LINEAR
raidstart - conjunto de comandos para gerenciar dispositivos md
raidstop  - conjunto de comandos para gerenciar dispositivos md
raidtab   - arquivo de configuração para dispositivos md (RAID)

O RAID opera combinando dois ou mais discos em um único dispositivo lógico. Existem diversos níveis de RAID:

RAID nível 0 ("striping") combina dois ou mais discos em um único dispositivo lógico, sem dar nenhuma redundância. Ele é frequentemente usado para ligar RAID nível 1 ou RAID 5.  RAID 0 + RAID 1 é chamado RAID 10.  RAID 0 + RAID 5 é chamado RAID 50.

RAID 1 (espelhamento)combina dois discos, cada um contendo os mesmos dados.

RAID 4 combina três ou mais discos, com um deles destinado para paridade. Se algum dos discos falha, o dispositivo lógico inteiro permanece disponível, mas com performance degradada. Ele não é usado frequentemente por causa da performance.

RAID 5 combina três ou mais discos, com a paridade distribuída pelos discos. Funcionalmente similar ao RAID 4 mas aparentemente tem uma performance melhor.

Veja http://www.osfaq.com/vol1/linux_softraid.htm  caso você queira definir um raid em seu computador.

Ajustando banda de rede usando shapecfg

Uma boa informação a respeito pode ser obtida em http://oreilly.linux.com/pub/a/linux/2000/08/24/LinuxAdmin.html
Apesar de nunca precisar ajustar a banda em minha rede domestica, ainda assim é um exercício interessante para os curiosos.

Ir para o Apêndice: Como fazer upgrade do kernel
Voltar ao Menu Principal