Certo, agora você já avaliou o Linux, já instalou, já reiniciou a máquina e até já está vendo esta página no Linux (tomara!) ;)
O que mais você deve saber sobre o Linux? Vou mostrar agora algumas coisas úteis.
Editando arquivos de configuração
Alguma vez você será instruído a editar algum arquivo de configuração. E dirão para você: "comente a linha que diz blablablá...". Comentar significa: invalidar a linha para que o programa que depende desse arquivo não consulte essa linha.Para fazer isso, você só precisa adicionar o símbolo
#
(chama-se "tralha") no início da linha. Num arquivo de configuração, tudo que vem depois do #
não conta.Exemplo: um arquivo de configuração de um programa hipotético que disca para seu provedor:
numero: 1234-5678Digamos que mude o telefone do seu provedor, mas só por uma semana (a operadora de telefones fixos da sua área está com problemas). Você não precisa apagar a respectiva linha, afinal é só uma semana. Então, você pode comentála, e colocar a provisória no lugar, assim:
login: fulano
init-string: ATZ
#numero: 1234-5678Talvez este exemplo não seja o melhor, mas acho que me fiz entender, certo?
numero: 2345-6789
login: fulano
init-string: ATZ
Essa louca estrutura de diretórios
(veja um outro artigo sobre esse assunto neste link)Ela é a mesma estrutura do UNIX (talvez com mínimas variações, imperceptíveis para nós usuários comuns). Vou tentar explicar cada diretório.
Diretório | Conteúdo |
---|---|
/bin | É onde ficam os arquivos binários usados por todos os usuários. Binários são os arquivos executáveis. |
/boot | Arquivos relacionados ao boot e ao kernel. Aqui fica o próprio Kernel (chamado vmlinuz ), assim como os arquivos de configuração do GRUB (um dos gerenciadores de inicialização, ou boot loaders). |
/dev | Arquivos que representam os dispositivos físicos (hardware), como os HD's, placas de som, de vídeo, disposivos da placa-mãe, impressora etc. |
/etc | Não, aqui não fica o lixo. No /etc ficam os arquivos de configuração do sistema operacional e da maioria dos programas. É um diretório muito importante. |
/lib | Aqui ficam algumas das bibliotecas do sistema, mas não todas. Se você não sabe programar (eu, por exemplo, não sei), você provavelmente nunca vai entrar nesse diretório, e nem vai saber de sua existência. |
/mnt | Em geral, os dispositivos de armazenamento são montados em subdiretórios deste diretório. Explico melhor mais tarde. |
/opt | Aqui ficam os arquivos de programas de terceiros, que não vieram com a sua distribuição. Por exemplo, minha distribuição não inclui suporte a Java, então a instalação do JDK da Sun instalou seus arquivos em /opt/sun-jdk . Da mesma forma, o Acrobat Reader, que não veio com minha distribuição, se instalou no /opt . |
/proc | Mais um que não será muito visitado tão cedo. Aqui ficam os arquivos temporários do kernel. |
/root | É como se fosse o /home do superusuário. Aqui ficam os arquivos pessoais do superusuário, mas como ele é super, o home dele é separado dos "mortais". |
/sbin | É onde ficam os arquivos binários (=executáveis) do superusuário. Geralmente, arquivos que iniciam servidores ou programas de administração do sistema ficam aqui, já que somente o superusuário irá rodar esses programas. |
/tmp | Guarda os arquivos temporários, como o \Windows\Temp no MS Windows 9x. |
/usr | É um dos diretórios mais importantes. Aqui ficam muitas coisas (ele merecia uma descrição como essa para seus subdiretórios). Inclui arquivos executáveis, bibliotecas, código-fonte (incluindo os fontes do kernel)... |
/var | Aqui ficam arquivos variados (parece que todos os diretórios poderiam se chamar /var, não é mesmo?). =) Inclui o spool de impressão, os arquivos de cache, alguns temporários... Não é muito visitado no uso cotidiano. |
Usuários do DOS, deleitai-vos
Sabe quando você tem que dar um comando com um nome de arquivo imenso, com grande chance de errar? O shell do Linux tem a solução para seus problemas! O recurso de auto-completar (auto-completion, em inglês). Suponhamos que você tenha no diretório corrente os arquivos:aaabcdPara ver o arquivo
abewrerp
itorptniotr
mnjkfnjkru
mnjkfnjkru.aaaaa
mnjkfnjkru.bbbbb
mnjkfnjkru.aabb
aaabcd
, você pode usar o comando cat
aa e logo depois teclar >TAB
, que o nome do arquivo será completado para aaabcd
. Se você der um cat a
, serão listados todos os arquivos que se começam com a
, para você continuar com a próxima letra, até ele saber a qual arquivo você está se referindo. Um cat i
já completa para cat itorptniotr
. Um cat m
completa para cat mnjkfnjkru
, e se você agora apertar
, são listados os 4 arquivos que começam com estas letras. Se você agora apertar .a
, ele completa para cat mnjkfnjkru.aa
, e se você apertar a
novamente, ele completa o comando todo, dando um espaço ao final, ficando assim cat mnjkfnjkru.aaaaa
.E tem mais!: Isso funciona para comandos também! Se você digitar
fdi
, ele vai completar pra fdisk
. E um f
lista todos os mais de 100 comandos que começam com a letra f
.Nota: recentemente descobri que o Windows XP também dispõe de uma certa forma de auto-completar no "Prompt do MS-DOS". Se a sua dúvida é "Quem copiou de quem?", eu só digo que o Linux dispõe do auto-completar há mais de 10 anos. ;)
Semelhanças para o MS-DOS
(mais uma vez, este documento também aborda a questão)Os comandos do MS-DOS foram todos baseados em comandos do shell do UNIX. Então, ainda guardam uma boa semelhança. Alguns exemplos:
MS-DOS | bash (é o shell padrão do Linux) |
---|---|
copy | cp |
move | mv |
ren | mv (não existe "renomear", e sim "mover de um nome para outro" |
del | rm (de remove, em vez de delete) |
cd | cd |
md | mkdir |
rd | rmdir |
attrib | chmod (e a sintaxe é diferente. Leia mais no manual do chmod, digitando man chmod) |
help | man (o man é muito mais poderoso que o help. Falarei mais sobre isso depois) |
/home
para /mnt
, eu posso usar tanto cd /mnt
quanto cd ../mnt
. Note que a barra (/
) não é invertida no Linux! No DOS era \
, mas no Linux é /
. Se você usar a barra invertida, não vai funcionar.Diferenças para o DOS
O DOS é uma interface bastante simples. No Linux, isso que vemos como interface de modo texto é na realidade um shell. Shell é um interpretador de comandos. Isso significa que ele lê o que você escreveu e interpreta, em vez de logo chamar o comando que você digitou. Parece a mesma coisa? Vou mostrar por que não é. Uma das facilidades mais básicas de um interpretador de comandos é a expansão do comando.Por exemplo: Naquele nosso exemplo anterior, onde tínhamos 7 arquivos num dado diretório, se quiséssemos apagar os arquivos
aaabcd
e mnjkfnjkru.aaaaa
, como faríamos? rm aaabcd
, depois rm mnjkfnjkru.aaaaa
, certo? (espero que você se lembre de usar o rm {aaabcd,mnfkfnjkru.aaaaa}
. Parece inútil? Se quiséssemos apagar então esses 2 arquivos, e mais o mnfkfnjkru.aabb
, poderíamos fazer: rm {aaabcd,mnfkfnjkru.aa*}
. Vou parar por aqui, e deixar você se preocupar com isso mais tarde, quando for do seu interesse.Como buscar ajuda?
A ajuda no Linux costuma se bastante eficiente. O sistema original de ajuda na realidade consiste de um manual para cada comando ou aspecto do sistema. Esses manuais são acessados com o comandoman
. Experimente um man cp
. Ele vai te informar toda a sintaxe do comando cp
, e cada um dos parâmetros possíveis de se usar com este comando. Para saber mais sobre o man
, adivinhe: man man
!Vai fundo, que só se tem a ganhar lendo os manuais.
Sobre comandos e parâmetros
No UNIX costuma ser assim, e no Linux não é diferente. A sintaxe de um comando costuma ser:comando -parâmetros --outrosparâmetros objetoPor exemplo, o comando
Exemplo:
ls -a --recursive /opt
(isso lista o conteúdo do diretório /opt, mostrando também arquivos ocultos (-a), e percorrendo todos os subdiretórios do /opt (--recursive)
cp
pode ser usado para copiar um diretório e todo seu conteúdo para outro local. O parâmetro para isto é --recursive
. O comando fica então:cp --recursive diretório destinoOutro exemplo, o comando
Exemplo:
cp --recursive /home/pablo/trabalho /home/pablo/diversao
(isso copia o diretório /home/pablo/trabalho e todo seu conteúdo para /home/pablo/diversao
tar
. Para extrair um arquivo compactado do tipo .tar.gz
, usa-se o comando tar -zxvf arquivo_compactado
Esse exemplo mostra 2 coisas: você em geral pode (e deve) juntar todos os parâmetros (-zxvf
junta os parâmetros -z
, -x
, -v
e -f
). E o --recursive
do exemplo anterior precisa de 2 traços (--
) porque é uma opção longa, isto é, tem mais de uma letra. Então, o padrão para os comandos em UNIX é este:comando -opções_curtas --opção_longa1 --opção_longa2 objeto_do_comando
Exemplo:
tar -xzvf meuarquivo.tar.gz --preserve
(isso descompacta (-x) o arquivão meuarquivo.tar.gz (-f meuarquivo.tar.gz) gzipado (-z),
mostra na tela todos os arquivos sendo extraídos (-v),
e preserva as permissões dos arquivos (--preserve)).