Novo aqui? Alguns posts que deveria ver:

Temas
Mapa do Blog
Mídias oficiais do Blog

terça-feira, 5 de abril de 2011

Um pouco sobre o terminal do Linux

Este é um tutorial básico sobre o uso do terminal do Linux. Espero que ajude nunca usou, ou quem tenha usado pouco ele.
Tudo vai ser explicado de forma um pouco superficial e talvez teoricamente errada em alguns casos, mas na prática vocês vão perceber a o que as explicações indicam.
Lembre-se, esse é um material introdutório, então depois de pegar as manhas com essa parte básica não deixe de pesuisar coisas novas e também explicações mais a fundo sobre assuntos abordados aqui e que podem não terem ficado claros.

O que é o terminal?

Em síntese, é uma ferramenta bem ampla para conversar com o sistema. Através dele é possível navegar pelas pastas, mover, apagar e nomear arquivos, fazer pesquisas, executar programas e scripts, etc. Tudo isso de uma forma mais prática do que pelo gerenciador de janelas, possibilitando até mesmo executar tarefas mais complexas que exigiriam muito trabalho pela interface gráfica. Mas usar o terminal não é intuitivo como usar a interface gráfica para navegar pelo computador. Essa é uma tarefa que exige conhecimento e, como qualquer outra coisa, TREINO. Então sugiro que vá se despedindo da interface gráfica.

Os terminais

Geralmente, vem mais de um terminal instalado. Alguns mais pesados e com mais funções(ou mais firulas), outros simples e leves. Qual usar vai depender do que você tem disponível e do seu gosto. Exemplos: konsole, xterm, eterm, etc.
O xterm é bem comum e conhecido.

Abrindo o terminal

Você pode procurar por algum terminal dentro no "menu iniciar" ou pode rodar o "Run Program..." através do mesmo menu ou com o atalho ALT+F2, e então digitar o nome do terminal que deseja usar, caso saiba o nome dele. Por exemplo, abra o Run Program... e escreva xterm.
O terminal incia no diretório do usuário, exceto se você abri-lo apartir da interface gráfica em alguma pasta que estiver navegando.

Antes de começar com os "comandos"...

Acredito que todos os terminais tenham em comum os pontos que apresentarei a seguir.
Nem tudo nessa seção é algo exclusivo ao terminal, mas é bom conhecer.

Case Sensitive
Existe diferença entre letras maiúsculas e minúsculas, então escreva o nome dos arquivos e comandos da forma correta, respeitando a caixa.

Histórico de comandos
Conforme você vai executando tarefas pelo terminal, esses comandos escritos vão ficando armazenados na memória para que possa reutiliza-los, o que é comum quando se usar o terminal. Para "navegar" esse histórico, basta usar as setas cima e baixo do teclado.

Tecla TAB
Um recurso muito bom que economiza tempo ao digitar no terminal, e até ajuda a lembrar-se do nome de algum comando ou arquivo. Basicamente, baseado no PATH e no diretório atual, ao apertar a tecla TAB o terminal tenta completar o que está escrevendo, e se houverem muitas possibilidades combinando, se pressionar 2 vezes o TAB, será listado as possibilidades.
Ex: dentro do diretório atual existe os arquivos "recado" e "reprovados", fora outros(nenhum começando com "r"). Se você digitar no terminal "r" e pressionar TAB, será completado com a letra "e", porque é até onde o nome dos dois arquivos é comum, daí ao pressionar duas vezes a tecla TAB esses dois arquivos serão listados na tela. A partir daí, se desejar escrever "recado", por exemplo, basta digitar "c" e apertar TAB novamente, que o restante da palavra será completada.

PATH
Isso não é algo particular do terminal, mas é bom ter o conhecimento. O PATH é uma variável do sistema que guarda os "caminhos" onde o sistema de procurar aplicativos e scripts para executar. Isso significa, por exemplo, que se o endereço da pasta onde existe um programa está no PATH, para executá-lo basta escrever seu nome, caso contrário teria que escrever todo o endereço de onde o programa está, junto ao nome dele para poder executá-lo. Resumindo, o PATH é uma coleção de endereços(em ordem) onde o programa/script será procurado para poder ser executado. O endereço da pasta atual é o último a ser avaliado.
*A variável PATH pode ser editada.

O "."
A "." indica o diretório atual. Então, por exemplo, quando queremos executar um programa/script que está no diretório atual e não queremos que seja procurado no PATH(até porque pode existir algum aplicativo com o mesmo nome no PATH), usamos junto(antes) do nome da aplicação o "."(não esquecendo da barra para indicar diretório, então "./")
Ex: ./cp

O ".."
Esse, ao contrário do anterior, indica o diretório "acima", ou seja, um antes do atual na hierarquia.
Ex: Suponha que você está em um diretório chamado /home/eu/musicas/, e quer executar um programa chamado "nada" localizado no diretório anterior, ou seja, /home/eu/
Então: ../nada

A "/"
Quando usamos a barra sozinha ou no começo(extremo esquerdo) de um endereço do computador, estamos nos referênciando à pasta raiz do sistema. Amesma que você acessa quando abbre pela interface gráfica o "File System".
Exemplos:
entrar no diretório raiz
cd /
entrar no diretório usr/bin que está localizado na raiz.
cd /usr/bin/

"~"
Esse símbolo indica o diretório home do usuário. Se estiver logado como super usuário(root), por exemplo, ~ será igual a /root. Já se estiver logado como um usuário comum chamado "eu", por exemplo, o ~ valerá /home/eu/.

Alguns comandos básicos e de uso frequente

*Não deixe de testar os comandos para visualizar seus efeitos. Afinal é só escrever o comando, e as opções e parametros caso necessário, e apertar enter. Então não seja preguiçoso.

pwd
print working directory escreve na tela do terminal o endereço do diretório atual. Alguns terminais deixam essa informação à vista.

ls
list mostra os arquivos e pastas existentes no diretório atual. É possível utiliza-lo de várias formas para obter diferentes resultados na listagem. Por exemplo, usando a opção -l, que listará os arquivos junto com algumas informações sobre cada um. Outro exemplo é a opção é a -a, que fará que diretório escondidos sejam listados(para criar um diretório escondido no linux, basta coloca um "." no começo do nome. EX: ".imagens").
Exemplos:







mkdir
make directory cria um novo diretório. É preciso definir um nome para ele com ou sem o caminho completo, caso não coloque o caminho o diretório será criado na pasta atual, mas independente da pasta em que estiver você pode definir o caminho para criar o diretório em qualquer lugar(desde que seu usuário tenha permissão).
Exemplos:



rmdir
remove directory remove um diretório. Funciona de forma análoga ao comando anterior. Uma observação imporante a ser feita é que o diretório a ser removido deve estar vazio, caso contrário não será removido.
Exemplos:



cd
change directory muda o diretório de atual. Funciona de forma análoga ao comando anterior.
Exemplos:



*Experimente usar o pwd para verificar o diretório atual quando mudar de diretório, para confirmar se está onde queria.

pushd e popd
Assim comoco cd, essa dupla de comando servem para mudar de diretório, mas com algumas diferenças.
Usa-se o pushd(push directory) extamente da mesma forma que o cd, porém ele grava ele guarda o endereço da pasta atual numa memória em formato de "pilha", para poder voltar para o diretório depois. A cada diretório trocado usando o pushd vai para essa pilha.
Para voltar para esse diretório guardados, usa-se o popd(pop directory). Basta escrever popd para acessar o diretório trocado mais recente. Então, depois de usar o popd para voltar ao diretório, esse endereço é retirado da pilha.
Exemplos:



Porque push e pop?
Geralmente em programação, funções/métodos/comandos/whatever que foram nomeados assim, costumam ter a característica para trabalhar com pilha, ou seja, a última informação adicionada será a primeira a ser recuperada.

cp
copy copia um arquivo/diretório especificado na fonte para o destino especificado. a sintaxe básica é a seguinte:

cp fonte destino

onde fonte é o nome do arquivo(com o caminho completo se necessário) a ser copiado e destino é o local onde a cópia será gerada.
Uma opção interessante dele é -r, que faz trabalhar de forma recursiva. Isso significa que ao mandar copiar um diretório, caso existam outros diretórios dentro deste, eles também seram copiados e assim sucessivamente. Normalmente isso não ocorreria.
cp -r fonte destino

Exemplos:



*Existem mais opções para esse comando, mas não serão abordadas.

mv
move funciona da mesma forma que o cp, mas ao invés de copiar ele move arquivos/pastas
Outra ponto interessante é que usamos esse comando para renomear arquivos também. Isso porque quando definimos o destino podemos mudar o nome do arquivo/pasta, então podemos simplesmente mover o arquivo para o mesmo diretório que ele está, porém mudando o nome.

Exemplos:



*O mv não precisa(e não tem) da opção de recursividade para funcionar de tal forma.
*Existem mais opções para esse comando, mas não serão abordadas.

rm
remove funciona da mesma forma que o cp, mas ao invés de copiar ele apaga arquivos/pastas
Claro que ele não precisa de uma fonte e um destino, pasta espeficar o arquivo/pasta com ou sem o caminho completo.
Assim como o cp, para afetar subdiretórios, é necessário usar a opção -r, que indica comportamento recursivo.

Exemplos:



*Perceba que ao contrário do rmdir, o rm não precisa que o diretório esteja vazio para removê-lo, mas é preciso usá-lo com recursividade para isso.
*Existem mais opções para esse comando, mas não serão abordadas.

Executando aplicativos e scripts

Os comandos que vimos, são aplicativos ou scripts, então você pode executar qualquer programa pelo terminal. Por exemplo, se você estiver com o firefox instalado, basta escrever o firefox no terminal para abrir o navegador.
Uma observação importante a fazer é que ao executar uma tarefa no terminal, ele fica "ocupado" até que ela seja finalizada. Seguindo esse raciocínio, seria necessário abrir vários terminais para poder ir executando várias tarefas que demandam tempo ou que precisam ficar em segundo plano, como editores de texto, navegadores, etc. Mas existe uma forma de executar o aplicativo sem congestionar seu terminal. Basta inserir o símbolo & no final do comando. Quando digo final é final mesmo, depois do comando, opções, parametros e tudo que tiver direito, ou seja, no extremo direito da linha.

help, man e info

O help é uma opção que a maioria dos aplicativos/comandos/whatever têm, e serve para explicar sobre ele. Lá geralmente tem a sintaxe, opções, etc.
Geralmente para acessar essa ajuda, faz-se:
comando --help
ou as vezes ainda é possível acessar dessa forma:
comando -h

Só que fica difícil visualizar esse help sem utilizar algum aplicativo para ajudar. Então podemos jogar a saída do help(o texto que será exibido) dentro de um programa que permita usar esse recurso de ler um texto como entrada, como por exemplo o "more" e o "less". Para jogar essa saída para um desses aplicativos usamos o "|" (lê-se pipe). Então ficaria, por exemplo:

rm --help | more
ou se preferir o less
rm --help | less

O more e o less permitem visualizar texto dentro do próprio terminal, e o usuário tem controle sobre o texto inteiro, para poder navegar por ele. Mas eles são diferentes.
O more é mais simples. É exibido o início do texto e basta ir pressionando enter para ler "mais"(por isso more). Esse recurso está disponível no windows também.
Já o less permite fazer mais coisas. É possível navegar pelo documentos, subindo e descendo a página e, se não me engano, é possível até fazer pesquisa de palavra no texto. Perceba que "less" é o antônimo de "more". É uma brincadeira que o criador fez com o nome do programa, talvez para dizer que é do contra XD.

O man e o info têm o mesmo objetivo do help, porém eles são aplicativos para a leitura dos textos de ajuda de aplicações, e não opções de um aplicativo como no caso do help. Para usar basta seguir o modelo:
man aplicativo
ou
info aplicativo

A diferença entre o man e o info é que o man te traz mais informações e mais detalhadas do que o info. Outro ponto importante é que quando desenvolvem aplicativos é mais frequente desenvolverem o conteúdo para o man do que para o info junto com o pacote, então aplicativos que retornaram alguma informação ao usar o info não são tantos quanto os que usam o man.

*Lembrando que nem todo aplicativo terá esses recursos de ajuda, mas a maioria têm.

Dicas

-Ao nomear arquivos e pastas tente não usar espaços dentro do nome, não usar letras maiúsculas, não usar acentos e cedilha.
-Use e abuse dos recursos de ajuda que citei.
-Não use o perfil de root a menos que realmente seja necessário.
-Mesmo que pareça ser difícil, tente fazer a maioria das coisas pelo terminal, para acostumar.
-Mais para frente, experimente aumentar a frequencia com que instala pacotes no seu computador, pricipalmente drivers, e tente não usar gerenciadores de pacote para isso. Assim você vai sentir realmente na prática como resolver os problemas com compilação de pacotes para instalar nos eu PC. É muito comum surgirem problemas para você resolver nessas situações.
*mesmo que desinstale os pacotes depois. É só para treino mesmo.

Veja também

Algumas coisas interessantes para aprender:

cat
head
tail
find
dmesg
mount
umount
vi
vim
chmod
Variáveis de ambiente no linux

2 comentários:

Marcel disse...

Valeu Gente, vou usar na aula de hoje!

Sidnei disse...

Que bom que tenha gostado.

Postar um comentário